Class: MprofiApiClient::Connector
- Inherits:
-
Object
- Object
- MprofiApiClient::Connector
- Defined in:
- lib/mprofi_api_client/connector.rb
Overview
Connector class that manages communication with mProfi public API.
Instance Attribute Summary collapse
-
#clear_messages ⇒ Object
:nodoc:.
-
#messages ⇒ Object
readonly
Returns the value of attribute messages.
Instance Method Summary collapse
-
#add_message(recipient, message, reference = nil, options = {}) ⇒ Object
Add one message to message queue.
-
#get_status(msg_id) ⇒ Object
- Check status of message with given id
msg_id
-
message id.
- Check status of message with given id
-
#initialize(api_token = nil, proxy_url = nil) ⇒ Connector
constructor
api_token
-
api token, as string.
-
#read_timeout=(timeout) ⇒ Object
Set read timeout
timeout
- number of seconds. -
#send ⇒ Object
Send messages stored in message queue.
Constructor Details
#initialize(api_token = nil, proxy_url = nil) ⇒ Connector
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)
23 24 25 26 27 28 29 30 31 |
# 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 |
Instance Attribute Details
#clear_messages ⇒ Object
:nodoc:
19 20 21 |
# File 'lib/mprofi_api_client/connector.rb', line 19 def @clear_messages end |
#messages ⇒ Object (readonly)
Returns the value of attribute messages.
18 19 20 |
# File 'lib/mprofi_api_client/connector.rb', line 18 def @messages end |
Instance Method Details
#add_message(recipient, message, reference = nil, options = {}) ⇒ Object
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)
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/mprofi_api_client/connector.rb', line 40 def (recipient, , reference = nil, = {}) raise ArgumentError, "`recipient` cannot be empty" if recipient.nil? || recipient.empty? raise ArgumentError, "`message` cannot be empty" if .nil? || .empty? = { 'recipient' => recipient, 'message' => } ['reference'] = reference if reference ['encoding'] = [:encoding] if .key?(:encoding) ['date'] = [:date] if .key?(:date) @messages << end |
#get_status(msg_id) ⇒ Object
Check status of message with given id
msg_id
-
message id
raises
-
MprofiNotFound - if message id not found
80 81 82 83 84 85 86 87 |
# 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) ⇒ Object
Set read timeout timeout
- number of seconds
91 92 93 |
# File 'lib/mprofi_api_client/connector.rb', line 91 def read_timeout=(timeout) @read_timeout = timeout end |
#send ⇒ Object
Send messages stored in message queue.
raises
-
MprofiAuthError, MprofiNotFoundError, MprofiConnectionError
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# 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 |