Class: MpesaStk::IoT

Inherits:
Client show all
Defined in:
lib/mpesa_stk/iot.rb

Overview

IoT SIM management and messaging via Safaricom SIM portal API.

Constant Summary

Constants inherited from Client

Client::AUTH_KEYS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Client

extract_auth_options, #json_headers, #option, #optional_option, #post, #random_reference, #stk_password, #stk_timestamp, #token

Constructor Details

#initialize(key: nil, secret: nil, api_key: nil, vpn_group: nil, username: nil, **options) ⇒ IoT

Returns a new instance of IoT.



28
29
30
31
32
33
# File 'lib/mpesa_stk/iot.rb', line 28

def initialize(key: nil, secret: nil, api_key: nil, vpn_group: nil, username: nil, **options)
  super(key: key, secret: secret, **options)
  @api_key = Config.env('iot_api_key', api_key) || 'Yl4S3KEcr173mbeUdYdjf147IuG3rJ824ArMkP6Z'
  @vpn_group = Config.env('vpn_group', vpn_group) || ''
  @username = Config.env('username', username) || ''
end

Instance Attribute Details

#api_keyObject (readonly)

Returns the value of attribute api_key.



26
27
28
# File 'lib/mpesa_stk/iot.rb', line 26

def api_key
  @api_key
end

#usernameObject (readonly)

Returns the value of attribute username.



26
27
28
# File 'lib/mpesa_stk/iot.rb', line 26

def username
  @username
end

#vpn_groupObject (readonly)

Returns the value of attribute vpn_group.



26
27
28
# File 'lib/mpesa_stk/iot.rb', line 26

def vpn_group
  @vpn_group
end

Class Method Details

.call(action, *args, **options) ⇒ Object



10
11
12
# File 'lib/mpesa_stk/iot.rb', line 10

def call(action, *args, **options)
  new(**options).public_send(action, *args)
end

.list_sims(**options) ⇒ Object



14
15
16
17
18
19
# File 'lib/mpesa_stk/iot.rb', line 14

def list_sims(**options)
  new(**options).get_all_sims(
    start_at_index: options.fetch(:start_at_index, 0),
    page_size: options.fetch(:page_size, 10)
  )
end

.send_message(msisdn, message, **options) ⇒ Object



21
22
23
# File 'lib/mpesa_stk/iot.rb', line 21

def send_message(msisdn, message, **options)
  new(**options).send_single_message(msisdn, message)
end

Instance Method Details

#delete_message(message_id) ⇒ Object



119
120
121
# File 'lib/mpesa_stk/iot.rb', line 119

def delete_message(message_id)
  post_request('/deletemessage', { id: message_id, vpnGroup: vpn_group, username: username })
end

#delete_message_thread(msisdn) ⇒ Object



123
124
125
# File 'lib/mpesa_stk/iot.rb', line 123

def delete_message_thread(msisdn)
  post_request('/deleteMessageThread', { msisdn: msisdn, vpnGroup: vpn_group, username: username })
end

#filter_messages(start_date:, end_date:, status: '', page_no: 1, page_size: 10) ⇒ Object



100
101
102
103
104
105
106
107
108
# File 'lib/mpesa_stk/iot.rb', line 100

def filter_messages(start_date:, end_date:, status: '', page_no: 1, page_size: 10)
  get_request("/filtermessages?pageNo=#{page_no}&pageSize=#{page_size}", {
                startDate: start_date,
                endDate: end_date,
                status: status,
                vpnGroup: vpn_group,
                username: username
              })
end


56
57
58
59
60
61
62
63
# File 'lib/mpesa_stk/iot.rb', line 56

def get_activation_trends(start_date:, stop_date:)
  post_request('/getactivationtrends', {
                 vpnGroup: vpn_group,
                 startDate: start_date,
                 stopDate: stop_date,
                 username: username
               })
end

#get_all_messages(page_no: 1, page_size: 10) ⇒ Object



88
89
90
# File 'lib/mpesa_stk/iot.rb', line 88

def get_all_messages(page_no: 1, page_size: 10)
  get_request("/getallmessages?pageNo=#{page_no}&pageSize=#{page_size}", { vpnGroup: vpn_group })
end

#get_all_sims(start_at_index: 0, page_size: 10) ⇒ Object



35
36
37
38
39
40
41
42
# File 'lib/mpesa_stk/iot.rb', line 35

def get_all_sims(start_at_index: 0, page_size: 10)
  post_request('/allsims', {
                 vpnGroup: [vpn_group],
                 startAtIndex: start_at_index.to_s,
                 pageSize: page_size.to_s,
                 username: username
               })
end

#get_location_info(msisdn) ⇒ Object



74
75
76
# File 'lib/mpesa_stk/iot.rb', line 74

def get_location_info(msisdn)
  post_request('/getlocationinfo', { msisdn: msisdn, vpnGroup: vpn_group, username: username })
end

#query_customer_info(msisdn) ⇒ Object



48
49
50
# File 'lib/mpesa_stk/iot.rb', line 48

def query_customer_info(msisdn)
  post_request('/querycustomerinfo', { msisdn: msisdn, vpnGroup: vpn_group, username: username })
end

#query_lifecycle_status(msisdn) ⇒ Object



44
45
46
# File 'lib/mpesa_stk/iot.rb', line 44

def query_lifecycle_status(msisdn)
  post_request('/queryLifeCycleStatus', { msisdn: msisdn, vpnGroup: vpn_group, username: username })
end

#rename_asset(msisdn, asset_name) ⇒ Object



65
66
67
68
69
70
71
72
# File 'lib/mpesa_stk/iot.rb', line 65

def rename_asset(msisdn, asset_name)
  post_request('/renameasset', {
                 msisdn: msisdn,
                 vpnGroup: vpn_group,
                 username: username,
                 assetName: asset_name
               })
end

#search_messages(search_value, page_no: 1, page_size: 5) ⇒ Object



92
93
94
95
96
97
98
# File 'lib/mpesa_stk/iot.rb', line 92

def search_messages(search_value, page_no: 1, page_size: 5)
  get_request("/searchmessages?pageNo=#{page_no}&pageSize=#{page_size}", {
                searchValue: search_value,
                vpnGroup: vpn_group,
                username: username
              })
end

#send_single_message(msisdn, message) ⇒ Object



110
111
112
113
114
115
116
117
# File 'lib/mpesa_stk/iot.rb', line 110

def send_single_message(msisdn, message)
  post_request('/sendsinglemessage', {
                 msisdn: msisdn,
                 message: message,
                 vpnGroup: vpn_group,
                 username: username
               })
end

#sim_activation(msisdn) ⇒ Object



52
53
54
# File 'lib/mpesa_stk/iot.rb', line 52

def sim_activation(msisdn)
  post_request('/simactivation', { msisdn: msisdn, vpnGroup: vpn_group, username: username })
end

#suspend_unsuspend_sub(msisdn, product, operation) ⇒ Object



78
79
80
81
82
83
84
85
86
# File 'lib/mpesa_stk/iot.rb', line 78

def suspend_unsuspend_sub(msisdn, product, operation)
  post_request('/suspend_unsuspend_sub', {
                 msisdn: msisdn,
                 username: username,
                 vpnGroup: vpn_group,
                 product: product,
                 operation: operation
               })
end