class MprofiApiClient::Connector
Connector
class that manages communication with mProfi public API.
Attributes
Public Class Methods
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 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
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
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 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