socketlabs-injectionapi 0.0.1.pre.Dev

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 (44) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +50 -0
  3. data/.idea/inspectionProfiles/Project_Default.xml +7 -0
  4. data/.idea/misc.xml +7 -0
  5. data/.idea/modules.xml +8 -0
  6. data/.idea/socketlabs-ruby.iml +12 -0
  7. data/.idea/vcs.xml +7 -0
  8. data/.idea/workspace.xml +452 -0
  9. data/LICENSE.MD +21 -0
  10. data/README.MD +212 -0
  11. data/gemfile +3 -0
  12. data/gemfile.lock +17 -0
  13. data/lib/socketlabs/injectionapi/address_result.rb +41 -0
  14. data/lib/socketlabs/injectionapi/core/http_request.rb +135 -0
  15. data/lib/socketlabs/injectionapi/core/http_response.rb +27 -0
  16. data/lib/socketlabs/injectionapi/core/injection_request_factory.rb +300 -0
  17. data/lib/socketlabs/injectionapi/core/injection_response_parser.rb +130 -0
  18. data/lib/socketlabs/injectionapi/core/send_validator.rb +387 -0
  19. data/lib/socketlabs/injectionapi/core/serialization/address_json.rb +48 -0
  20. data/lib/socketlabs/injectionapi/core/serialization/attachment_json.rb +60 -0
  21. data/lib/socketlabs/injectionapi/core/serialization/custom_header_json.rb +40 -0
  22. data/lib/socketlabs/injectionapi/core/serialization/injection_request.rb +56 -0
  23. data/lib/socketlabs/injectionapi/core/serialization/injection_response_dto.rb +77 -0
  24. data/lib/socketlabs/injectionapi/core/serialization/merge_data_json.rb +103 -0
  25. data/lib/socketlabs/injectionapi/core/serialization/merge_field_json.rb +40 -0
  26. data/lib/socketlabs/injectionapi/core/serialization/message_json.rb +250 -0
  27. data/lib/socketlabs/injectionapi/core/serialization/message_result_dto.rb +66 -0
  28. data/lib/socketlabs/injectionapi/core/string_extension.rb +74 -0
  29. data/lib/socketlabs/injectionapi/message/attachment.rb +146 -0
  30. data/lib/socketlabs/injectionapi/message/basic_message.rb +136 -0
  31. data/lib/socketlabs/injectionapi/message/bulk_message.rb +103 -0
  32. data/lib/socketlabs/injectionapi/message/bulk_recipient.rb +87 -0
  33. data/lib/socketlabs/injectionapi/message/custom_header.rb +53 -0
  34. data/lib/socketlabs/injectionapi/message/email_address.rb +52 -0
  35. data/lib/socketlabs/injectionapi/message/merge_data.rb +50 -0
  36. data/lib/socketlabs/injectionapi/message/message_base.rb +167 -0
  37. data/lib/socketlabs/injectionapi/proxy.rb +29 -0
  38. data/lib/socketlabs/injectionapi/send_response.rb +63 -0
  39. data/lib/socketlabs/injectionapi/send_result.rb +318 -0
  40. data/lib/socketlabs/injectionapi/socketlabsclient.rb +123 -0
  41. data/lib/socketlabs/version.rb +5 -0
  42. data/lib/socketlabs-injectionapi.rb +27 -0
  43. data/socketlabs-injectionapi.gemspec +25 -0
  44. metadata +85 -0
