class SocketLabs::InjectionApi::SocketLabsClient
Attributes
Your SocketLabs
Injection API key.
The SocketLabs
Injection API endpoint Url
The Proxy
you would like to use.
The SocketLabs
Injection API Request Timeout
Your SocketLabs
ServerId number.
Public Class Methods
# 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
# File lib/socketlabs/injectionapi/socketlabsclient.rb, line 74 def http_method HttpRequest.http_request_method[:Post] end
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
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
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
# File lib/socketlabs/injectionapi/socketlabsclient.rb, line 55 def to_s "#{@endpoint}::#{@server_id}:#{@api_key}" end
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