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) ⇒ 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.
-
#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 |
# 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 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) ⇒ 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)
36 37 38 39 40 41 42 43 44 |
# File 'lib/mprofi_api_client/connector.rb', line 36 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 @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
74 75 76 77 78 79 80 81 |
# File 'lib/mprofi_api_client/connector.rb', line 74 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 |
#send ⇒ Object
Send messages stored in message queue.
raises
-
MprofiAuthError, MprofiNotFoundError, MprofiConnectionError
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/mprofi_api_client/connector.rb', line 48 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 |