whatsapp-ruby-sdk 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +28 -0
- data/README.md +85 -0
- data/lib/whats_app_cloud_api/api_helper.rb +277 -0
- data/lib/whats_app_cloud_api/client.rb +68 -0
- data/lib/whats_app_cloud_api/configuration.rb +132 -0
- data/lib/whats_app_cloud_api/controllers/base_controller.rb +52 -0
- data/lib/whats_app_cloud_api/controllers/business_profiles_controller.rb +94 -0
- data/lib/whats_app_cloud_api/controllers/media_controller.rb +142 -0
- data/lib/whats_app_cloud_api/controllers/messages_controller.rb +51 -0
- data/lib/whats_app_cloud_api/controllers/phone_numbers_controller.rb +141 -0
- data/lib/whats_app_cloud_api/controllers/registration_controller.rb +91 -0
- data/lib/whats_app_cloud_api/controllers/two_step_verification_controller.rb +57 -0
- data/lib/whats_app_cloud_api/exceptions/api_exception.rb +20 -0
- data/lib/whats_app_cloud_api/http/auth/o_auth2.rb +17 -0
- data/lib/whats_app_cloud_api/http/faraday_client.rb +97 -0
- data/lib/whats_app_cloud_api/http/http_call_back.rb +24 -0
- data/lib/whats_app_cloud_api/http/http_client.rb +123 -0
- data/lib/whats_app_cloud_api/http/http_method_enum.rb +13 -0
- data/lib/whats_app_cloud_api/http/http_request.rb +54 -0
- data/lib/whats_app_cloud_api/http/http_response.rb +29 -0
- data/lib/whats_app_cloud_api/models/action.rb +91 -0
- data/lib/whats_app_cloud_api/models/address.rb +110 -0
- data/lib/whats_app_cloud_api/models/audio.rb +61 -0
- data/lib/whats_app_cloud_api/models/base_model.rb +58 -0
- data/lib/whats_app_cloud_api/models/body.rb +49 -0
- data/lib/whats_app_cloud_api/models/business_profile.rb +123 -0
- data/lib/whats_app_cloud_api/models/button.rb +71 -0
- data/lib/whats_app_cloud_api/models/button_parameter.rb +72 -0
- data/lib/whats_app_cloud_api/models/button_parameter_type_enum.rb +17 -0
- data/lib/whats_app_cloud_api/models/component.rb +83 -0
- data/lib/whats_app_cloud_api/models/component_type_enum.rb +20 -0
- data/lib/whats_app_cloud_api/models/contact.rb +145 -0
- data/lib/whats_app_cloud_api/models/content_type_enum.rb +14 -0
- data/lib/whats_app_cloud_api/models/currency.rb +67 -0
- data/lib/whats_app_cloud_api/models/date_time_object.rb +128 -0
- data/lib/whats_app_cloud_api/models/document.rb +81 -0
- data/lib/whats_app_cloud_api/models/email_object.rb +60 -0
- data/lib/whats_app_cloud_api/models/footer.rb +49 -0
- data/lib/whats_app_cloud_api/models/get_business_profile_id_response.rb +57 -0
- data/lib/whats_app_cloud_api/models/get_phone_number_by_id_response.rb +78 -0
- data/lib/whats_app_cloud_api/models/header.rb +93 -0
- data/lib/whats_app_cloud_api/models/header_type_enum.rb +23 -0
- data/lib/whats_app_cloud_api/models/image.rb +71 -0
- data/lib/whats_app_cloud_api/models/interactive.rb +87 -0
- data/lib/whats_app_cloud_api/models/interactive_type_enum.rb +17 -0
- data/lib/whats_app_cloud_api/models/language.rb +60 -0
- data/lib/whats_app_cloud_api/models/location.rb +78 -0
- data/lib/whats_app_cloud_api/models/message.rb +194 -0
- data/lib/whats_app_cloud_api/models/message_type_enum.rb +41 -0
- data/lib/whats_app_cloud_api/models/name.rb +100 -0
- data/lib/whats_app_cloud_api/models/org.rb +70 -0
- data/lib/whats_app_cloud_api/models/parameter.rb +113 -0
- data/lib/whats_app_cloud_api/models/parameter_type_enum.rb +29 -0
- data/lib/whats_app_cloud_api/models/personal_information_type_enum.rb +17 -0
- data/lib/whats_app_cloud_api/models/phone_object.rb +70 -0
- data/lib/whats_app_cloud_api/models/phone_type_enum.rb +26 -0
- data/lib/whats_app_cloud_api/models/quality_rating_enum.rb +25 -0
- data/lib/whats_app_cloud_api/models/register_phone_request.rb +58 -0
- data/lib/whats_app_cloud_api/models/request_verification_code_method_enum.rb +17 -0
- data/lib/whats_app_cloud_api/models/request_verification_code_request.rb +57 -0
- data/lib/whats_app_cloud_api/models/response_contact.rb +57 -0
- data/lib/whats_app_cloud_api/models/response_message.rb +48 -0
- data/lib/whats_app_cloud_api/models/retrieve_media_url_response.rb +94 -0
- data/lib/whats_app_cloud_api/models/row.rb +68 -0
- data/lib/whats_app_cloud_api/models/section.rb +72 -0
- data/lib/whats_app_cloud_api/models/send_message_response.rb +85 -0
- data/lib/whats_app_cloud_api/models/set_two_step_verification_code_request.rb +48 -0
- data/lib/whats_app_cloud_api/models/sticker.rb +61 -0
- data/lib/whats_app_cloud_api/models/sub_type_enum.rb +20 -0
- data/lib/whats_app_cloud_api/models/success_response.rb +48 -0
- data/lib/whats_app_cloud_api/models/template.rb +78 -0
- data/lib/whats_app_cloud_api/models/text.rb +72 -0
- data/lib/whats_app_cloud_api/models/update_business_profile_request.rb +116 -0
- data/lib/whats_app_cloud_api/models/upload_media.rb +48 -0
- data/lib/whats_app_cloud_api/models/upload_media_request.rb +80 -0
- data/lib/whats_app_cloud_api/models/url_object.rb +60 -0
- data/lib/whats_app_cloud_api/models/verify_code_request.rb +48 -0
- data/lib/whats_app_cloud_api/models/vertical_enum.rb +68 -0
- data/lib/whats_app_cloud_api/models/video.rb +61 -0
- data/lib/whats_app_cloud_api/utilities/date_time_helper.rb +156 -0
- data/lib/whats_app_cloud_api/utilities/file_wrapper.rb +16 -0
- data/lib/whats_app_cloud_api.rb +104 -0
- metadata +266 -0
@@ -0,0 +1,97 @@
|
|
1
|
+
# whats_app_cloud_api
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
require 'faraday/http_cache'
|
7
|
+
require 'faraday/retry'
|
8
|
+
require 'faraday/multipart'
|
9
|
+
require 'faraday/follow_redirects'
|
10
|
+
require 'faraday/gzip'
|
11
|
+
|
12
|
+
module WhatsAppCloudApi
|
13
|
+
# An implementation of HttpClient.
|
14
|
+
class FaradayClient < HttpClient
|
15
|
+
# The attribute readers for properties.
|
16
|
+
attr_reader :connection
|
17
|
+
|
18
|
+
# The constructor.
|
19
|
+
def initialize(timeout:, max_retries:, retry_interval:,
|
20
|
+
backoff_factor:, retry_statuses:, retry_methods:,
|
21
|
+
connection:, adapter:, cache: false, verify: true)
|
22
|
+
@connection = if connection.nil?
|
23
|
+
create_connection(timeout: timeout, max_retries: max_retries,
|
24
|
+
retry_interval: retry_interval, backoff_factor: backoff_factor,
|
25
|
+
retry_statuses: retry_statuses, retry_methods: retry_methods,
|
26
|
+
adapter: adapter, cache: cache, verify: verify)
|
27
|
+
else
|
28
|
+
connection
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Method to initialize connection.
|
33
|
+
def create_connection(timeout:, max_retries:, retry_interval:,
|
34
|
+
backoff_factor:, retry_statuses:, retry_methods:,
|
35
|
+
adapter:, cache: false, verify: true)
|
36
|
+
Faraday.new do |faraday|
|
37
|
+
faraday.use Faraday::HttpCache, serializer: Marshal if cache
|
38
|
+
faraday.use Faraday::FollowRedirects::Middleware
|
39
|
+
faraday.request :gzip
|
40
|
+
faraday.request :multipart
|
41
|
+
faraday.request :url_encoded
|
42
|
+
faraday.ssl[:ca_file] = Certifi.where
|
43
|
+
faraday.ssl[:verify] = verify
|
44
|
+
faraday.request :retry, max: max_retries, interval: retry_interval,
|
45
|
+
backoff_factor: backoff_factor,
|
46
|
+
retry_statuses: retry_statuses,
|
47
|
+
methods: retry_methods,
|
48
|
+
retry_if: proc { |env, _exc|
|
49
|
+
env.request.context['forced_retry'] ||= false
|
50
|
+
}
|
51
|
+
faraday.adapter adapter
|
52
|
+
faraday.options[:params_encoder] = Faraday::FlatParamsEncoder
|
53
|
+
faraday.options[:timeout] = timeout if timeout.positive?
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# Method overridden from HttpClient.
|
58
|
+
def execute_as_string(http_request)
|
59
|
+
response = @connection.send(
|
60
|
+
http_request.http_method.downcase,
|
61
|
+
http_request.query_url
|
62
|
+
) do |request|
|
63
|
+
request.headers = http_request.headers.map { |k, v| [k.to_s, v.to_s] }
|
64
|
+
request.options.context ||= {}
|
65
|
+
request.options.context.merge!(http_request.context)
|
66
|
+
unless http_request.http_method == HttpMethodEnum::GET &&
|
67
|
+
http_request.parameters.empty?
|
68
|
+
request.body = http_request.parameters
|
69
|
+
end
|
70
|
+
end
|
71
|
+
convert_response(response, http_request)
|
72
|
+
end
|
73
|
+
|
74
|
+
# Method overridden from HttpClient.
|
75
|
+
def execute_as_binary(http_request)
|
76
|
+
response = @connection.send(
|
77
|
+
http_request.http_method.downcase,
|
78
|
+
http_request.query_url
|
79
|
+
) do |request|
|
80
|
+
request.headers = http_request.headers
|
81
|
+
request.options.context ||= {}
|
82
|
+
request.options.context.merge!(http_request.context)
|
83
|
+
unless http_request.http_method == HttpMethodEnum::GET &&
|
84
|
+
http_request.parameters.empty?
|
85
|
+
request.body = http_request.parameters
|
86
|
+
end
|
87
|
+
end
|
88
|
+
convert_response(response, http_request)
|
89
|
+
end
|
90
|
+
|
91
|
+
# Method overridden from HttpClient.
|
92
|
+
def convert_response(response, http_request)
|
93
|
+
HttpResponse.new(response.status, response.reason_phrase,
|
94
|
+
response.headers, response.body, http_request)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# whats_app_cloud_api
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WhatsAppCloudApi
|
7
|
+
# HttpCallBack allows defining callables for pre and post API calls.
|
8
|
+
class HttpCallBack
|
9
|
+
# A controller will call this method before making an HTTP Request.
|
10
|
+
# @param [HttpRequest] The HttpRequest object which the HttpClient
|
11
|
+
# will execute.
|
12
|
+
def on_before_request(_http_request)
|
13
|
+
raise NotImplementedError, 'This method needs
|
14
|
+
to be implemented in a child class.'
|
15
|
+
end
|
16
|
+
|
17
|
+
# A controller will call this method after making an HTTP Request.
|
18
|
+
# @param [HttpResponse] The HttpReponse of the API call.
|
19
|
+
def on_after_response(_http_response)
|
20
|
+
raise NotImplementedError, 'This method needs
|
21
|
+
to be implemented in a child class.'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
# whats_app_cloud_api
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WhatsAppCloudApi
|
7
|
+
# An interface for the methods that an HTTP Client must implement.
|
8
|
+
#
|
9
|
+
# This class should not be instantiated but should be used as a base class
|
10
|
+
# for HTTP Client classes.
|
11
|
+
class HttpClient
|
12
|
+
# Execute an HttpRequest when the response is expected to be a string.
|
13
|
+
# @param [HttpRequest] The HttpRequest to be executed.
|
14
|
+
def execute_as_string(_http_request)
|
15
|
+
raise NotImplementedError, 'This method needs
|
16
|
+
to be implemented in a child class.'
|
17
|
+
end
|
18
|
+
|
19
|
+
# Execute an HttpRequest when the response is expected to be binary.
|
20
|
+
# @param [HttpRequest] The HttpRequest to be executed.
|
21
|
+
def execute_as_binary(_http_request)
|
22
|
+
raise NotImplementedError, 'This method needs
|
23
|
+
to be implemented in a child class.'
|
24
|
+
end
|
25
|
+
|
26
|
+
# Converts the HTTP Response from the client to an HttpResponse object.
|
27
|
+
# @param [Dynamic] The response object received from the client.
|
28
|
+
def convert_response(_response)
|
29
|
+
raise NotImplementedError, 'This method needs
|
30
|
+
to be implemented in a child class.'
|
31
|
+
end
|
32
|
+
|
33
|
+
# Get a GET HttpRequest object.
|
34
|
+
# @param [String] The URL to send the request to.
|
35
|
+
# @param [Hash, Optional] The headers for the HTTP Request.
|
36
|
+
# @param [Hash, Optional] The context for the HTTP Request.
|
37
|
+
def get(query_url,
|
38
|
+
headers: {},
|
39
|
+
context: {})
|
40
|
+
HttpRequest.new(HttpMethodEnum::GET,
|
41
|
+
query_url,
|
42
|
+
headers: headers,
|
43
|
+
context: context)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Get a HEAD HttpRequest object.
|
47
|
+
# @param [String] The URL to send the request to.
|
48
|
+
# @param [Hash, Optional] The headers for the HTTP Request.
|
49
|
+
# @param [Hash, Optional] The context for the HTTP Request.
|
50
|
+
def head(query_url,
|
51
|
+
headers: {},
|
52
|
+
context: {})
|
53
|
+
HttpRequest.new(HttpMethodEnum::HEAD,
|
54
|
+
query_url,
|
55
|
+
headers: headers,
|
56
|
+
context: context)
|
57
|
+
end
|
58
|
+
|
59
|
+
# Get a POST HttpRequest object.
|
60
|
+
# @param [String] The URL to send the request to.
|
61
|
+
# @param [Hash, Optional] The headers for the HTTP Request.
|
62
|
+
# @param [Hash, Optional] The parameters for the HTTP Request.
|
63
|
+
# @param [Hash, Optional] The context for the HTTP Request.
|
64
|
+
def post(query_url,
|
65
|
+
headers: {},
|
66
|
+
parameters: {},
|
67
|
+
context: {})
|
68
|
+
HttpRequest.new(HttpMethodEnum::POST,
|
69
|
+
query_url,
|
70
|
+
headers: headers,
|
71
|
+
parameters: parameters,
|
72
|
+
context: context)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Get a PUT HttpRequest object.
|
76
|
+
# @param [String] The URL to send the request to.
|
77
|
+
# @param [Hash, Optional] The headers for the HTTP Request.
|
78
|
+
# @param [Hash, Optional] The parameters for the HTTP Request.
|
79
|
+
# @param [Hash, Optional] The context for the HTTP Request.
|
80
|
+
def put(query_url,
|
81
|
+
headers: {},
|
82
|
+
parameters: {},
|
83
|
+
context: {})
|
84
|
+
HttpRequest.new(HttpMethodEnum::PUT,
|
85
|
+
query_url,
|
86
|
+
headers: headers,
|
87
|
+
parameters: parameters,
|
88
|
+
context: context)
|
89
|
+
end
|
90
|
+
|
91
|
+
# Get a PATCH HttpRequest object.
|
92
|
+
# @param [String] The URL to send the request to.
|
93
|
+
# @param [Hash, Optional] The headers for the HTTP Request.
|
94
|
+
# @param [Hash, Optional] The parameters for the HTTP Request.
|
95
|
+
# @param [Hash, Optional] The context for the HTTP Request.
|
96
|
+
def patch(query_url,
|
97
|
+
headers: {},
|
98
|
+
parameters: {},
|
99
|
+
context: {})
|
100
|
+
HttpRequest.new(HttpMethodEnum::PATCH,
|
101
|
+
query_url,
|
102
|
+
headers: headers,
|
103
|
+
parameters: parameters,
|
104
|
+
context: context)
|
105
|
+
end
|
106
|
+
|
107
|
+
# Get a DELETE HttpRequest object.
|
108
|
+
# @param [String] The URL to send the request to.
|
109
|
+
# @param [Hash, Optional] The headers for the HTTP Request.
|
110
|
+
# @param [Hash, Optional] The parameters for the HTTP Request.
|
111
|
+
# @param [Hash, Optional] The context for the HTTP Request.
|
112
|
+
def delete(query_url,
|
113
|
+
headers: {},
|
114
|
+
parameters: {},
|
115
|
+
context: {})
|
116
|
+
HttpRequest.new(HttpMethodEnum::DELETE,
|
117
|
+
query_url,
|
118
|
+
headers: headers,
|
119
|
+
parameters: parameters,
|
120
|
+
context: context)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# whats_app_cloud_api
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WhatsAppCloudApi
|
7
|
+
# HTTP Methods Enumeration.
|
8
|
+
class HttpMethodEnum
|
9
|
+
HTTPMETHODENUM = [GET = 'GET'.freeze, POST = 'POST'.freeze,
|
10
|
+
PUT = 'PUT'.freeze, PATCH = 'PATCH'.freeze,
|
11
|
+
DELETE = 'DELETE'.freeze, HEAD = 'HEAD'.freeze].freeze
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# whats_app_cloud_api
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WhatsAppCloudApi
|
7
|
+
# Represents a single Http Request.
|
8
|
+
class HttpRequest
|
9
|
+
attr_accessor :http_method, :query_url, :headers,
|
10
|
+
:parameters, :username, :password,
|
11
|
+
:context
|
12
|
+
|
13
|
+
# The constructor.
|
14
|
+
# @param [HttpMethodEnum] The HTTP method.
|
15
|
+
# @param [String] The URL to send the request to.
|
16
|
+
# @param [Hash, Optional] The headers for the HTTP Request.
|
17
|
+
# @param [Hash, Optional] The parameters for the HTTP Request.
|
18
|
+
# @param [Hash, Optional] The context for the HTTP Request.
|
19
|
+
def initialize(http_method,
|
20
|
+
query_url,
|
21
|
+
headers: {},
|
22
|
+
parameters: {},
|
23
|
+
context: {})
|
24
|
+
@http_method = http_method
|
25
|
+
@query_url = query_url
|
26
|
+
@headers = headers
|
27
|
+
@parameters = parameters
|
28
|
+
@context = context
|
29
|
+
end
|
30
|
+
|
31
|
+
# Add a header to the HttpRequest.
|
32
|
+
# @param [String] The name of the header.
|
33
|
+
# @param [String] The value of the header.
|
34
|
+
def add_header(name, value)
|
35
|
+
@headers[name] = value
|
36
|
+
end
|
37
|
+
|
38
|
+
# Add a parameter to the HttpRequest.
|
39
|
+
# @param [String] The name of the parameter.
|
40
|
+
# @param [String] The value of the parameter.
|
41
|
+
def add_parameter(name, value)
|
42
|
+
@parameters[name] = value
|
43
|
+
end
|
44
|
+
|
45
|
+
# Add a query parameter to the HttpRequest.
|
46
|
+
# @param [String] The name of the query parameter.
|
47
|
+
# @param [String] The value of the query parameter.
|
48
|
+
def add_query_parameter(name, value)
|
49
|
+
@query_url = APIHelper.append_url_with_query_parameters(@query_url,
|
50
|
+
name => value)
|
51
|
+
@query_url = APIHelper.clean_url(@query_url)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# whats_app_cloud_api
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WhatsAppCloudApi
|
7
|
+
# Http response received.
|
8
|
+
class HttpResponse
|
9
|
+
attr_reader :status_code, :reason_phrase, :headers, :raw_body, :request
|
10
|
+
|
11
|
+
# The constructor
|
12
|
+
# @param [Integer] The status code returned by the server.
|
13
|
+
# @param [String] The reason phrase returned by the server.
|
14
|
+
# @param [Hash] The headers sent by the server in the response.
|
15
|
+
# @param [String] The raw body of the response.
|
16
|
+
# @param [HttpRequest] The request that resulted in this response.
|
17
|
+
def initialize(status_code,
|
18
|
+
reason_phrase,
|
19
|
+
headers,
|
20
|
+
raw_body,
|
21
|
+
request)
|
22
|
+
@status_code = status_code
|
23
|
+
@reason_phrase = reason_phrase
|
24
|
+
@headers = headers
|
25
|
+
@raw_body = raw_body
|
26
|
+
@request = request
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# whats_app_cloud_api
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WhatsAppCloudApi
|
7
|
+
# Action Model.
|
8
|
+
class Action < BaseModel
|
9
|
+
SKIP = Object.new
|
10
|
+
private_constant :SKIP
|
11
|
+
|
12
|
+
# Required for List Messages. Button content. It cannot be an empty string
|
13
|
+
# and must be unique within the message. Emojis are supported, markdown is
|
14
|
+
# not.
|
15
|
+
# @return [String]
|
16
|
+
attr_accessor :button
|
17
|
+
|
18
|
+
# Required for Reply Buttons. You can have up to 3 buttons. You cannot have
|
19
|
+
# leading or trailing spaces when setting the ID.
|
20
|
+
# @return [List of Button]
|
21
|
+
attr_accessor :buttons
|
22
|
+
|
23
|
+
# Required for List Messages.
|
24
|
+
# @return [List of Section]
|
25
|
+
attr_accessor :sections
|
26
|
+
|
27
|
+
# A mapping from model property names to API property names.
|
28
|
+
def self.names
|
29
|
+
@_hash = {} if @_hash.nil?
|
30
|
+
@_hash['button'] = 'button'
|
31
|
+
@_hash['buttons'] = 'buttons'
|
32
|
+
@_hash['sections'] = 'sections'
|
33
|
+
@_hash
|
34
|
+
end
|
35
|
+
|
36
|
+
# An array for optional fields
|
37
|
+
def optionals
|
38
|
+
%w[
|
39
|
+
button
|
40
|
+
buttons
|
41
|
+
sections
|
42
|
+
]
|
43
|
+
end
|
44
|
+
|
45
|
+
# An array for nullable fields
|
46
|
+
def nullables
|
47
|
+
[]
|
48
|
+
end
|
49
|
+
|
50
|
+
def initialize(button = nil,
|
51
|
+
buttons = nil,
|
52
|
+
sections = nil)
|
53
|
+
@button = button unless button == SKIP
|
54
|
+
@buttons = buttons unless buttons == SKIP
|
55
|
+
@sections = sections unless sections == SKIP
|
56
|
+
end
|
57
|
+
|
58
|
+
# Creates an instance of the object from a hash.
|
59
|
+
def self.from_hash(hash)
|
60
|
+
return nil unless hash
|
61
|
+
|
62
|
+
# Extract variables from the hash.
|
63
|
+
button = hash.key?('button') ? hash['button'] : SKIP
|
64
|
+
# Parameter is an array, so we need to iterate through it
|
65
|
+
buttons = nil
|
66
|
+
unless hash['buttons'].nil?
|
67
|
+
buttons = []
|
68
|
+
hash['buttons'].each do |structure|
|
69
|
+
buttons << (Button.from_hash(structure) if structure)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
buttons = SKIP unless hash.key?('buttons')
|
74
|
+
# Parameter is an array, so we need to iterate through it
|
75
|
+
sections = nil
|
76
|
+
unless hash['sections'].nil?
|
77
|
+
sections = []
|
78
|
+
hash['sections'].each do |structure|
|
79
|
+
sections << (Section.from_hash(structure) if structure)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
sections = SKIP unless hash.key?('sections')
|
84
|
+
|
85
|
+
# Create object from extracted values.
|
86
|
+
Action.new(button,
|
87
|
+
buttons,
|
88
|
+
sections)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# whats_app_cloud_api
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WhatsAppCloudApi
|
7
|
+
# Address Model.
|
8
|
+
class Address < BaseModel
|
9
|
+
SKIP = Object.new
|
10
|
+
private_constant :SKIP
|
11
|
+
|
12
|
+
# Street number and name
|
13
|
+
# @return [String]
|
14
|
+
attr_accessor :street
|
15
|
+
|
16
|
+
# City name.
|
17
|
+
# @return [String]
|
18
|
+
attr_accessor :city
|
19
|
+
|
20
|
+
# State abbreviation.
|
21
|
+
# @return [String]
|
22
|
+
attr_accessor :state
|
23
|
+
|
24
|
+
# ZIP code.
|
25
|
+
# @return [String]
|
26
|
+
attr_accessor :zip
|
27
|
+
|
28
|
+
# Full country name.
|
29
|
+
# @return [String]
|
30
|
+
attr_accessor :country
|
31
|
+
|
32
|
+
# Two-letter country abbreviation.
|
33
|
+
# @return [String]
|
34
|
+
attr_accessor :country_code
|
35
|
+
|
36
|
+
# Two-letter country abbreviation.
|
37
|
+
# @return [PersonalInformationTypeEnum]
|
38
|
+
attr_accessor :type
|
39
|
+
|
40
|
+
# A mapping from model property names to API property names.
|
41
|
+
def self.names
|
42
|
+
@_hash = {} if @_hash.nil?
|
43
|
+
@_hash['street'] = 'street'
|
44
|
+
@_hash['city'] = 'city'
|
45
|
+
@_hash['state'] = 'state'
|
46
|
+
@_hash['zip'] = 'zip'
|
47
|
+
@_hash['country'] = 'country'
|
48
|
+
@_hash['country_code'] = 'country_code'
|
49
|
+
@_hash['type'] = 'type'
|
50
|
+
@_hash
|
51
|
+
end
|
52
|
+
|
53
|
+
# An array for optional fields
|
54
|
+
def optionals
|
55
|
+
%w[
|
56
|
+
street
|
57
|
+
city
|
58
|
+
state
|
59
|
+
zip
|
60
|
+
country
|
61
|
+
country_code
|
62
|
+
type
|
63
|
+
]
|
64
|
+
end
|
65
|
+
|
66
|
+
# An array for nullable fields
|
67
|
+
def nullables
|
68
|
+
[]
|
69
|
+
end
|
70
|
+
|
71
|
+
def initialize(street = nil,
|
72
|
+
city = nil,
|
73
|
+
state = nil,
|
74
|
+
zip = nil,
|
75
|
+
country = nil,
|
76
|
+
country_code = nil,
|
77
|
+
type = nil)
|
78
|
+
@street = street unless street == SKIP
|
79
|
+
@city = city unless city == SKIP
|
80
|
+
@state = state unless state == SKIP
|
81
|
+
@zip = zip unless zip == SKIP
|
82
|
+
@country = country unless country == SKIP
|
83
|
+
@country_code = country_code unless country_code == SKIP
|
84
|
+
@type = type unless type == SKIP
|
85
|
+
end
|
86
|
+
|
87
|
+
# Creates an instance of the object from a hash.
|
88
|
+
def self.from_hash(hash)
|
89
|
+
return nil unless hash
|
90
|
+
|
91
|
+
# Extract variables from the hash.
|
92
|
+
street = hash.key?('street') ? hash['street'] : SKIP
|
93
|
+
city = hash.key?('city') ? hash['city'] : SKIP
|
94
|
+
state = hash.key?('state') ? hash['state'] : SKIP
|
95
|
+
zip = hash.key?('zip') ? hash['zip'] : SKIP
|
96
|
+
country = hash.key?('country') ? hash['country'] : SKIP
|
97
|
+
country_code = hash.key?('country_code') ? hash['country_code'] : SKIP
|
98
|
+
type = hash.key?('type') ? hash['type'] : SKIP
|
99
|
+
|
100
|
+
# Create object from extracted values.
|
101
|
+
Address.new(street,
|
102
|
+
city,
|
103
|
+
state,
|
104
|
+
zip,
|
105
|
+
country,
|
106
|
+
country_code,
|
107
|
+
type)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# whats_app_cloud_api
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WhatsAppCloudApi
|
7
|
+
# Audio Model.
|
8
|
+
class Audio < BaseModel
|
9
|
+
SKIP = Object.new
|
10
|
+
private_constant :SKIP
|
11
|
+
|
12
|
+
# The media object ID. Required when you are not using a link.
|
13
|
+
# @return [String]
|
14
|
+
attr_accessor :id
|
15
|
+
|
16
|
+
# The protocol and URL of the media to be sent. Use only with HTTP/HTTPS
|
17
|
+
# URLs. Required when you are not using an uploaded media ID.
|
18
|
+
# @return [String]
|
19
|
+
attr_accessor :link
|
20
|
+
|
21
|
+
# A mapping from model property names to API property names.
|
22
|
+
def self.names
|
23
|
+
@_hash = {} if @_hash.nil?
|
24
|
+
@_hash['id'] = 'id'
|
25
|
+
@_hash['link'] = 'link'
|
26
|
+
@_hash
|
27
|
+
end
|
28
|
+
|
29
|
+
# An array for optional fields
|
30
|
+
def optionals
|
31
|
+
%w[
|
32
|
+
id
|
33
|
+
link
|
34
|
+
]
|
35
|
+
end
|
36
|
+
|
37
|
+
# An array for nullable fields
|
38
|
+
def nullables
|
39
|
+
[]
|
40
|
+
end
|
41
|
+
|
42
|
+
def initialize(id = nil,
|
43
|
+
link = nil)
|
44
|
+
@id = id unless id == SKIP
|
45
|
+
@link = link unless link == SKIP
|
46
|
+
end
|
47
|
+
|
48
|
+
# Creates an instance of the object from a hash.
|
49
|
+
def self.from_hash(hash)
|
50
|
+
return nil unless hash
|
51
|
+
|
52
|
+
# Extract variables from the hash.
|
53
|
+
id = hash.key?('id') ? hash['id'] : SKIP
|
54
|
+
link = hash.key?('link') ? hash['link'] : SKIP
|
55
|
+
|
56
|
+
# Create object from extracted values.
|
57
|
+
Audio.new(id,
|
58
|
+
link)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# whats_app_cloud_api
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC v2.0
|
4
|
+
# ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WhatsAppCloudApi
|
7
|
+
# Base model.
|
8
|
+
class BaseModel
|
9
|
+
# Returns a Hash representation of the current object.
|
10
|
+
def to_hash
|
11
|
+
hash = {}
|
12
|
+
instance_variables.each do |name|
|
13
|
+
value = instance_variable_get(name)
|
14
|
+
name = name[1..]
|
15
|
+
key = self.class.names.key?(name) ? self.class.names[name] : name
|
16
|
+
|
17
|
+
optional_fields = optionals if respond_to? 'optionals'
|
18
|
+
nullable_fields = nullables if respond_to? 'nullables'
|
19
|
+
if value.nil?
|
20
|
+
next unless nullable_fields.include?(name)
|
21
|
+
|
22
|
+
if !optional_fields.include?(name) && !nullable_fields.include?(name)
|
23
|
+
raise ArgumentError,
|
24
|
+
"`#{name}` cannot be nil in `#{self.class}`. Please specify a valid value."
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
hash[key] = nil
|
29
|
+
unless value.nil?
|
30
|
+
if respond_to?("to_#{name}")
|
31
|
+
if (value.instance_of? Array) || (value.instance_of? Hash)
|
32
|
+
params = [hash, key]
|
33
|
+
hash[key] = send("to_#{name}", *params)
|
34
|
+
else
|
35
|
+
hash[key] = send("to_#{name}")
|
36
|
+
end
|
37
|
+
elsif value.instance_of? Array
|
38
|
+
hash[key] = value.map { |v| v.is_a?(BaseModel) ? v.to_hash : v }
|
39
|
+
elsif value.instance_of? Hash
|
40
|
+
hash[key] = {}
|
41
|
+
value.each do |k, v|
|
42
|
+
hash[key][k] = v.is_a?(BaseModel) ? v.to_hash : v
|
43
|
+
end
|
44
|
+
else
|
45
|
+
hash[key] = value.is_a?(BaseModel) ? value.to_hash : value
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
hash
|
50
|
+
end
|
51
|
+
|
52
|
+
# Returns a JSON representation of the curent object.
|
53
|
+
def to_json(options = {})
|
54
|
+
hash = to_hash
|
55
|
+
hash.to_json(options)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|