whatsapp_sdk 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/CHANGELOG.md +8 -3
- data/Gemfile +2 -1
- data/Gemfile.lock +9 -7
- data/README.md +3 -0
- data/Rakefile +1 -1
- data/bin/tapioca +1 -1
- data/lib/whatsapp_sdk/api/api_configuration.rb +13 -0
- data/lib/whatsapp_sdk/api/business_profile.rb +1 -1
- data/lib/whatsapp_sdk/api/client.rb +2 -5
- data/lib/whatsapp_sdk/api/medias.rb +1 -1
- data/lib/whatsapp_sdk/api/messages.rb +2 -2
- data/lib/whatsapp_sdk/api/phone_numbers.rb +9 -3
- data/lib/whatsapp_sdk/api/request.rb +1 -1
- data/lib/whatsapp_sdk/api/response.rb +1 -1
- data/lib/whatsapp_sdk/api/responses/business_profile_data_response.rb +1 -1
- data/lib/whatsapp_sdk/api/responses/data_response.rb +1 -1
- data/lib/whatsapp_sdk/api/responses/error_response.rb +1 -1
- data/lib/whatsapp_sdk/api/responses/media_data_response.rb +1 -1
- data/lib/whatsapp_sdk/api/responses/message_data_response.rb +1 -1
- data/lib/whatsapp_sdk/api/responses/message_error_response.rb +1 -1
- data/lib/whatsapp_sdk/api/responses/phone_number_data_response.rb +21 -1
- data/lib/whatsapp_sdk/api/responses/phone_numbers_data_response.rb +1 -1
- data/lib/whatsapp_sdk/api/responses/read_message_data_response.rb +1 -1
- data/lib/whatsapp_sdk/api/responses/success_response.rb +1 -1
- data/lib/whatsapp_sdk/configuration.rb +1 -1
- data/lib/whatsapp_sdk/error.rb +1 -1
- data/lib/whatsapp_sdk/resource/address.rb +1 -1
- data/lib/whatsapp_sdk/resource/address_type.rb +1 -1
- data/lib/whatsapp_sdk/resource/button_parameter.rb +1 -1
- data/lib/whatsapp_sdk/resource/component.rb +1 -1
- data/lib/whatsapp_sdk/resource/contact.rb +1 -1
- data/lib/whatsapp_sdk/resource/contact_response.rb +1 -1
- data/lib/whatsapp_sdk/resource/currency.rb +1 -1
- data/lib/whatsapp_sdk/resource/date_time.rb +1 -1
- data/lib/whatsapp_sdk/resource/email.rb +1 -1
- data/lib/whatsapp_sdk/resource/media.rb +13 -5
- data/lib/whatsapp_sdk/resource/message.rb +1 -1
- data/lib/whatsapp_sdk/resource/name.rb +1 -1
- data/lib/whatsapp_sdk/resource/org.rb +1 -1
- data/lib/whatsapp_sdk/resource/parameter_object.rb +1 -1
- data/lib/whatsapp_sdk/resource/phone_number.rb +1 -1
- data/lib/whatsapp_sdk/resource/url.rb +1 -1
- data/lib/whatsapp_sdk/version.rb +2 -2
- data/lib/whatsapp_sdk.rb +1 -1
- data/sorbet/tapioca/require.rb +0 -1
- data/whatsapp_sdk.gemspec +5 -4
- metadata +14 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78aea6934c0189c059dbce4818236b2299319a19b41e8c5ca7d0eca21e8facd3
|
4
|
+
data.tar.gz: 1afd90036deb2f2f2010e2925c09f440215f5bad874d1b0038f4f65f110e1002
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fcf1df484e0246c5d78110089208391bda6ffcaca8914b518d7b95f38b0f7ea5fb8be9c251b0cf24cb7276122b1c8ead1031b612c351697bb0cf22e0996f1c97
|
7
|
+
data.tar.gz: b39fb20cc9af081b217e4478432190a3941e2d87f6abe85e69626e6891293d6065b180075160e6cf8c84a1a61442cb585a186740a984bfcefd5d650fce903627
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,12 @@
|
|
1
|
-
#
|
2
|
-
|
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
|
+
|
3
8
|
# v 0.7.1
|
4
|
-
Add Register API [#65](https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk/pull/65)
|
9
|
+
Add Register API @andresyebra [#65](https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk/pull/65)
|
5
10
|
|
6
11
|
# v 0.7.0
|
7
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.
|
5
|
-
faraday (
|
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.
|
23
|
-
faraday-net_http (
|
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 (
|
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
@@ -373,6 +373,9 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
373
373
|
- **Sorbet Typecheck:** run `srb tc`
|
374
374
|
- **Linters:** `bundle exec rubocop`
|
375
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
|
+
|
376
379
|
## Contributing
|
377
380
|
|
378
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
data/bin/tapioca
CHANGED
@@ -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 "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 ||
|
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_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,7 @@ 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
|
41
|
+
endpoint: "#{phone_number_id}?fields=#{DEFAULT_FIELDS}"
|
36
42
|
)
|
37
43
|
|
38
44
|
WhatsappSdk::Api::Response.new(
|
@@ -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
|
|
data/lib/whatsapp_sdk/error.rb
CHANGED
@@ -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
|
-
|
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 && !
|
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
|
data/lib/whatsapp_sdk/version.rb
CHANGED
data/lib/whatsapp_sdk.rb
CHANGED
data/sorbet/tapioca/require.rb
CHANGED
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.
|
47
|
-
|
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", "
|
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.
|
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: 2023-02-
|
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:
|
62
|
-
type: :
|
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:
|
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:
|
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:
|
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
|