whatsapp_sdk 0.7.0 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/CHANGELOG.md +9 -1
  4. data/Gemfile +2 -1
  5. data/Gemfile.lock +9 -7
  6. data/README.md +15 -2
  7. data/Rakefile +1 -1
  8. data/bin/tapioca +1 -1
  9. data/lib/whatsapp_sdk/api/api_configuration.rb +13 -0
  10. data/lib/whatsapp_sdk/api/business_profile.rb +1 -1
  11. data/lib/whatsapp_sdk/api/client.rb +2 -5
  12. data/lib/whatsapp_sdk/api/medias.rb +1 -1
  13. data/lib/whatsapp_sdk/api/messages.rb +2 -2
  14. data/lib/whatsapp_sdk/api/phone_numbers.rb +55 -3
  15. data/lib/whatsapp_sdk/api/request.rb +1 -1
  16. data/lib/whatsapp_sdk/api/response.rb +1 -1
  17. data/lib/whatsapp_sdk/api/responses/business_profile_data_response.rb +1 -1
  18. data/lib/whatsapp_sdk/api/responses/data_response.rb +1 -1
  19. data/lib/whatsapp_sdk/api/responses/error_response.rb +1 -1
  20. data/lib/whatsapp_sdk/api/responses/media_data_response.rb +1 -1
  21. data/lib/whatsapp_sdk/api/responses/message_data_response.rb +1 -1
  22. data/lib/whatsapp_sdk/api/responses/message_error_response.rb +1 -1
  23. data/lib/whatsapp_sdk/api/responses/phone_number_data_response.rb +21 -1
  24. data/lib/whatsapp_sdk/api/responses/phone_numbers_data_response.rb +1 -1
  25. data/lib/whatsapp_sdk/api/responses/read_message_data_response.rb +1 -1
  26. data/lib/whatsapp_sdk/api/responses/success_response.rb +1 -1
  27. data/lib/whatsapp_sdk/configuration.rb +1 -1
  28. data/lib/whatsapp_sdk/error.rb +1 -1
  29. data/lib/whatsapp_sdk/resource/address.rb +1 -1
  30. data/lib/whatsapp_sdk/resource/address_type.rb +1 -1
  31. data/lib/whatsapp_sdk/resource/button_parameter.rb +1 -1
  32. data/lib/whatsapp_sdk/resource/component.rb +1 -1
  33. data/lib/whatsapp_sdk/resource/contact.rb +1 -1
  34. data/lib/whatsapp_sdk/resource/contact_response.rb +1 -1
  35. data/lib/whatsapp_sdk/resource/currency.rb +1 -1
  36. data/lib/whatsapp_sdk/resource/date_time.rb +1 -1
  37. data/lib/whatsapp_sdk/resource/email.rb +1 -1
  38. data/lib/whatsapp_sdk/resource/media.rb +13 -5
  39. data/lib/whatsapp_sdk/resource/message.rb +1 -1
  40. data/lib/whatsapp_sdk/resource/name.rb +1 -1
  41. data/lib/whatsapp_sdk/resource/org.rb +1 -1
  42. data/lib/whatsapp_sdk/resource/parameter_object.rb +1 -1
  43. data/lib/whatsapp_sdk/resource/phone_number.rb +1 -1
  44. data/lib/whatsapp_sdk/resource/url.rb +1 -1
  45. data/lib/whatsapp_sdk/version.rb +2 -2
  46. data/lib/whatsapp_sdk.rb +1 -1
  47. data/sorbet/tapioca/require.rb +0 -1
  48. data/whatsapp_sdk.gemspec +5 -4
  49. metadata +14 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7cfa077303348e47c90cfcbda06cd977a1ccbd60680cc3dcbdfe609109b4570
4
- data.tar.gz: 9a9d46ee397b70538e41f6489f5b0a72fc44054e154164d3fa383cccba5acdfa
3
+ metadata.gz: 78aea6934c0189c059dbce4818236b2299319a19b41e8c5ca7d0eca21e8facd3
4
+ data.tar.gz: 1afd90036deb2f2f2010e2925c09f440215f5bad874d1b0038f4f65f110e1002
5
5
  SHA512:
