whatsapp_sdk 0.13.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.cursorrules +53 -0
  3. data/CHANGELOG.md +10 -0
  4. data/Gemfile +1 -0
  5. data/Gemfile.lock +9 -4
  6. data/README.md +115 -170
  7. data/example.rb +197 -113
  8. data/lib/whatsapp_sdk/api/business_profile.rb +12 -14
  9. data/lib/whatsapp_sdk/api/client.rb +26 -2
  10. data/lib/whatsapp_sdk/api/medias.rb +23 -31
  11. data/lib/whatsapp_sdk/api/messages.rb +24 -61
  12. data/lib/whatsapp_sdk/api/phone_numbers.rb +32 -22
  13. data/lib/whatsapp_sdk/api/request.rb +2 -0
  14. data/lib/whatsapp_sdk/api/responses/generic_error_response.rb +4 -4
  15. data/lib/whatsapp_sdk/api/responses/http_response_error.rb +18 -0
  16. data/lib/whatsapp_sdk/api/responses/{message_error_response.rb → id_response.rb} +6 -3
  17. data/lib/whatsapp_sdk/api/responses/message_data_response.rb +17 -20
  18. data/lib/whatsapp_sdk/api/responses/pagination_records.rb +17 -0
  19. data/lib/whatsapp_sdk/api/responses/success_response.rb +3 -16
  20. data/lib/whatsapp_sdk/api/templates.rb +27 -36
  21. data/lib/whatsapp_sdk/resource/business_profile.rb +28 -0
  22. data/lib/whatsapp_sdk/resource/errors.rb +2 -0
  23. data/lib/whatsapp_sdk/resource/media.rb +18 -68
  24. data/lib/whatsapp_sdk/resource/media_component.rb +89 -0
  25. data/lib/whatsapp_sdk/resource/message_template_namespace.rb +17 -0
  26. data/lib/whatsapp_sdk/resource/phone_number.rb +41 -11
  27. data/lib/whatsapp_sdk/resource/phone_number_component.rb +25 -0
  28. data/lib/whatsapp_sdk/resource/template.rb +20 -0
  29. data/lib/whatsapp_sdk/version.rb +1 -1
  30. data/whatsapp_sdk.gemspec +1 -1
  31. metadata +10 -15
  32. data/lib/whatsapp_sdk/api/response.rb +0 -32
  33. data/lib/whatsapp_sdk/api/responses/business_profile_data_response.rb +0 -33
  34. data/lib/whatsapp_sdk/api/responses/data_response.rb +0 -17
  35. data/lib/whatsapp_sdk/api/responses/error_response.rb +0 -25
  36. data/lib/whatsapp_sdk/api/responses/media_data_response.rb +0 -30
  37. data/lib/whatsapp_sdk/api/responses/message_template_namespace_data_response.rb +0 -27
  38. data/lib/whatsapp_sdk/api/responses/phone_number_data_response.rb +0 -42
  39. data/lib/whatsapp_sdk/api/responses/phone_numbers_data_response.rb +0 -32
  40. data/lib/whatsapp_sdk/api/responses/read_message_data_response.rb +0 -29
  41. data/lib/whatsapp_sdk/api/responses/template_data_response.rb +0 -46
  42. data/lib/whatsapp_sdk/api/responses/templates_data_response.rb +0 -32
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module WhatsappSdk
4
- module Api
5
- module Responses
6
- class DataResponse
7
- attr_reader :raw_data_response
8
-
9
- def initialize(response)
10
- @raw_data_response = response
11
- end
12
-
13
- def self.build_from_response(response:); end
14
- end
15
- end
16
- end
17
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "data_response"
4
-
5
- module WhatsappSdk
6
- module Api
7
- module Responses
8
- class ErrorResponse < DataResponse
9
- attr_accessor :error, :status
10
-
11
- def initialize(response:)
12
- @error = response["error"]
13
- @status = response["status"]
14
- super(response)
15
- end
16
-
17
- def self.build_from_response(response:)
18
- return unless response["error"]
19
-
20
- new(response: response)
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "data_response"
4
-
5
- module WhatsappSdk
6
- module Api
7
- module Responses
8
- class MediaDataResponse < DataResponse
9
- attr_accessor :id, :url, :mime_type, :sha256, :file_size, :messaging_product
10
-
11
- def initialize(response)
12
- @id = response["id"]
13
- @messaging_product = response["messaging_product"]
14
- @url = response["url"]
15
- @mime_type = response["mime_type"]
16
- @sha256 = response["sha256"]
17
- @file_size = response["file_size"]
18
-
19
- super(response)
20
- end
21
-
22
- def self.build_from_response(response:)
23
- return unless response["id"]
24
-
25
- new(response)
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "data_response"
4
- require_relative "../../resource/template"
5
-
6
- module WhatsappSdk
7
- module Api
8
- module Responses
9
- class MessageTemplateNamespaceDataResponse < DataResponse
10
- attr_accessor :message_template_namespace, :id
11
-
12
- def initialize(response)
13
- @id = response["id"]
14
- @message_template_namespace = response["message_template_namespace"]
15
-
16
- super(response)
17
- end
18
-
19
- def self.build_from_response(response:)
20
- return unless response["id"]
21
-
22
- new(response)
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "data_response"
4
-
5
- module WhatsappSdk
6
- module Api
7
- module Responses
8
- class PhoneNumberDataResponse < DataResponse
9
- attr_accessor :id, :verified_name, :display_phone_number, :quality_rating, :is_pin_enabled,
10
- :is_official_business_account, :account_mode, :certificate, :code_verification_status,
11
- :eligibility_for_api_business_global_search, :name_status, :new_name_status, :status,
12
- :search_visibility, :messaging_limit_tier
13
-
14
- def initialize(response)
15
- @id = response["id"]
16
- @verified_name = response["verified_name"]
17
- @display_phone_number = response["display_phone_number"]
18
- @quality_rating = response["quality_rating"]
19
- @is_pin_enabled = response["is_pin_enabled"]
20
- @is_official_business_account = response["is_official_business_account"]
21
- @account_mode = response["account_mode"]
22
- @certificate = response["certificate"]
23
- @code_verification_status = response["code_verification_status"]
24
- @eligibility_for_api_business_global_search = response["eligibility_for_api_business_global_search"]
25
- @name_status = response["name_status"]
26
- @new_name_status = response["new_name_status"]
27
- @status = response["status"]
28
- @search_visibility = response["search_visibility"]
29
- @messaging_limit_tier = response["messaging_limit_tier"]
30
-
31
- super(response)
32
- end
33
-
34
- def self.build_from_response(response:)
35
- return unless response["id"]
36
-
37
- new(response)
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "data_response"
4
- require_relative "phone_number_data_response"
5
-
6
- module WhatsappSdk
7
- module Api
8
- module Responses
9
- class PhoneNumbersDataResponse < DataResponse
10
- attr_reader :phone_numbers
11
-
12
- def initialize(response)
13
- @phone_numbers = response['data']&.map { |phone_number| parse_phone_number(phone_number) }
14
-
15
- super(response)
16
- end
17
-
18
- def self.build_from_response(response:)
19
- return unless response["data"]
20
-
21
- new(response)
22
- end
23
-
24
- private
25
-
26
- def parse_phone_number(phone_number)
27
- PhoneNumberDataResponse.new(phone_number)
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../request"
4
- require_relative "data_response"
5
- require_relative "../../resource/message"
6
- require_relative "../../resource/contact_response"
7
-
8
- module WhatsappSdk
9
- module Api
10
- module Responses
11
- class ReadMessageDataResponse < DataResponse
12
- def initialize(response:)
13
- @success = response["success"]
14
- super(response)
15
- end
16
-
17
- def self.build_from_response(response:)
18
- return if response["error"]
19
-
20
- new(response: response)
21
- end
22
-
23
- def success?
24
- @success
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,46 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "data_response"
4
- require_relative "../../resource/template"
5
-
6
- module WhatsappSdk
7
- module Api
8
- module Responses
9
- class TemplateDataResponse < DataResponse
10
- attr_reader :template
11
-
12
- def initialize(response:)
13
- @template = parse_template(response)
14
-
15
- super(response)
16
- end
17
-
18
- def self.build_from_response(response:)
19
- return unless response["id"]
20
-
21
- new(response: response)
22
- end
23
-
24
- private
25
-
26
- def parse_template(template_json)
27
- status = template_json["status"]
28
- category = template_json["category"]
29
- id = template_json["id"]
30
- language = template_json["language"]
31
- name = template_json["name"]
32
- components_json = template_json["components"]
33
-
34
- ::WhatsappSdk::Resource::Template.new(
35
- id: id,
36
- status: status,
37
- category: category,
38
- language: language,
39
- name: name,
40
- components_json: components_json
41
- )
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "data_response"
4
- require_relative "template_data_response"
5
-
6
- module WhatsappSdk
7
- module Api
8
- module Responses
9
- class TemplatesDataResponse < DataResponse
10
- attr_reader :templates
11
-
12
- def initialize(response)
13
- @templates = response['data']&.map { |template| parse_templates(template) }
14
-
15
- super(response)
16
- end
17
-
18
- def self.build_from_response(response:)
19
- return unless response["data"]
20
-
21
- new(response)
22
- end
23
-
24
- private
25
-
26
- def parse_templates(template)
27
- TemplateDataResponse.new(response: template)
28
- end
29
- end
30
- end
31
- end
32
- end