@@ -0,0 +1,63 @@
1
+ module SocketLabs
2
+ module InjectionApi
3
+ # The response of an SocketLabsClient send request.
4
+ class SendResponse
5
+
6
+ # The result [SendResult] of the SocketLabsClient send request.
7
+ attr_accessor :result
8
+ # The unique key generated by the Injection API if an unexpected error occurs during the SocketLabsClient
9
+ # send request. This unique key can be used by SocketLabs support to troubleshoot the issue.
10
+ attr_accessor :transaction_receipt
11
+ # A Array of AddressResult objects that contain the status of each address that failed.
12
+ # If no messages failed this array is empty.
13
+ attr_accessor :address_results
14
+
15
+ def initialize (
16
+ result = nil,
17
+ transaction_receipt= nil,
18
+ address_results= nil,
19
+ response_message= nil
20
+ )
21
+ @result = result
22
+ @transaction_receipt = transaction_receipt
23
+ @address_results = []
24
+
25
+ unless address_results.nil?
26
+ @address_results = address_results
27
+ end
28
+
29
+ end
30
+
31
+ # A message detailing why the SocketLabsClient send request failed.
32
+ def response_message
33
+ unless @result.nil?
34
+ @result[:message]
35
+ end
36
+ end
37
+
38
+ # Represents the SendResponse as a str.
39
+ def to_s
40
+ "#{@result}: #{response_message}"
41
+ end
42
+
43
+ # build json hash for SendResponse
44
+ def to_json(*)
45
+ json = {
46
+ :result => @result.to_json,
47
+ :transactionReceipt => @transaction_receipt,
48
+ :responseMessage => response_message
49
+ }
50
+ if @address_results.length > 0
51
+ e = Array.new
52
+ @address_results.each do |value|
53
+ e.push(value.to_json)
54
+ end
55
+ json[:messageResults] = e
56
+ end
57
+ json.to_json
58
+ end
59
+
60
+ end
61
+
62
+ end
63
+ end
@@ -0,0 +1,318 @@
1
+
2
+ module SocketLabs
3
+ module InjectionApi
4
+
5
+ class SendResult
6
+ # Send Result hash
7
+ def self.enum
8
+ {
9
+ # An error has occurred that was unforeseen
10
+ "UnknownError" => {
11
+ :name => "UnknownError",
12
+ :value =>0,
13
+ :message =>"An error has occurred that was unforeseen"
14
+ },
15
+
16
+ # A timeout occurred sending the message
17
+ "Timeout" =>
18
+ {
19
+ :name =>"Timeout",
20
+ :value =>1,
21
+ :message =>"A timeout occurred sending the message"
22
+ },
23
+
24
+ # Successful send of message
25
+ "Success" =>
26
+ {
27
+ :name =>"Success",
28
+ :value =>2,
29
+ :message =>"Successful send of message"
30
+ },
31
+
32
+ # Warnings were found while sending the message
33
+ "Warning" =>
34
+ {
35
+ :name =>"Warning",
36
+ :value =>3,
37
+ :message =>"Warnings were found while sending the message"
38
+ },
39
+
40
+ # Internal server error
41
+ "InternalError" =>
42
+ {
43
+ :name =>"InternalError",
44
+ :value =>4,
45
+ :message =>"Internal server error"
46
+ },
47
+
48
+ # Message has exceeded the size limit
49
+ "MessageTooLarge" =>
50
+ {
51
+ :name =>"MessageTooLarge",
52
+ :value =>5,
53
+ :message =>"Message has exceeded the size limit"
54
+ },
55
+
56
+ # Message exceeded the maximum allowed recipient count
57
+ "TooManyRecipients" =>
58
+ {
59
+ :name =>"TooManyRecipients",
60
+ :value =>6,
61
+ :message =>"Message exceeded the maximum allowed recipient count"
62
+ },
63
+
64
+ # The message request contained invalid data
65
+ "InvalidData" =>
66
+ {
67
+ :name =>"InvalidData",
68
+ :value =>7,
69
+ :message =>"The message request contained invalid data"
70
+ },
71
+
72
+ # The account is over the send quota, rate limit exceeded
73
+ "OverQuota" =>
74
+ {
75
+ :name =>"OverQuota",
76
+ :value =>8,
77
+ :message =>"The account is over the send quota, rate limit exceeded"
78
+ },
79
+
80
+ # Too many errors occurred sending the message
81
+ "TooManyErrors" =>
82
+ {
83
+ :name =>"TooManyErrors",
84
+ :value =>9,
85
+ :message =>"Too many errors occurred sending the message"
86
+ },
87
+
88
+ # The serverId and apiKey combination is not valid
89
+ "InvalidAuthentication" =>
90
+ {
91
+ :name =>"InvalidAuthentication",
92
+ :value =>10,
93
+ :message =>"The serverId and apiKey combination is not valid"
94
+ },
95
+
96
+ # The account has been disabled
97
+ "AccountDisabled" =>
98
+ {
99
+ :name =>"AccountDisabled",
100
+ :value =>11,
101
+ :message =>"The account has been disabled"
102
+ },
103
+
104
+ # Too many messages were found on the request
105
+ "TooManyMessages" =>
106
+ {
107
+ :name =>"TooManyMessages",
108
+ :value =>12,
109
+ :message =>"Too many messages were found on the request"
110
+ },
111
+
112
+ # No valid recipients were found on the message
113
+ "NoValidRecipients" =>
114
+ {
115
+ :name =>"NoValidRecipients",
116
+ :value =>13,
117
+ :message =>"No valid recipients were found on the message"
118
+ },
119
+
120
+ # An invalid recipient address was found on the message
121
+ "InvalidAddress" =>
122
+ {
123
+ :name =>"InvalidAddress",
124
+ :value =>14,
125
+ :message =>"An invalid recipient address was found on the message"
126
+ },
127
+
128
+ # An invalid attachment was found on the message
129
+ "InvalidAttachment" =>
130
+ {
131
+ :name =>"InvalidAttachment",
132
+ :value =>15,
133
+ :message =>"An invalid attachment was found on the message"
134
+ },
135
+
136
+ # No messages were found on the request
137
+ "NoMessages" =>
138
+ {
139
+ :name =>"NoMessages",
140
+ :value =>16,
141
+ :message =>"No messages were found on the request"
142
+ },
143
+
144
+ # No message content was found on the request
145
+ "EmptyMessage" =>
146
+ {
147
+ :name =>"EmptyMessage",
148
+ :value =>17,
149
+ :message =>"No message content was found on the request"
150
+ },
151
+
152
+ # No subject was found on the message
153
+ "EmptySubject" =>
154
+ {
155
+ :name =>"EmptySubject",
156
+ :value =>18,
157
+ :message =>"No subject was found on the message"
158
+ },
159
+
160
+ # An invalid From address was found on the message
161
+ "InvalidFromAddress" =>
162
+ {
163
+ :name =>"InvalidFromAddress",
164
+ :value =>19,
165
+ :message =>"An invalid From address was found on the message"
166
+ },
167
+
168
+ # No To addresses were found on the message
169
+ "EmptyToAddress" =>
170
+ {
171
+ :name =>"EmptyToAddress",
172
+ :value =>20,
173
+ :message =>"No To addresses were found on the message"
174
+ },
175
+
176
+ # No valid message body was found on the message
177
+ "NoValidBodyParts" =>
178
+ {
179
+ :name =>"NoValidBodyParts",
180
+ :value =>21,
181
+ :message =>"No valid message body was found on the message"
182
+ },
183
+
184
+ # An invalid templateId was found on the message
185
+ "InvalidTemplateId" =>
186
+ {
187
+ :name =>"InvalidTemplateId",
188
+ :value =>22,
189
+ :message =>"An invalid templateId was found on the message"
190
+ },
191
+
192
+ # The specified templateId has no content associated with it
193
+ "TemplateHasNoContent" =>
194
+ {
195
+ :name =>"TemplateHasNoContent",
196
+ :value =>23,
197
+ :message =>"The specified templateId has no content associated with it"
198
+ },
199
+
200
+ # A conflict occurred due to the use of templateId and HtmlBody or TextBody
201
+ "MessageBodyConflict" =>
202
+ {
203
+ :name =>"MessageBodyConflict",
204
+ :value =>24,
205
+ :message =>"A conflict occurred due to the use of templateId and HtmlBody or TextBody"
206
+ },
207
+
208
+ # Invalid merge data was found on the message
209
+ "InvalidMergeData" =>
210
+ {
211
+ :name =>"InvalidMergeData",
212
+ :value =>25,
213
+ :message =>"Invalid merge data was found on the message"
214
+ },
215
+
216
+ # SDK Validation Error: Authentication validation failed, missing or invalid ServerId or ApiKey
217
+ "AuthenticationValidationFailed" =>
218
+ {
219
+ :name =>"AuthenticationValidationFailed",
220
+ :value =>26,
221
+ :message =>"SDK Validation Error: Authentication validation failed, missing or invalid ServerId or ApiKey"
222
+ },
223
+
224
+ # SDK Validation Error: Message exceeded maximum recipient count
225
+ "RecipientValidationMaxExceeded" =>
226
+ {
227
+ :name =>"RecipientValidationMaxExceeded",
228
+ :value =>27,
229
+ :message =>"SDK Validation Error: Message exceeded maximum recipient count"
230
+ },
231
+
232
+ # SDK Validation Error: No recipients were found in the message
233
+ "RecipientValidationNoneInMessage" =>
234
+ {
235
+ :name =>"RecipientValidationNoneInMessage",
236
+ :value =>28,
237
+ :message =>"SDK Validation Error: No recipients were found in the message"
238
+ },
239
+
240
+ # SDK Validation Error: Message is missing From address
241
+ "EmailAddressValidationMissingFrom" =>
242
+ {
243
+ :name =>"EmailAddressValidationMissingFrom",
244
+ :value =>29,
245
+ :message =>"SDK Validation Error: Message is missing From address"
246
+ },
247
+
248
+ # SDK Validation Error: Message is missing To address(es)
249
+ "RecipientValidationMissingTo" =>
250
+ {
251
+ :name =>"RecipientValidationMissingTo",
252
+ :value =>30,
253
+ :message =>"SDK Validation Error: Message is missing To address(es)"
254
+ },
255
+
256
+ # SDK Validation Error: Message contains an invalid From address
257
+ "EmailAddressValidationInvalidFrom" =>
258
+ {
259
+ :name =>"EmailAddressValidationInvalidFrom",
260
+ :value =>31,
261
+ :message =>"SDK Validation Error: Message contains an invalid From address"
262
+ },
263
+
264
+ # SDK Validation Error: Message does not contain a subject
265
+ "MessageValidationEmptySubject" =>
266
+ {
267
+ :name =>"MessageValidationEmptySubject",
268
+ :value =>32,
269
+ :message =>"SDK Validation Error: Message does not contain a subject"
270
+ },
271
+
272
+ # SDK Validation Error: Message does not contain a message body
273
+ "MessageValidationEmptyMessage" =>
274
+ {
275
+ :name =>"MessageValidationEmptyMessage",
276
+ :value =>33,
277
+ :message =>"SDK Validation Error: Message does not contain a message body"
278
+ },
279
+
280
+ # SDK Validation Error: Message contains invalid custom headers
281
+ "MessageValidationInvalidCustomHeaders" =>
282
+ {
283
+ :name =>"MessageValidationInvalidCustomHeaders",
284
+ :value =>34,
285
+ :message =>"SDK Validation Error: Message contains invalid custom headers"
286
+ },
287
+
288
+ # SDK Validation Error: Message contains invalid ReplyTo address
289
+ "RecipientValidationInvalidReplyTo" =>
290
+ {
291
+ :name =>"RecipientValidationInvalidReplyTo",
292
+ :value =>35,
293
+ :message =>"SDK Validation Error: Message contains invalid ReplyTo address"
294
+ },
295
+
296
+ # SDK Validation Error: Message contains invalid recipients
297
+ "RecipientValidationInvalidRecipients" =>
298
+ {
299
+ :name =>"RecipientValidationInvalidRecipients",
300
+ :value =>36,
301
+ :message =>"SDK Validation Error: Message contains invalid recipients"
302
+ },
303
+
304
+ # SDK Validation Error: Expected messageType of basic or bulk
305
+ "MessageValidationInvalidMessageType" =>
306
+ {
307
+ :name =>"MessageValidationInvalidMessageType",
308
+ :value =>37,
309
+ :message =>"SDK Validation Error: Expected messageType of basic or bulk"
310
+
311
+ }
312
+
313
+ }
314
+ end
315
+
316
+ end
317
+ end
318
+ end
@@ -0,0 +1,123 @@
1
+ require 'net/http'
2
+ require_relative '../version.rb'
3
+ require_relative 'send_response.rb'
4
+ require_relative 'send_result.rb'
5
+ require_relative 'message/message_base.rb'
6
+ require_relative 'message/basic_message.rb'
7
+ require_relative 'message/bulk_message.rb'
8
+ require_relative 'core/injection_request_factory.rb'
9
+ require_relative 'core/http_request.rb'
10
+
11
+ module SocketLabs
12
+ module InjectionApi
13
+ class SocketLabsClient
14
+ include SocketLabs::InjectionApi::Core
15
+ include SocketLabs::InjectionApi::Message
16
+
17
+ public
18
+ def initialize (
19
+ server_id,
20
+ api_key,
21
+ proxy= {}
22
+ )
23
+ @server_id = server_id
24
+ @api_key = api_key
25
+ @proxy = proxy
26
+ @endpoint = "https://inject.socketlabs.com/api/v1/email"
27
+ end
28
+
29
+ # Sends a Message message and returns the response from the Injection API.
30
+ # @param [BasicMessage, BulkMessage] message: A Message object to be sent.
31
+ # @return [SendResponse] the SendResponse from the request
32
+ def send(message)
33
+
34
+ response = SendResponse.new
35
+
36
+ if message.instance_of? BasicMessage
37
+ response = send_basic_message(message)
38
+ end
39
+
40
+ if message.instance_of? BulkMessage
41
+ response = send_bulk_message(message)
42
+ end
43
+
44
+ response
45
+
46
+ end
47
+
48
+
49
+ private
50
+ # Your SocketLabs ServerId number.
51
+ attr_accessor :server_id
52
+ # Your SocketLabs Injection API key.
53
+ attr_accessor :api_key
54
+ # The Proxy you would like to use.
55
+ attr_accessor :proxy
56
+ # The SocketLabs Injection API endpoint Url
57
+ attr_accessor :endpoint
58
+
59
+ def http_method
60
+ HttpRequest.http_request_method[:Post]
61
+ end
62
+
63
+ # Sends a BasicMessage message and returns the response from the Injection API.
64
+ # @param [BasicMessage] message: A BasicMessage object to be sent.
65
+ # @return [SendResponse] the SendResponse from the request
66
+ def send_basic_message(message)
67
+
68
+ resp = validate_message(message)
69
+ if resp.result != SendResult.enum["Success"]
70
+ resp
71
+ end
72
+
73
+ req_factory = InjectionRequestFactory.new(@server_id, @api_key)
74
+ request = req_factory.generate_request(message)
75
+
76
+ # debug
77
+ request_hash = request.to_hash
78
+ debug_json = request_hash.to_json
79
+ puts debug_json
80
+
81
+ http_request = HttpRequest.new(http_method, { :http_endpoint => @endpoint, :proxy => @proxy })
82
+ http_request.send_request(request)
83
+
84
+ end
85
+
86
+ # Sends a BulkMessage message and returns the response from the Injection API.
87
+ # @param [BulkMessage] message: A BulkMessage object to be sent.
88
+ # @return [SendResponse] the SendResponse from the request
89
+ def send_bulk_message(message)
90
+
91
+ resp = validate_message(message)
92
+ if resp.result != SendResult.enum["Success"]
93
+ resp
94
+ end
95
+
96
+ req_factory = InjectionRequestFactory.new(@server_id, @api_key)
97
+ request = req_factory.generate_request(message)
98
+
99
+ # debug
100
+ request_hash = request.to_hash
101
+ debug_json = request_hash.to_json
102
+ puts debug_json
103
+
104
+ http_request = HttpRequest.new(http_method, { :http_endpoint => @endpoint, :proxy => @proxy })
105
+ http_request.send_request(request)
106
+
107
+ end
108
+
109
+ # Validate a BulkMessage message
110
+ # @param [MessageBase] message
111
+ # @return [SendResult]
112
+ def validate_message(message)
113
+ validator = SendValidator.new
114
+ resp = validator.validate_credentials(@server_id, @api_key)
115
+ if resp.result != SendResult.enum["Success"]
116
+ resp
117
+ end
118
+ validator.validate_message(message)
119
+ end
120
+
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,5 @@
1
+ module SocketLabs
2
+ module InjectionApi
3
+ VERSION = '0.0.1-Dev'
4
+ end
5
+ end
@@ -0,0 +1,27 @@
1
+ require_relative 'socketlabs/injectionapi/core/send_validator'
2
+ require_relative 'socketlabs/injectionapi/core/string_extension'
3
+ require_relative 'socketlabs/injectionapi/address_result'
4
+ require_relative 'socketlabs/injectionapi/proxy'
5
+ require_relative 'socketlabs/injectionapi/send_response'
6
+ require_relative 'socketlabs/injectionapi/send_result'
7
+ require_relative 'socketlabs/injectionapi/socketlabsclient'
8
+ require_relative 'socketlabs/injectionapi/message/attachment'
9
+ require_relative 'socketlabs/injectionapi/message/message_base'
10
+ require_relative 'socketlabs/injectionapi/message/basic_message'
11
+ require_relative 'socketlabs/injectionapi/message/bulk_message'
12
+ require_relative 'socketlabs/injectionapi/message/bulk_recipient'
13
+ require_relative 'socketlabs/injectionapi/message/custom_header'
14
+ require_relative 'socketlabs/injectionapi/message/email_address'
15
+ require_relative 'socketlabs/injectionapi/message/merge_data'
16
+ require_relative 'socketlabs/injectionapi/core/serialization/address_json'
17
+ require_relative 'socketlabs/injectionapi/core/serialization/attachment_json'
18
+ require_relative 'socketlabs/injectionapi/core/serialization/custom_header_json'
19
+ require_relative 'socketlabs/injectionapi/core/serialization/injection_request'
20
+ require_relative 'socketlabs/injectionapi/core/serialization/injection_response_dto'
21
+ require_relative 'socketlabs/injectionapi/core/serialization/merge_data_json'
22
+ require_relative 'socketlabs/injectionapi/core/serialization/merge_field_json'
23
+ require_relative 'socketlabs/injectionapi/core/serialization/message_json'
24
+ require_relative 'socketlabs/injectionapi/core/serialization/message_result_dto'
25
+ require_relative 'socketlabs/injectionapi/core/injection_request_factory'
26
+ require_relative 'socketlabs/injectionapi/core/http_request'
27
+ require_relative 'socketlabs/injectionapi/core/http_response'
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'socketlabs/version.rb'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'socketlabs-injectionapi'
8
+ spec.version = SocketLabs::InjectionApi::VERSION
9
+ spec.authors = ['David Schrenker']
10
+ spec.email = 'developers@socketlabs.com'
11
+ spec.summary = 'SocketLabs Injection Api'
12
+ spec.description = 'SocketLabs Email Delivery Ruby Client library'
13
+ spec.homepage = 'https://github.com/socketlabs/socketlabs-ruby'
14
+
15
+ spec.required_ruby_version = '>= 2.4'
16
+
17
+ spec.license = 'MIT'
18
+ files = `git ls-files -z`.split("\x0").reject do |f|
19
+ f.match(%r{^(examples)/})
20
+ end
21
+ spec.files = files
22
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.require_paths = ['lib']
24
+
25
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: socketlabs-injectionapi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.pre.Dev
5
+ platform: ruby
6
+ authors:
7
+ - David Schrenker
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-01-29 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: SocketLabs Email Delivery Ruby Client library
14
+ email: developers@socketlabs.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - ".gitignore"
20
+ - ".idea/inspectionProfiles/Project_Default.xml"
21
+ - ".idea/misc.xml"
22
+ - ".idea/modules.xml"
23
+ - ".idea/socketlabs-ruby.iml"
24
+ - ".idea/vcs.xml"
25
+ - ".idea/workspace.xml"
26
+ - LICENSE.MD
27
+ - README.MD
28
+ - gemfile
29
+ - gemfile.lock
30
+ - lib/socketlabs-injectionapi.rb
31
+ - lib/socketlabs/injectionapi/address_result.rb
32
+ - lib/socketlabs/injectionapi/core/http_request.rb
33
+ - lib/socketlabs/injectionapi/core/http_response.rb
34
+ - lib/socketlabs/injectionapi/core/injection_request_factory.rb
35
+ - lib/socketlabs/injectionapi/core/injection_response_parser.rb
36
+ - lib/socketlabs/injectionapi/core/send_validator.rb
37
+ - lib/socketlabs/injectionapi/core/serialization/address_json.rb
38
+ - lib/socketlabs/injectionapi/core/serialization/attachment_json.rb
39
+ - lib/socketlabs/injectionapi/core/serialization/custom_header_json.rb
40
+ - lib/socketlabs/injectionapi/core/serialization/injection_request.rb
41
+ - lib/socketlabs/injectionapi/core/serialization/injection_response_dto.rb
42
+ - lib/socketlabs/injectionapi/core/serialization/merge_data_json.rb
43
+ - lib/socketlabs/injectionapi/core/serialization/merge_field_json.rb
44
+ - lib/socketlabs/injectionapi/core/serialization/message_json.rb
45
+ - lib/socketlabs/injectionapi/core/serialization/message_result_dto.rb
46
+ - lib/socketlabs/injectionapi/core/string_extension.rb
47
+ - lib/socketlabs/injectionapi/message/attachment.rb
48
+ - lib/socketlabs/injectionapi/message/basic_message.rb
49
+ - lib/socketlabs/injectionapi/message/bulk_message.rb
50
+ - lib/socketlabs/injectionapi/message/bulk_recipient.rb
51
+ - lib/socketlabs/injectionapi/message/custom_header.rb
52
+ - lib/socketlabs/injectionapi/message/email_address.rb
53
+ - lib/socketlabs/injectionapi/message/merge_data.rb
54
+ - lib/socketlabs/injectionapi/message/message_base.rb
55
+ - lib/socketlabs/injectionapi/proxy.rb
56
+ - lib/socketlabs/injectionapi/send_response.rb
57
+ - lib/socketlabs/injectionapi/send_result.rb
58
+ - lib/socketlabs/injectionapi/socketlabsclient.rb
59
+ - lib/socketlabs/version.rb
60
+ - socketlabs-injectionapi.gemspec
61
+ homepage: https://github.com/socketlabs/socketlabs-ruby
62
+ licenses:
63
+ - MIT
64
+ metadata: {}
65
+ post_install_message:
66
+ rdoc_options: []
67
+ require_paths:
68
+ - lib
69
+ required_ruby_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '2.4'
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">"
77
+ - !ruby/object:Gem::Version
78
+ version: 1.3.1
79
+ requirements: []
80
+ rubyforge_project:
81
+ rubygems_version: 2.6.14.3
82
+ signing_key:
83
+ specification_version: 4
84
+ summary: SocketLabs Injection Api
85
+ test_files: []