6
- metadata.gz: b08d94c4c773906cac506abb473f46281bfa233a9d56b5d6eaf294dfd53afca2c0cf4f70fb7f4019f6d1581697c43b54ff6556c1c50bfd95854cda54cf682952
7
- data.tar.gz: 19ab26c648687e6ef2f7872ce0fa85b259b0fe2a91d6a41e2686d0b6cfe6bd6bf2e1727dd3daa84abd36de8b1d6dc19d1abaaaab7b5046f7af6ad06c80357f85
6
+ metadata.gz: fcf1df484e0246c5d78110089208391bda6ffcaca8914b518d7b95f38b0f7ea5fb8be9c251b0cf24cb7276122b1c8ead1031b612c351697bb0cf22e0996f1c97
7
+ data.tar.gz: b39fb20cc9af081b217e4478432190a3941e2d87f6abe85e69626e6891293d6065b180075160e6cf8c84a1a61442cb585a186740a984bfcefd5d650fce903627
data/.rubocop.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  require:
2
2
  - rubocop-minitest
3
3
  - rubocop-performance
4
+ - rubocop-sorbet
4
5
 
5
6
  AllCops:
6
7
  NewCops: enable
data/CHANGELOG.md CHANGED
@@ -1,4 +1,12 @@
1
- # unreleased
1
+ # Unreleased
2
+
3
+ # v 0.7.2
4
+ - Added new fields to phone numbers API. @ignacio-chiazzo [#73](https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk/pull/73)
5
+ - Upgraded API version to v16. @ignacio-chiazzo [#73](https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk/pull/73)
6
+ - Make sorbet-runtime a runtime dependency. @ignacio-chiazzo [#70](https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk/pull/70)
7
+
8
+ # v 0.7.1
9
+ Add Register API @andresyebra [#65](https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk/pull/65)
2
10
 
3
11
  # v 0.7.0
4
12
  Add message reaction @sanchezpaco [#58](https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk/pull/58)
data/Gemfile CHANGED
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: true
2
+ # frozen_string_literal: true
3
3
 
4
4
  source "https://rubygems.org"
5
5
 
@@ -17,6 +17,7 @@ group(:test) do
17
17
  gem('rubocop', require: false)
18
18
  gem('rubocop-minitest', require: false)
19
19
  gem('rubocop-performance', require: false)
20
+ gem('rubocop-sorbet', require: false)
20
21
  gem('webmock')
21
22
  end
22
23
 
data/Gemfile.lock CHANGED
@@ -1,12 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- whatsapp_sdk (0.7.0)
5
- faraday (>= 2.3.0)
4
+ whatsapp_sdk (0.7.2)
5
+ faraday (~> 2.3.0)
6
6
  faraday-multipart (~> 1.0.4)
7
7
  oj (~> 3.13.13)
8
- sorbet
9
- sorbet-runtime
8
+ sorbet-runtime (~> 0.5.1)
10
9
  zeitwerk (~> 2.6.0)
11
10
 
12
11
  GEM
@@ -19,12 +18,12 @@ GEM
19
18
  crack (0.4.5)
20
19
  rexml
21
20
  diff-lcs (1.5.0)
22
- faraday (2.5.2)
23
- faraday-net_http (>= 2.0, < 3.1)
21
+ faraday (2.3.0)
22
+ faraday-net_http (~> 2.0)
24
23
  ruby2_keywords (>= 0.0.4)
25
24
  faraday-multipart (1.0.4)
26
25
  multipart-post (~> 2)
27
- faraday-net_http (3.0.0)
26
+ faraday-net_http (2.1.0)
28
27
  hashdiff (1.0.1)
29
28
  method_source (1.0.0)
30
29
  minitest (5.16.1)
@@ -66,6 +65,8 @@ GEM
66
65
  rubocop-performance (1.14.2)
67
66
  rubocop (>= 1.7.0, < 2.0)
68
67
  rubocop-ast (>= 0.4.0)
68
+ rubocop-sorbet (0.7.0)
69
+ rubocop (>= 0.90.0)
69
70
  ruby-progressbar (1.11.0)
70
71
  ruby2_keywords (0.0.5)
71
72
  sorbet (0.5.10346)
@@ -125,6 +126,7 @@ DEPENDENCIES
125
126
  rubocop
126
127
  rubocop-minitest
127
128
  rubocop-performance
129
+ rubocop-sorbet
128
130
  sorbet
129
131
  sorbet-runtime
130
132
  spoom
data/README.md CHANGED
@@ -96,9 +96,9 @@ WhatsappSdk.configure do |config|
96
96
  end
97
97
  ```
98
98
 
99
- 6) Try the Medias or Messages API
99
+ 6) Try the Phone Numbers API or Messages API
100
100
 
101
- Medias API
101
+ Phone Numbers API
102
102
  ```ruby
103
103
  phone_numbers_api = WhatsappSdk::Api::PhoneNumbers.new
104
104
  registered_number = phone_numbers_api.registered_number(SENDER_ID)
@@ -156,6 +156,16 @@ Get the a phone number by id
156
156
  ```ruby
157
157
  phone_numbers_api.registered_numbers(123456) # accepts a phone_number_id
158
158
  ```
159
+
160
+ Register a phone number
161
+ ```ruby
162
+ phone_numbers_api.register_number(phone_number_id, pin)
163
+ ```
164
+
165
+ Deregister a phone number
166
+ ```ruby
167
+ phone_numbers_api.deregister_number(phone_number_id)
168
+ ```
159
169
  </details>
160
170
 
161
171
  ### Media API
@@ -363,6 +373,9 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
363
373
  - **Sorbet Typecheck:** run `srb tc`
364
374
  - **Linters:** `bundle exec rubocop`
365
375
 
376
+
377
+ To update the Cloud API version update the version in `lib/whatsapp_sdk/api/api_configuration.rb`. Check the [Cloud API changelog for API udpates](https://developers.facebook.com/docs/whatsapp/business-platform/changelog#api-error-response-behavior).
378
+
366
379
  ## Contributing
367
380
 
368
381
  Bug reports and pull requests are welcome on GitHub at [https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk](https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk) This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: true
2
+ # frozen_string_literal: true
3
3
 
4
4
  require "bundler/gem_tasks"
5
5
  require "rake/testtask"
data/bin/tapioca CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
2
  # typed: true
3
+ # frozen_string_literal: true
4
4
 
5
5
  #
6
6
  # This file was generated by Bundler.
@@ -0,0 +1,13 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module WhatsappSdk
5
+ module Api
6
+ module ApiConfiguration
7
+ extend T::Sig
8
+
9
+ API_VERSION = T.let("v16.0", String)
10
+ API_URL = T.let("https://graph.facebook.com/#{API_VERSION}/", String)
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "request"
5
5
  require_relative "response"
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require "faraday"
5
5
  require "faraday/multipart"
@@ -10,9 +10,6 @@ module WhatsappSdk
10
10
  class Client
11
11
  extend T::Sig
12
12
 
13
- API_VERSION = T.let("v14.0", String)
14
- API_CLIENT = T.let("https://graph.facebook.com/#{API_VERSION}/", String)
15
-
16
13
  sig { params(access_token: String).void }
17
14
  def initialize(access_token)
18
15
  @access_token = access_token
@@ -28,7 +25,7 @@ module WhatsappSdk
28
25
  ).returns(T.nilable(T::Hash[T.untyped, T.untyped]))
29
26
  end
30
27
  def send_request(endpoint: "", full_url: nil, http_method: "post", params: {}, headers: {})
31
- url = full_url || API_CLIENT
28
+ url = full_url || ApiConfiguration::API_URL
32
29
 
33
30
  faraday_request = T.unsafe(faraday(url))
34
31
 
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require "faraday"
5
5
  require "faraday/multipart"
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "request"
5
5
  require_relative "response"
@@ -9,7 +9,7 @@ module WhatsappSdk
9
9
  class Messages < Request
10
10
  extend T::Sig
11
11
 
12
- DEFAULT_HEADERS = T.let({ 'Content-Type' => 'application/json' }, Hash)
12
+ DEFAULT_HEADERS = T.let({ 'Content-Type' => 'application/json' }.freeze, Hash)
13
13
 
14
14
  class MissingArgumentError < StandardError
15
15
  extend T::Sig
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "request"
5
5
  require_relative "response"
@@ -7,6 +7,12 @@ require_relative "response"
7
7
  module WhatsappSdk
8
8
  module Api
9
9
  class PhoneNumbers < Request
10
+ DEFAULT_FIELDS = %i[
11
+ id is_official_business_account display_phone_number verified_name account_mode quality_rating
12
+ certificate code_verification_status eligibility_for_api_business_global_search is_pin_enabled
13
+ name_status new_name_status status search_visibility messaging_limit_tier
14
+ ].join(",").freeze
15
+
10
16
  # Get list of registered numbers.
11
17
  #
12
18
  # @param business_id [Integer] Business Id.
@@ -15,7 +21,7 @@ module WhatsappSdk
15
21
  def registered_numbers(business_id)
16
22
  response = send_request(
17
23
  http_method: "get",
18
- endpoint: "#{business_id}/phone_numbers"
24
+ endpoint: "#{business_id}/phone_numbers?fields=#{DEFAULT_FIELDS}"
19
25
  )
20
26
 
21
27
  WhatsappSdk::Api::Response.new(
@@ -32,7 +38,53 @@ module WhatsappSdk
32
38
  def registered_number(phone_number_id)
33
39
  response = send_request(
34
40
  http_method: "get",
35
- endpoint: phone_number_id.to_s
41
+ endpoint: "#{phone_number_id}?fields=#{DEFAULT_FIELDS}"
42
+ )
43
+
44
+ WhatsappSdk::Api::Response.new(
45
+ response: response,
46
+ data_class_type: WhatsappSdk::Api::Responses::PhoneNumberDataResponse
47
+ )
48
+ end
49
+
50
+ # Register a phone number.
51
+ #
52
+ # @param phone_number_id [Integer] The registered number we want to retrieve.
53
+ # @param pin [Integer] Pin of 6 digits.
54
+ # @return [WhatsappSdk::Api::Response] Response object.
55
+ sig do
56
+ params(
57
+ phone_number_id: Integer,
58
+ pin: Integer
59
+ ).returns(WhatsappSdk::Api::Response)
60
+ end
61
+ def register_number(phone_number_id, pin)
62
+ response = send_request(
63
+ http_method: "post",
64
+ endpoint: "#{phone_number_id}/register",
65
+ params: { messaging_product: 'whatsapp', pin: pin }
66
+ )
67
+
68
+ WhatsappSdk::Api::Response.new(
69
+ response: response,
70
+ data_class_type: WhatsappSdk::Api::Responses::PhoneNumberDataResponse
71
+ )
72
+ end
73
+
74
+ # Deregister a phone number.
75
+ #
76
+ # @param phone_number_id [Integer] The registered number we want to retrieve.
77
+ # @return [WhatsappSdk::Api::Response] Response object.
78
+ sig do
79
+ params(
80
+ phone_number_id: Integer
81
+ ).returns(WhatsappSdk::Api::Response)
82
+ end
83
+ def deregister_number(phone_number_id)
84
+ response = send_request(
85
+ http_method: "post",
86
+ endpoint: "#{phone_number_id}/deregister",
87
+ params: {}
36
88
  )
37
89
 
38
90
  WhatsappSdk::Api::Response.new(
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: true
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Api
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "responses/message_data_response"
5
5
  require_relative "responses/phone_number_data_response"
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "data_response"
5
5
 
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Api
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "data_response"
5
5
 
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "data_response"
5
5
 
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "../request"
5
5
  require_relative "data_response"
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "error_response"
5
5
 
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "data_response"
5
5
 
@@ -19,12 +19,32 @@ module WhatsappSdk
19
19
  sig { returns(String) }
20
20
  attr_accessor :quality_rating
21
21
 
22
+ sig { returns(T::Boolean) }
23
+ attr_accessor :is_pin_enabled, :is_official_business_account
24
+
25
+ sig { returns(T.nilable(String)) }
26
+ attr_accessor :account_mode, :code_verification_status, :eligibility_for_api_business_global_search,
27
+ :certificate, :name_status, :new_name_status, :status, :search_visibility
28
+
22
29
  sig { params(response: T::Hash[T.untyped, T.untyped]).void }
23
30
  def initialize(response)
24
31
  @id = T.let(response["id"], String)
25
32
  @verified_name = T.let(response["verified_name"], String)
26
33
  @display_phone_number = T.let(response["display_phone_number"], String)
27
34
  @quality_rating = T.let(response["quality_rating"], String)
35
+ @is_pin_enabled = T.let(response["is_pin_enabled"], T::Boolean)
36
+ @is_official_business_account = T.let(response["is_official_business_account"], T.nilable(T::Boolean))
37
+ @account_mode = T.let(response["account_mode"], T.nilable(String))
38
+ @certificate = T.let(response["certificate"], T.nilable(String))
39
+ @code_verification_status = T.let(response["code_verification_status"], T.nilable(String))
40
+ @eligibility_for_api_business_global_search = T.let(response["eligibility_for_api_business_global_search"],
41
+ T.nilable(String))
42
+ @name_status = T.let(response["name_status"], T.nilable(String))
43
+ @new_name_status = T.let(response["new_name_status"], T.nilable(String))
44
+ @status = T.let(response["status"], T.nilable(String))
45
+ @search_visibility = T.let(response["search_visibility"], T.nilable(String))
46
+ @messaging_limit_tier = T.let(response["messaging_limit_tier"], T.nilable(String))
47
+
28
48
  super(response)
29
49
  end
30
50
 
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "data_response"
5
5
  require_relative "phone_number_data_response"
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "../request"
5
5
  require_relative "data_response"
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative "data_response"
5
5
 
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  # This module allows client instantiating the client as a singleton like the following example:
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  class Error < StandardError; end
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -100,16 +100,24 @@ module WhatsappSdk
100
100
 
101
101
  sig { returns(T::Boolean) }
102
102
  def validate_media
103
- if filename && (type != Type::Document)
104
- raise InvalidMedia.new(:filename, "filename can only be used with document")
105
- end
103
+ raise InvalidMedia.new(:filename, "filename can only be used with document") if filename && !supports_filename?
106
104
 
107
- if caption && !(type == Type::Document || type == Type::Image)
105
+ if caption && !supports_caption?
108
106
  raise InvalidMedia.new(:caption, "caption can only be used with document or image")
109
107
  end
110
108
 
111
109
  true
112
110
  end
111
+
112
+ sig { returns(T::Boolean) }
113
+ def supports_filename?
114
+ type == Type::Document
115
+ end
116
+
117
+ sig { returns(T::Boolean) }
118
+ def supports_caption?
119
+ type == Type::Document || type == Type::Image
120
+ end
113
121
  end
114
122
  end
115
123
  end
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
5
  module Resource
@@ -1,6 +1,6 @@
1
- # frozen_string_literal: true
2
1
  # typed: strict
2
+ # frozen_string_literal: true
3
3
 
4
4
  module WhatsappSdk
5
- VERSION = "0.7.0"
5
+ VERSION = "0.7.2"
6
6
  end
data/lib/whatsapp_sdk.rb CHANGED
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: true
2
+ # frozen_string_literal: true
3
3
 
4
4
  require "zeitwerk"
5
5
  require "faraday"
@@ -1,5 +1,4 @@
1
1
  # typed: true
2
2
  # frozen_string_literal: true
3
- # typed: true
4
3
 
5
4
  # Add your extra requires here (`bin/tapioca require` can be used to boostrap this list)
data/whatsapp_sdk.gemspec CHANGED
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
1
  # typed: true
2
+ # frozen_string_literal: true
3
3
 
4
4
  require_relative 'lib/whatsapp_sdk/version'
5
5
 
@@ -43,10 +43,11 @@ Gem::Specification.new do |spec|
43
43
  spec.add_development_dependency "bundler", "~> 2.3"
44
44
  spec.add_development_dependency "minitest", "~> 5.0"
45
45
  spec.add_development_dependency "rake", "~> 12.3.3"
46
- spec.add_dependency('sorbet')
47
- spec.add_dependency('sorbet-runtime')
46
+ spec.add_development_dependency('sorbet', "~>0.5.1")
47
+
48
+ spec.add_runtime_dependency('sorbet-runtime', "~>0.5.1")
48
49
 
49
- spec.add_dependency("faraday", ">= 2.3.0")
50
+ spec.add_dependency("faraday", "~> 2.3.0")
50
51
  spec.add_dependency("faraday-multipart", "~> 1.0.4")
51
52
  spec.add_dependency("oj", "~> 3.13.13")
52
53
  spec.add_dependency("zeitwerk", "~> 2.6.0")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whatsapp_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ignacio-chiazzo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-28 00:00:00.000000000 Z
11
+ date: 2023-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -56,42 +56,42 @@ dependencies:
56
56
  name: sorbet
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
61
+ version: 0.5.1
62
+ type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 0.5.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sorbet-runtime
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 0.5.1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 0.5.1
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: faraday
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: 2.3.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 2.3.0
97
97
  - !ruby/object:Gem::Dependency
@@ -166,6 +166,7 @@ files:
166
166
  - bin/tapioca
167
167
  - example.rb
168
168
  - lib/whatsapp_sdk.rb
169
+ - lib/whatsapp_sdk/api/api_configuration.rb
169
170
  - lib/whatsapp_sdk/api/business_profile.rb
170
171
  - lib/whatsapp_sdk/api/client.rb
171
172
  - lib/whatsapp_sdk/api/medias.rb