Class: SocketLabs::InjectionApi::SocketLabsClient

Inherits:
Object
  • Object
show all
Includes:
Core, Message
Defined in:
lib/socketlabs/injectionapi/socketlabsclient.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(server_id, api_key, proxy = {}) ⇒ SocketLabsClient

Returns a new instance of SocketLabsClient.



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/socketlabs/injectionapi/socketlabsclient.rb', line 23

def initialize (
    server_id,
    api_key,
    proxy= {}
)
  @server_id = server_id
  @api_key = api_key
  @proxy = proxy
  @endpoint = "https://inject.socketlabs.com/api/v1/email"
  @request_timeout = 120
  @number_of_retries = 0
end

Instance Attribute Details

#number_of_retriesObject

Returns the value of attribute number_of_retries.



72
73
74
# File 'lib/socketlabs/injectionapi/socketlabsclient.rb', line 72

def number_of_retries
  @number_of_retries
end

#request_jsonObject (readonly)

Returns the value of attribute request_json.



20
21
22
# File 'lib/socketlabs/injectionapi/socketlabsclient.rb', line 20

def request_json
  @request_json
end

#request_timeoutObject

The SocketLabs Injection API Request Timeout



71
72
73
# File 'lib/socketlabs/injectionapi/socketlabsclient.rb', line 71

def request_timeout
  @request_timeout
end

#response_jsonObject (readonly)

Returns the value of attribute response_json.



21
22
23
# File 'lib/socketlabs/injectionapi/socketlabsclient.rb', line 21

def response_json
  @response_json
end

Instance Method Details

#http_methodObject



74
75
76
# File 'lib/socketlabs/injectionapi/socketlabsclient.rb', line 74

def http_method
  HttpRequest.http_request_method[:Post]
end

#send(message) ⇒ SendResponse

Sends a Message message and returns the response from the Injection API.

Parameters:

Returns:



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/socketlabs/injectionapi/socketlabsclient.rb', line 39

def send(message)

  response = SendResponse.new

  if message.instance_of? BasicMessage
    response = send_basic_message(message)
  end

  if message.instance_of? BulkMessage
    response = send_bulk_message(message)
  end

  response

end

#send_basic_message(message) ⇒ SendResponse

Sends a BasicMessage message and returns the response from the Injection API.

Parameters:

  • message: (BasicMessage)

    A BasicMessage object to be sent.

Returns:



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/socketlabs/injectionapi/socketlabsclient.rb', line 81

def send_basic_message(message)

  resp = validate_message(message)
  if resp.result != SendResult.enum["Success"]
    resp
  end

  req_factory = InjectionRequestFactory.new(@server_id, @api_key)
  request = req_factory.generate_request(message)

  # debug
  request_hash = request.to_hash
  debug_json = request_hash.to_json
  @request_json = debug_json

  apiKeyParser = ApiKeyParser.new()
  parseResult = apiKeyParser.parse(@api_key);

  httpArguments = {
    :http_endpoint => @endpoint,
    :proxy => @proxy,
    :timeout => @request_timeout,
    :authorization => ''
  }
  if parseResult == ApiKeyParseResult.enum["Success"]
    httpArguments[:authorization] = @api_key
    request.api_key = ''
  end

  http_request = HttpRequest.new(http_method, httpArguments)

  retry_handler = RetryHandler.new(http_request, @endpoint, RetrySettings.new(@number_of_retries))
  response = retry_handler.send(request)

  parser = InjectionResponseParser.new
  result = parser.parse(response)

  @response_json = result.to_json

end

#send_bulk_message(message) ⇒ SendResponse

Sends a BulkMessage message and returns the response from the Injection API.

Parameters:

  • message: (BulkMessage)

    A BulkMessage object to be sent.

Returns:



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/socketlabs/injectionapi/socketlabsclient.rb', line 125

def send_bulk_message(message)

  resp = validate_message(message)
  if resp.result != SendResult.enum["Success"]
    resp
  end

  req_factory = InjectionRequestFactory.new(@server_id, @api_key)
  request = req_factory.generate_request(message)

  # debug
  request_hash = request.to_hash
  debug_json = request_hash.to_json
  @request_json = debug_json

  http_request = HttpRequest.new(http_method, { :http_endpoint => @endpoint, :proxy => @proxy, :timeout => @request_timeout })
  retry_handler = RetryHandler.new(http_request, @endpoint, RetrySettings.new(@number_of_retries))
  response = retry_handler.send(request)

  parser = InjectionResponseParser.new
  result = parser.parse(response)

  @response_json = result.to_json

end

#to_sObject



55
56
57
# File 'lib/socketlabs/injectionapi/socketlabsclient.rb', line 55

def to_s
  "#{@endpoint}::#{@server_id}:#{@api_key}"
end

#validate_message(message) ⇒ SendResult

Validate a BulkMessage message

Parameters:

Returns:



154
155
156
157
158
159
160
161
# File 'lib/socketlabs/injectionapi/socketlabsclient.rb', line 154

def validate_message(message)
  validator = SendValidator.new
  resp = validator.validate_credentials(@server_id, @api_key)
  if resp.result != SendResult.enum["Success"]
    resp
  end
  validator.validate_message(message)
end