Class: MprofiApiClient::Connector

Inherits:
Object
  • Object
show all
Defined in:
lib/mprofi_api_client/connector.rb

Overview

Connector class that manages communication with mProfi public API.

Instance Attribute Summary collapse

Instance Method Summary collapse

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)

Raises:

  • (ArgumentError)


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_messagesObject

:nodoc:



19
20
21
# File 'lib/mprofi_api_client/connector.rb', line 19

def clear_messages
  @clear_messages
end

#messagesObject (readonly)

Returns the value of attribute messages.



18
19
20
# File 'lib/mprofi_api_client/connector.rb', line 18

def messages
  @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)

Raises:

  • (ArgumentError)


36
37
38
39
40
41
42
43
44
# File 'lib/mprofi_api_client/connector.rb', line 36

def add_message(recipient, message, reference = nil)
  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

  @messages << message
end

#get_status(msg_id) ⇒ Object

Check status of message with given id

msg_id

message id

raises

MprofiNotFound - if message id not found

Raises:

  • (ArgumentError)


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

#sendObject

Send messages stored in message queue.

raises

MprofiAuthError, MprofiNotFoundError, MprofiConnectionError

Raises:

  • (StandardError)


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