messagemedia_messages_sdk 1.0.0

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.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +201 -0
  3. data/README.md +608 -0
  4. data/lib/message_media_messages.rb +50 -0
  5. data/lib/message_media_messages/api_helper.rb +209 -0
  6. data/lib/message_media_messages/configuration.rb +29 -0
  7. data/lib/message_media_messages/controllers/base_controller.rb +57 -0
  8. data/lib/message_media_messages/controllers/delivery_reports_controller.rb +208 -0
  9. data/lib/message_media_messages/controllers/messages_controller.rb +336 -0
  10. data/lib/message_media_messages/controllers/replies_controller.rb +208 -0
  11. data/lib/message_media_messages/exceptions/api_exception.rb +18 -0
  12. data/lib/message_media_messages/http/auth/basic_auth.rb +20 -0
  13. data/lib/message_media_messages/http/faraday_client.rb +55 -0
  14. data/lib/message_media_messages/http/http_call_back.rb +22 -0
  15. data/lib/message_media_messages/http/http_client.rb +92 -0
  16. data/lib/message_media_messages/http/http_context.rb +18 -0
  17. data/lib/message_media_messages/http/http_method_enum.rb +11 -0
  18. data/lib/message_media_messages/http/http_request.rb +48 -0
  19. data/lib/message_media_messages/http/http_response.rb +21 -0
  20. data/lib/message_media_messages/message_media_messages_client.rb +39 -0
  21. data/lib/message_media_messages/models/base_model.rb +34 -0
  22. data/lib/message_media_messages/models/cancel_scheduled_message_request.rb +35 -0
  23. data/lib/message_media_messages/models/check_delivery_reports_response.rb +35 -0
  24. data/lib/message_media_messages/models/check_replies_response.rb +35 -0
  25. data/lib/message_media_messages/models/confirm_delivery_reports_as_received_request.rb +35 -0
  26. data/lib/message_media_messages/models/confirm_delivery_reports_as_received_request_11.rb +35 -0
  27. data/lib/message_media_messages/models/confirm_replies_as_received_request.rb +35 -0
  28. data/lib/message_media_messages/models/confirm_replies_as_received_request_8.rb +35 -0
  29. data/lib/message_media_messages/models/send_messages_request.rb +35 -0
  30. data/lib/message_media_messages/models/send_messages_response.rb +35 -0
  31. data/test/controllers/controller_test_base.rb +30 -0
  32. data/test/controllers/test_delivery_reports_controller.rb +131 -0
  33. data/test/controllers/test_messages_controller.rb +105 -0
  34. data/test/controllers/test_replies_controller.rb +132 -0
  35. data/test/http_response_catcher.rb +16 -0
  36. data/test/test_helper.rb +91 -0
  37. metadata +168 -0
