class SocketLabs::InjectionApi::SocketLabsClient

Attributes

api_key[RW]

Your SocketLabs Injection API key.

endpoint[RW]

The SocketLabs Injection API endpoint Url

number_of_retries[RW]
proxy[RW]

The Proxy you would like to use.

request_json[R]
request_timeout[RW]

The SocketLabs Injection API Request Timeout

response_json[R]
server_id[RW]

Your SocketLabs ServerId number.

Public Class Methods

new( server_id, api_key, proxy= {} ) click to toggle source
# 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

Public Instance Methods

http_method() click to toggle source
# File lib/socketlabs/injectionapi/socketlabsclient.rb, line 74
def http_method
  HttpRequest.http_request_method[:Post]
end
send(message) click to toggle source

Sends a Message message and returns the response from the Injection API. @param [BasicMessage, BulkMessage] message: A Message object to be sent. @return [SendResponse] the SendResponse from the request

# 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) click to toggle source

Sends a BasicMessage message and returns the response from the Injection API. @param [BasicMessage] message: A BasicMessage object to be sent. @return [SendResponse] the SendResponse from the request

# 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

  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
  parser.parse(response)

  @response_json = parser.to_json

end
send_bulk_message(message) click to toggle source

Sends a BulkMessage message and returns the response from the Injection API. @param [BulkMessage] message: A BulkMessage object to be sent. @return [SendResponse] the SendResponse from the request

# File lib/socketlabs/injectionapi/socketlabsclient.rb, line 110
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
  parser.parse(response)

  @response_json = parser.to_json

end
to_s() click to toggle source
# File lib/socketlabs/injectionapi/socketlabsclient.rb, line 55
def to_s
  "#{@endpoint}::#{@server_id}:#{@api_key}"
end
validate_message(message) click to toggle source

Validate a BulkMessage message @param [MessageBase] message @return [SendResult]

# File lib/socketlabs/injectionapi/socketlabsclient.rb, line 139
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