class MprofiApiClient::Connector

Connector class that manages communication with mProfi public API.

Attributes

messages[R]

Public Class Methods

new(api_token = nil, proxy_url = nil) click to toggle source
api_token

api token, as string. If api_token is not specified ‘MPROFI_API_TOKEN` env variable will be used.

proxy_url

proxy URL (optional)

# File lib/mprofi_api_client/connector.rb, line 23
def initialize(api_token = nil, proxy_url = nil)
  @api_token = api_token || ENV['MPROFI_API_TOKEN']
  raise ArgumentError, "API token not defined!" unless @api_token

  @proxy_url = proxy_url
  @messages = []
  @clear_messages = true
  @read_timeout = nil
end

Public Instance Methods

add_message(recipient, message, reference = nil, options = {}) click to toggle source

Add one message to message queue.

recipient

Message recipient as string (phone number format: XXXXXXXXX f.e. 664400100).

message

Message content as string.

reference

Client message ID defined by user for message tracking. (optional)

options

Message options: encoding (default: {}): :encoding - set to ‘utf-8’ if you need special characters (diacritical marks, emoji), :date - time the message will be sent (accepted formats: ISO-8601, unix epoch)

# File lib/mprofi_api_client/connector.rb, line 40
def add_message(recipient, message, reference = nil, options = {})
  raise ArgumentError, "`recipient` cannot be empty" if recipient.nil? || recipient.empty?
  raise ArgumentError, "`message` cannot be empty" if message.nil? || message.empty?

  message = { 'recipient' =>  recipient, 'message' => message }
  message['reference'] = reference if reference
  message['encoding'] = options[:encoding] if options.key?(:encoding)
  message['date'] = options[:date] if options.key?(:date)

  @messages << message
end
get_status(msg_id) click to toggle source

Check status of message with given id

msg_id

message id

raises

MprofiNotFound - if message id not found

# File lib/mprofi_api_client/connector.rb, line 80
def get_status(msg_id)
  raise ArgumentError, '`msg_id` cannot be nil' if msg_id.nil?

  request = create_request('status', :get, "id=#{msg_id}")
  result = send_request(request)

  return result
end
read_timeout=(timeout) click to toggle source

Set read timeout timeout - number of seconds

# File lib/mprofi_api_client/connector.rb, line 91
def read_timeout=(timeout)
  @read_timeout = timeout
end
send() click to toggle source

Send messages stored in message queue.

raises

MprofiAuthError, MprofiNotFoundError, MprofiConnectionError

# File lib/mprofi_api_client/connector.rb, line 54
def send
  raise StandardError, 'Empty payload. Please use `add_message` first.' unless @messages.size > 0

  if send_bulk?
    operation = 'sendbulk'
    payload = { 'messages' => @messages }
  else
    operation = 'send'
    payload = @messages.first
  end

  request = create_request(operation, :post, payload.to_json)
  result = send_request(request)
  @messages.clear if @clear_messages

  if result.has_key?('result')
    return result['result']
  else
    return [result]
  end
end