@@ -0,0 +1,132 @@
1
+ # This file was automatically generated for MessageMedia by APIMATIC v2.0 ( https://apimatic.io ).
2
+
3
+ require_relative 'controller_test_base'
4
+
5
+ class RepliesControllerTests < ControllerTestBase
6
+ # Called only once for the class before any test has executed
7
+ def self.startup
8
+ self.controller = @@api_client.replies
9
+ end
10
+
11
+ # Mark a reply message as confirmed so it is no longer returned in check replies requests.
12
+ #The confirm replies endpoint is intended to be used in conjunction with the check replies endpoint
13
+ #to allow for robust processing of reply messages. Once one or more reply messages have been processed
14
+ #they can then be confirmed using the confirm replies endpoint so they are no longer returned in
15
+ #subsequent check replies requests.
16
+ #The confirm replies endpoint takes a list of reply IDs as follows:
17
+ #```json
18
+ #{
19
+ # "reply_ids": [
20
+ # "011dcead-6988-4ad6-a1c7-6b6c68ea628d",
21
+ # "3487b3fa-6586-4979-a233-2d1b095c7718",
22
+ # "ba28e94b-c83d-4759-98e7-ff9c7edb87a1"
23
+ # ]
24
+ #}
25
+ #```
26
+ #Up to 100 replies can be confirmed in a single confirm replies request.
27
+ def test_confirm_replies_as_received_1()
28
+ # Parameters for the API call
29
+ body = ConfirmRepliesAsReceivedRequest.from_hash(JSON.parse(
30
+ '{"reply_ids":["011dcead-6988-4ad6-a1c7-6b6c68ea628d","3487b3fa-6586-4979-a2'\
31
+ '33-2d1b095c7718","ba28e94b-c83d-4759-98e7-ff9c7edb87a1"]}'
32
+ ))
33
+
34
+ # Perform the API call through the SDK function
35
+ result = self.class.controller.create_confirm_replies_as_received(body)
36
+
37
+ # Test response code
38
+ assert_equal(@response_catcher.response.status_code, 202)
39
+
40
+ # Test headers
41
+ expected_headers = {}
42
+ expected_headers['content-type'] = nil
43
+
44
+ assert(TestHelper.match_headers(expected_headers, @response_catcher.response.headers))
45
+ end
46
+
47
+ # Check for any replies that have been received.
48
+ #Replies are messages that have been sent from a handset in response to a message sent by an
49
+ #application or messages that have been sent from a handset to a inbound number associated with
50
+ #an account, known as a dedicated inbound number (contact <support@messagemedia.com> for more
51
+ #information on dedicated inbound numbers).
52
+ #Each request to the check replies endpoint will return any replies received that have not yet
53
+ #been confirmed using the confirm replies endpoint. A response from the check replies endpoint
54
+ #will have the following structure:
55
+ #```json
56
+ #{
57
+ # "replies": [
58
+ # {
59
+ # "metadata": {
60
+ # "key1": "value1",
61
+ # "key2": "value2"
62
+ # },
63
+ # "message_id": "877c19ef-fa2e-4cec-827a-e1df9b5509f7",
64
+ # "reply_id": "a175e797-2b54-468b-9850-41a3eab32f74",
65
+ # "date_received": "2016-12-07T08:43:00.850Z",
66
+ # "callback_url": "https://my.callback.url.com",
67
+ # "destination_number": "+61491570156",
68
+ # "source_number": "+61491570157",
69
+ # "vendor_account_id": {
70
+ # "vendor_id": "MessageMedia",
71
+ # "account_id": "MyAccount"
72
+ # },
73
+ # "content": "My first reply!"
74
+ # },
75
+ # {
76
+ # "metadata": {
77
+ # "key1": "value1",
78
+ # "key2": "value2"
79
+ # },
80
+ # "message_id": "8f2f5927-2e16-4f1c-bd43-47dbe2a77ae4",
81
+ # "reply_id": "3d8d53d8-01d3-45dd-8cfa-4dfc81600f7f",
82
+ # "date_received": "2016-12-07T08:43:00.850Z",
83
+ # "callback_url": "https://my.callback.url.com",
84
+ # "destination_number": "+61491570157",
85
+ # "source_number": "+61491570158",
86
+ # "vendor_account_id": {
87
+ # "vendor_id": "MessageMedia",
88
+ # "account_id": "MyAccount"
89
+ # },
90
+ # "content": "My second reply!"
91
+ # }
92
+ # ]
93
+ #}
94
+ #```
95
+ #Each reply will contain details about the reply message, as well as details of the message the reply was sent
96
+ #in response to, including any metadata specified. Every reply will have a reply ID to be used with the
97
+ #confirm replies endpoint.
98
+ #*Note: The source number and destination number properties in a reply are the inverse of those
99
+ #specified in the message the reply is in response to. The source number of the reply message is the
100
+ #same as the destination number of the original message, and the destination number of the reply
101
+ #message is the same as the source number of the original message. If a source number
102
+ #wasn't specified in the original message, then the destination number property will not be present
103
+ #in the reply message.*
104
+ #Subsequent requests to the check replies endpoint will return the same reply messages and a maximum
105
+ #of 100 replies will be returned in each request. Applications should use the confirm replies endpoint
106
+ #in the following pattern so that replies that have been processed are no longer returned in
107
+ #subsequent check replies requests.
108
+ #1. Call check replies endpoint
109
+ #2. Process each reply message
110
+ #3. Confirm all processed reply messages using the confirm replies endpoint
111
+ #*Note: It is recommended to use the Webhooks feature to receive reply messages rather than polling
112
+ #the check replies endpoint.*
113
+ def test_check_replies_1()
114
+
115
+ # Perform the API call through the SDK function
116
+ result = self.class.controller.get_check_replies()
117
+
118
+ # Test response code
119
+ assert_equal(@response_catcher.response.status_code, 200)
120
+
121
+ # Test headers
122
+ expected_headers = {}
123
+ expected_headers['content-type'] = nil
124
+
125
+ assert(TestHelper.match_headers(expected_headers, @response_catcher.response.headers))
126
+
127
+ # Test whether the captured response is as we expected
128
+ assert_not_nil(result)
129
+ assert_equal('{ "replies": [ { "metadata": { "key1": "value1", "key2": "value2" }, "message_id": "877c19ef-fa2e-4cec-827a-e1df9b5509f7", "reply_id": "a175e797-2b54-468b-9850-41a3eab32f74", "date_received": "2016-12-07T08:43:00.850Z", "callback_url": "https://my.callback.url.com", "destination_number": "+61491570156", "source_number": "+61491570157", "vendor_account_id": { "vendor_id": "MessageMedia", "account_id": "MyAccount" }, "content": "My first reply!" }, { "metadata": { "key1": "value1", "key2": "value2" }, "message_id": "8f2f5927-2e16-4f1c-bd43-47dbe2a77ae4", "reply_id": "3d8d53d8-01d3-45dd-8cfa-4dfc81600f7f", "date_received": "2016-12-07T08:43:00.850Z", "callback_url": "https://my.callback.url.com", "destination_number": "+61491570157", "source_number": "+61491570158", "vendor_account_id": { "vendor_id": "MessageMedia", "account_id": "MyAccount" }, "content": "My second reply!" } ]}', @response_catcher.response.raw_body)
130
+ end
131
+
132
+ end
@@ -0,0 +1,16 @@
1
+ # This file was automatically generated for MessageMedia by APIMATIC v2.0 ( https://apimatic.io ).
2
+
3
+ class HttpResponseCatcher < MessageMediaMessages::HttpCallBack
4
+ attr_accessor :response
5
+
6
+ def on_before_request(request)
7
+ end
8
+
9
+ # Catching the response
10
+ def on_after_response(context)
11
+ @response = context.response
12
+ end
13
+ end
14
+
15
+
16
+
@@ -0,0 +1,91 @@
1
+ # This file was automatically generated for MessageMedia by APIMATIC v2.0 ( https://apimatic.io ).
2
+
3
+ require 'tempfile'
4
+ require 'open-uri'
5
+
6
+ class TestHelper
7
+
8
+ @cache = Hash.new
9
+
10
+ # Class method to compare the received headers with the expected headers.
11
+ # @param [Hash] A hash of expected headers (keys in lower case).
12
+ # @param [Hash] A hash of received headers.
13
+ # @param [Boolean, optional] A flag which determines if we allow extra headers.
14
+ def self.match_headers(expected_headers,
15
+ received_headers,
16
+ allow_extra: true)
17
+ return false if ((received_headers.length < expected_headers.length) ||
18
+ ((allow_extra == false) && (received_headers.length > expected_headers.length)))
19
+
20
+ received_headers = Hash[received_headers.map{|k, v| [k.to_s.downcase, v]}]
21
+ expected_headers.each do |e_key, e_value|
22
+ return false unless received_headers.key?(e_key)
23
+ return false if ((e_value != nil) &&
24
+ (e_value != received_headers[e_key]))
25
+ end
26
+
27
+ return true
28
+ end
29
+
30
+ # Class method to compare the received body with the expected body.
31
+ # @param [Dynamic] The expected body.
32
+ # @param [Dynamic] The received body.
33
+ # @param [Boolean, optional] A flag which determines if we check values in dictionaries.
34
+ # @param [Boolean, optional] A flag which determines if we check the order of array elements.
35
+ # @param [Boolean, optional] A flag which determines if we check the count of array elements.
36
+ def self.match_body(expected_body,
37
+ received_body,
38
+ check_values: false,
39
+ check_order: false,
40
+ check_count: false)
41
+ if expected_body.instance_of? Hash
42
+ return false unless received_body.instance_of? Hash
43
+ for key in expected_body.keys
44
+ return false unless received_body.keys.include? key
45
+ if check_values or expected_body[key].instance_of? Hash
46
+ return false unless TestHelper.match_body(expected_body[key],
47
+ received_body[key],
48
+ check_values: check_values,
49
+ check_order: check_order,
50
+ check_count: check_count)
51
+ end
52
+ end
53
+ elsif expected_body.instance_of? Array
54
+ return False unless received_body.instance_of? Array
55
+ if check_count == true && (expected_body.length != received_body.length)
56
+ return false
57
+ else
58
+ previous_matches = Array.new
59
+ expected_body.each.with_index do |expected_element, i|
60
+ matches = (received_body.map.with_index do |received_element, j|
61
+ j if TestHelper.match_body(expected_element,
62
+ received_element,
63
+ check_values: check_values,
64
+ check_order: check_order,
65
+ check_count: check_count)
66
+ end).compact
67
+ return false if matches.length == 0
68
+ if check_order == true
69
+ return false if (i != 0 && matches.map{|x| previous_matches.map{|y| y > x}.all?}.all?)
70
+ previous_matches = matches
71
+ end
72
+ end
73
+ end
74
+ elsif expected_body != received_body
75
+ return false
76
+ end
77
+ return true
78
+ end
79
+
80
+ # Class method which takes a URL, downloads the file (if not already downloaded
81
+ # for this test session) and returns the path of the file.
82
+ # @param [String] The URL of the required file.
83
+ def self.get_file(url)
84
+ unless @cache.keys.include? url
85
+ @cache[url] = Tempfile.new('APIMatic')
86
+ @cache[url].binmode
87
+ @cache[url].write(open(url, {ssl_ca_cert: Certifi.where}).read)
88
+ end
89
+ return @cache[url].path
90
+ end
91
+ end
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: messagemedia_messages_sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - MessageMedia Developers
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-11-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logging
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.10.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.10.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.1'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 3.1.5
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '3.1'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 3.1.5
61
+ - !ruby/object:Gem::Dependency
62
+ name: certifi
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2016.9'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 2016.09.26
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '2016.9'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 2016.09.26
81
+ - !ruby/object:Gem::Dependency
82
+ name: faraday-http-cache
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '1.2'
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 1.2.2
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '1.2'
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: 1.2.2
101
+ description: The MessageMedia Messages API provides a number of endpoints for building
102
+ powerful two-way messaging applications.
103
+ email: developers@messagemedia.com
104
+ executables: []
105
+ extensions: []
106
+ extra_rdoc_files: []
107
+ files:
108
+ - LICENSE
109
+ - README.md
110
+ - lib/message_media_messages.rb
111
+ - lib/message_media_messages/api_helper.rb
112
+ - lib/message_media_messages/configuration.rb
113
+ - lib/message_media_messages/controllers/base_controller.rb
114
+ - lib/message_media_messages/controllers/delivery_reports_controller.rb
115
+ - lib/message_media_messages/controllers/messages_controller.rb
116
+ - lib/message_media_messages/controllers/replies_controller.rb
117
+ - lib/message_media_messages/exceptions/api_exception.rb
118
+ - lib/message_media_messages/http/auth/basic_auth.rb
119
+ - lib/message_media_messages/http/faraday_client.rb
120
+ - lib/message_media_messages/http/http_call_back.rb
121
+ - lib/message_media_messages/http/http_client.rb
122
+ - lib/message_media_messages/http/http_context.rb
123
+ - lib/message_media_messages/http/http_method_enum.rb
124
+ - lib/message_media_messages/http/http_request.rb
125
+ - lib/message_media_messages/http/http_response.rb
126
+ - lib/message_media_messages/message_media_messages_client.rb
127
+ - lib/message_media_messages/models/base_model.rb
128
+ - lib/message_media_messages/models/cancel_scheduled_message_request.rb
129
+ - lib/message_media_messages/models/check_delivery_reports_response.rb
130
+ - lib/message_media_messages/models/check_replies_response.rb
131
+ - lib/message_media_messages/models/confirm_delivery_reports_as_received_request.rb
132
+ - lib/message_media_messages/models/confirm_delivery_reports_as_received_request_11.rb
133
+ - lib/message_media_messages/models/confirm_replies_as_received_request.rb
134
+ - lib/message_media_messages/models/confirm_replies_as_received_request_8.rb
135
+ - lib/message_media_messages/models/send_messages_request.rb
136
+ - lib/message_media_messages/models/send_messages_response.rb
137
+ - test/controllers/controller_test_base.rb
138
+ - test/controllers/test_delivery_reports_controller.rb
139
+ - test/controllers/test_messages_controller.rb
140
+ - test/controllers/test_replies_controller.rb
141
+ - test/http_response_catcher.rb
142
+ - test/test_helper.rb
143
+ homepage: https://developers.messagemedia.com/
144
+ licenses:
145
+ - Apache-2.0
146
+ metadata:
147
+ source_code_uri: https://github.com/messagemedia/messages-ruby-sdk
148
+ post_install_message:
149
+ rdoc_options: []
150
+ require_paths:
151
+ - lib
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - "~>"
155
+ - !ruby/object:Gem::Version
156
+ version: '2.0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ requirements: []
163
+ rubyforge_project:
164
+ rubygems_version: 2.6.13
165
+ signing_key:
166
+ specification_version: 4
167
+ summary: MessageMedia Messages SDK
168
+ test_files: []