sms77 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +6 -4
- data/.idea/.gitignore +8 -0
- data/.idea/inspectionProfiles/Project_Default.xml +6 -0
- data/.idea/modules.xml +8 -0
- data/.idea/ruby-client.iml +18 -0
- data/.idea/vcs.xml +6 -0
- data/Gemfile +2 -2
- data/LICENSE +20 -20
- data/README.md +41 -35
- data/Rakefile +5 -5
- data/doc/Sms77/Client.html +230 -0
- data/doc/Sms77/Contacts/Action.html +131 -0
- data/doc/Sms77/Contacts.html +126 -0
- data/doc/Sms77/Endpoint.html +187 -0
- data/doc/Sms77/Hooks/Action.html +131 -0
- data/doc/Sms77/Hooks/EventType.html +146 -0
- data/doc/Sms77/Hooks/RequestMethod.html +131 -0
- data/doc/Sms77/Hooks/Validator.html +598 -0
- data/doc/Sms77/Hooks.html +126 -0
- data/doc/Sms77/Journal/Type.html +136 -0
- data/doc/Sms77/Journal/Validator.html +394 -0
- data/doc/Sms77/Journal.html +126 -0
- data/doc/Sms77/Lookup/Type.html +136 -0
- data/doc/Sms77/Lookup.html +126 -0
- data/doc/Sms77/Resource.html +870 -0
- data/doc/Sms77/Resources/Analytics.html +263 -0
- data/doc/Sms77/Resources/Balance.html +246 -0
- data/doc/Sms77/Resources/Contacts.html +449 -0
- data/doc/Sms77/Resources/Hooks.html +457 -0
- data/doc/Sms77/Resources/Journal.html +261 -0
- data/doc/Sms77/Resources/Lookup.html +540 -0
- data/doc/Sms77/Resources/Pricing.html +263 -0
- data/doc/Sms77/Resources/Sms.html +261 -0
- data/doc/Sms77/Resources/Status.html +261 -0
- data/doc/Sms77/Resources/Subaccounts.html +651 -0
- data/doc/Sms77/Resources/ValidateForVoice.html +261 -0
- data/doc/Sms77/Resources/Voice.html +261 -0
- data/doc/Sms77/Resources.html +128 -0
- data/doc/Sms77/Sms/Type.html +126 -0
- data/doc/Sms77/Sms.html +126 -0
- data/doc/Sms77/Subaccounts/Action.html +141 -0
- data/doc/Sms77/Subaccounts/Validator.html +490 -0
- data/doc/Sms77/Subaccounts.html +126 -0
- data/doc/Sms77/Util.html +1033 -0
- data/doc/Sms77.html +146 -0
- data/doc/_index.html +444 -0
- data/doc/class_list.html +51 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +58 -0
- data/doc/css/style.css +497 -0
- data/doc/file.README.html +112 -0
- data/doc/file_list.html +56 -0
- data/doc/frames.html +17 -0
- data/doc/index.html +112 -0
- data/doc/js/app.js +314 -0
- data/doc/js/full_list.js +216 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +563 -0
- data/doc/top-level-namespace.html +110 -0
- data/lib/sms77/client.rb +30 -29
- data/lib/sms77/contacts.rb +10 -9
- data/lib/sms77/endpoint.rb +17 -15
- data/lib/sms77/hooks.rb +67 -64
- data/lib/sms77/journal.rb +39 -38
- data/lib/sms77/lookup.rb +11 -10
- data/lib/sms77/resource.rb +94 -93
- data/lib/sms77/resources/analytics.rb +21 -16
- data/lib/sms77/resources/balance.rb +19 -15
- data/lib/sms77/resources/contacts.rb +38 -25
- data/lib/sms77/resources/hooks.rb +40 -29
- data/lib/sms77/resources/journal.rb +20 -15
- data/lib/sms77/resources/lookup.rb +47 -29
- data/lib/sms77/resources/pricing.rb +20 -15
- data/lib/sms77/resources/sms.rb +20 -15
- data/lib/sms77/resources/status.rb +20 -15
- data/lib/sms77/resources/subaccounts.rb +66 -0
- data/lib/sms77/resources/validate_for_voice.rb +20 -15
- data/lib/sms77/resources/voice.rb +20 -15
- data/lib/sms77/sms.rb +9 -8
- data/lib/sms77/subaccounts.rb +55 -0
- data/lib/sms77/util.rb +68 -67
- data/lib/sms77/version.rb +5 -5
- data/lib/sms77.rb +6 -6
- data/release.sh +4 -7
- data/sms77.gemspec +21 -21
- data/spec/EnvKeyStore.rb +14 -14
- data/spec/matchers.rb +22 -22
- data/spec/sms77/balance_spec.rb +12 -12
- data/spec/sms77/client_spec.rb +15 -15
- data/spec/sms77/contacts_spec.rb +129 -116
- data/spec/sms77/hooks_spec.rb +108 -105
- data/spec/sms77/instance_spec.rb +22 -20
- data/spec/sms77/journal_spec.rb +86 -86
- data/spec/sms77/lookup_spec.rb +179 -179
- data/spec/sms77/pricing_spec.rb +76 -76
- data/spec/sms77/sms_spec.rb +103 -103
- data/spec/sms77/subaccounts_spec.rb +121 -0
- data/spec/sms77/validate_for_voice_spec.rb +19 -19
- data/spec/sms77/voice_spec.rb +51 -51
- data/spec/sms77_spec.rb +9 -7
- data/spec/spec_helper.rb +53 -53
- metadata +75 -17
data/lib/sms77/client.rb
CHANGED
@@ -1,29 +1,30 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'sms77/resources/analytics'
|
4
|
-
require 'sms77/resources/balance'
|
5
|
-
require 'sms77/resources/contacts'
|
6
|
-
require 'sms77/resources/hooks'
|
7
|
-
require 'sms77/resources/journal'
|
8
|
-
require 'sms77/resources/lookup'
|
9
|
-
require 'sms77/resources/pricing'
|
10
|
-
require 'sms77/resources/sms'
|
11
|
-
require 'sms77/resources/status'
|
12
|
-
require 'sms77/resources/
|
13
|
-
require 'sms77/resources/
|
14
|
-
require 'sms77/
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'sms77/resources/analytics'
|
4
|
+
require 'sms77/resources/balance'
|
5
|
+
require 'sms77/resources/contacts'
|
6
|
+
require 'sms77/resources/hooks'
|
7
|
+
require 'sms77/resources/journal'
|
8
|
+
require 'sms77/resources/lookup'
|
9
|
+
require 'sms77/resources/pricing'
|
10
|
+
require 'sms77/resources/sms'
|
11
|
+
require 'sms77/resources/status'
|
12
|
+
require 'sms77/resources/subaccounts'
|
13
|
+
require 'sms77/resources/validate_for_voice'
|
14
|
+
require 'sms77/resources/voice'
|
15
|
+
require 'sms77/util'
|
16
|
+
|
17
|
+
module Sms77
|
18
|
+
class Client
|
19
|
+
# @param resource [Sms77::Resource]
|
20
|
+
def initialize(resource)
|
21
|
+
Sms77::Util::get_namespace_classes(Sms77::Resources).each do |cls|
|
22
|
+
name = cls.name.split('::').last
|
23
|
+
|
24
|
+
instance_variable_set("@#{name}", cls.new(resource))
|
25
|
+
|
26
|
+
singleton_class.instance_eval("attr_reader :#{name}")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/sms77/contacts.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This module holds all utilities related to the /contacts endpoint.
|
4
|
+
module Sms77::Contacts
|
5
|
+
module Action
|
6
|
+
DEL = 'del'
|
7
|
+
READ = 'read'
|
8
|
+
WRITE = 'write'
|
9
|
+
end
|
10
|
+
end
|
data/lib/sms77/endpoint.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This module exposes the endpoints covered by this client.
|
4
|
+
module Sms77::Endpoint
|
5
|
+
ANALYTICS = 'analytics'
|
6
|
+
BALANCE = 'balance'
|
7
|
+
CONTACTS = 'contacts'
|
8
|
+
HOOKS = 'hooks'
|
9
|
+
JOURNAL = 'journal'
|
10
|
+
LOOKUP = 'lookup'
|
11
|
+
PRICING = 'pricing'
|
12
|
+
SMS = 'sms'
|
13
|
+
STATUS = 'status'
|
14
|
+
SUBACCOUNTS = 'subaccounts'
|
15
|
+
VALIDATE_FOR_VOICE = 'validate_for_voice'
|
16
|
+
VOICE = 'voice'
|
17
|
+
end
|
data/lib/sms77/hooks.rb
CHANGED
@@ -1,64 +1,67 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This module holds all utilities related to the /hooks endpoint.
|
4
|
+
module Sms77::Hooks
|
5
|
+
module Action
|
6
|
+
READ = 'read'
|
7
|
+
SUBSCRIBE = 'subscribe'
|
8
|
+
UNSUBSCRIBE = 'unsubscribe'
|
9
|
+
end
|
10
|
+
|
11
|
+
module EventType
|
12
|
+
ALL = 'all'
|
13
|
+
NEW_INBOUND_SMS = 'sms_mo'
|
14
|
+
SMS_STATUS_UPDATE = 'dlr'
|
15
|
+
TRACKING = 'tracking'
|
16
|
+
VOICE_CALL = 'voice_call'
|
17
|
+
VOICE_STATUS_UPDATE = 'voice_status'
|
18
|
+
end
|
19
|
+
|
20
|
+
module RequestMethod
|
21
|
+
GET = 'GET'
|
22
|
+
JSON = 'JSON'
|
23
|
+
POST = 'POST'
|
24
|
+
end
|
25
|
+
|
26
|
+
module Validator
|
27
|
+
def self.validate(params)
|
28
|
+
action = params[:action]
|
29
|
+
|
30
|
+
raise "Unknown action #{action}" unless Sms77::Hooks::Validator::is_action?(action)
|
31
|
+
|
32
|
+
if Sms77::Hooks::Action::SUBSCRIBE == action
|
33
|
+
raise 'Parameter validation failed' unless Sms77::Hooks::Validator::subscribe(params)
|
34
|
+
elsif Sms77::Hooks::Action::UNSUBSCRIBE == action
|
35
|
+
raise 'ID must be a positive integer' unless Sms77::Hooks::Validator::unsubscribe(params)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.subscribe(params)
|
40
|
+
{ :request_method => Sms77::Hooks::RequestMethod::POST }.merge!(params)
|
41
|
+
|
42
|
+
self.event_type?(params[:event_type]) &&
|
43
|
+
self.request_method?(params[:request_method]) &&
|
44
|
+
self.target_url?(params[:target_url])
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.unsubscribe(params)
|
48
|
+
Sms77::Util::is_positive_integer?(params[:id])
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.is_action?(str)
|
52
|
+
Sms77::Util::in_module_constants?(str, Sms77::Hooks::Action)
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.event_type?(str)
|
56
|
+
Sms77::Util::in_module_constants?(str, Sms77::Hooks::EventType)
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.request_method?(str)
|
60
|
+
Sms77::Util::in_module_constants?(str, Sms77::Hooks::RequestMethod)
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.target_url?(str)
|
64
|
+
Sms77::Util::is_valid_url?(str)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/sms77/journal.rb
CHANGED
@@ -1,38 +1,39 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
raise "
|
19
|
-
raise "Wrong
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
self.
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This module holds all utilities related to the /journal endpoint.
|
4
|
+
module Sms77::Journal
|
5
|
+
module Type
|
6
|
+
INBOUND = 'inbound'
|
7
|
+
OUTBOUND = 'outbound'
|
8
|
+
REPLIES = 'replies'
|
9
|
+
VOICE = 'voice'
|
10
|
+
end
|
11
|
+
|
12
|
+
module Validator
|
13
|
+
def self.validate(params)
|
14
|
+
type = params[:type]
|
15
|
+
date_from = params[:date_from]
|
16
|
+
date_to = params[:date_to]
|
17
|
+
|
18
|
+
raise "Unknown type #{type}" unless Sms77::Journal::Validator::is_type?(type)
|
19
|
+
raise "Wrong date_from #{date_from}" unless Sms77::Journal::Validator::is_date?(date_from)
|
20
|
+
raise "Wrong date_to #{date_to}" unless Sms77::Journal::Validator::is_date?(date_to)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.subscribe(params)
|
24
|
+
{ :request_method => Sms77::Hooks::RequestMethod::POST }.merge!(params)
|
25
|
+
|
26
|
+
self.event_type?(params[:event_type]) &&
|
27
|
+
self.request_method?(params[:request_method]) &&
|
28
|
+
self.target_url?(params[:target_url])
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.is_type?(str)
|
32
|
+
Sms77::Util::in_module_constants?(str, Sms77::Journal::Type)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.is_date?(date)
|
36
|
+
date.is_a?(NilClass) || date.match(/[\d]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][\d]|3[0-1])/)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/sms77/lookup.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This module holds all utilities related to the /lookup endpoint.
|
4
|
+
module Sms77::Lookup
|
5
|
+
module Type
|
6
|
+
CNAM = 'cnam'
|
7
|
+
FORMAT = 'format'
|
8
|
+
HLR = 'hlr'
|
9
|
+
MNP = 'mnp'
|
10
|
+
end
|
11
|
+
end
|
data/lib/sms77/resource.rb
CHANGED
@@ -1,93 +1,94 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'cgi'
|
4
|
-
require 'json'
|
5
|
-
require 'faraday'
|
6
|
-
require 'sms77/endpoint'
|
7
|
-
|
8
|
-
module
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
raise 'missing
|
17
|
-
|
18
|
-
|
19
|
-
@
|
20
|
-
@
|
21
|
-
@
|
22
|
-
@
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
:
|
59
|
-
:
|
60
|
-
:
|
61
|
-
:
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cgi'
|
4
|
+
require 'json'
|
5
|
+
require 'faraday'
|
6
|
+
require 'sms77/endpoint'
|
7
|
+
|
8
|
+
# This module exposes a HTTP client for communication with the API.
|
9
|
+
module Sms77
|
10
|
+
class Resource
|
11
|
+
attr_reader :api_key, :endpoint, :sent_with, :http_methods, :request_methods, :builder, :conn
|
12
|
+
|
13
|
+
BASE_PATH = '/api/'
|
14
|
+
|
15
|
+
def initialize(api_key, sent_with = 'ruby')
|
16
|
+
raise 'missing api_key in config' if api_key.to_s.empty?
|
17
|
+
raise 'missing sent_with in config' if sent_with.to_s.empty?
|
18
|
+
|
19
|
+
@api_key = api_key
|
20
|
+
@sent_with = sent_with
|
21
|
+
@endpoint = self.class.get_endpoint
|
22
|
+
@http_methods = self.class.get_http_methods
|
23
|
+
@conn = Faraday.new("https://gateway.sms77.io#{BASE_PATH}")
|
24
|
+
end
|
25
|
+
|
26
|
+
protected
|
27
|
+
|
28
|
+
def request(payload = {}, query = {})
|
29
|
+
path = @endpoint
|
30
|
+
http_method = @http_methods[caller_locations.first.label.to_sym]
|
31
|
+
|
32
|
+
if :get == http_method
|
33
|
+
query = payload
|
34
|
+
|
35
|
+
payload = {}
|
36
|
+
end
|
37
|
+
|
38
|
+
query.each do |key, val|
|
39
|
+
query.store(key, Sms77::Util::to_numbered_bool(val))
|
40
|
+
end
|
41
|
+
|
42
|
+
payload.each do |key, val|
|
43
|
+
payload.store(key, Sms77::Util::to_numbered_bool(val))
|
44
|
+
end
|
45
|
+
|
46
|
+
unless query.empty?
|
47
|
+
path = "#{path}?#{URI.encode_www_form(query)}"
|
48
|
+
end
|
49
|
+
|
50
|
+
headers = Hash[
|
51
|
+
Faraday::Request::Authorization::KEY, "Bearer #{@api_key}",
|
52
|
+
'sentWith', @sent_with
|
53
|
+
]
|
54
|
+
|
55
|
+
res = @conn.run_request(http_method, path, payload, headers)
|
56
|
+
|
57
|
+
puts JSON.pretty_generate(res.to_hash.merge({
|
58
|
+
:method => http_method,
|
59
|
+
:path => path,
|
60
|
+
:payload => payload,
|
61
|
+
:req_headers => headers,
|
62
|
+
:query => query,
|
63
|
+
}).compact) if ENV['SMS77_DEBUG']
|
64
|
+
|
65
|
+
raise "Error requesting (#{self.class.name}) with code #{res.status}" unless 200 == res.status
|
66
|
+
|
67
|
+
raise 'Unexpected response' unless res.is_a?(Faraday::Response)
|
68
|
+
|
69
|
+
body = res.body
|
70
|
+
|
71
|
+
if body.is_a?(String)
|
72
|
+
begin
|
73
|
+
body = JSON.parse(body, :symbolize_names => true)
|
74
|
+
rescue StandardError
|
75
|
+
# Ignored
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
body.map! { |hash| hash.transform_keys(&:to_sym) } if body.is_a?(Array)
|
80
|
+
|
81
|
+
body
|
82
|
+
end
|
83
|
+
|
84
|
+
class << self
|
85
|
+
def get_http_methods
|
86
|
+
@http_methods
|
87
|
+
end
|
88
|
+
|
89
|
+
def get_endpoint
|
90
|
+
@endpoint
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -1,16 +1,21 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'sms77/resource'
|
4
|
-
|
5
|
-
module
|
6
|
-
|
7
|
-
|
8
|
-
@
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'sms77/resource'
|
4
|
+
|
5
|
+
# This module exposes the methods for communicating with the API endpoint /analytics.
|
6
|
+
module Sms77::Resources
|
7
|
+
class Analytics < Sms77::Resource
|
8
|
+
@endpoint = Sms77::Endpoint::ANALYTICS
|
9
|
+
@http_methods = {
|
10
|
+
:retrieve => :get,
|
11
|
+
}
|
12
|
+
|
13
|
+
# Retrieve analytics for associated API key
|
14
|
+
# read more: https://www.sms77.io/en/docs/gateway/http-api/analytics/
|
15
|
+
# @param params [Hash]
|
16
|
+
# @return [Array]
|
17
|
+
def retrieve(params = {})
|
18
|
+
request(params)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,16 +1,20 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'sms77/resource'
|
4
|
-
|
5
|
-
module
|
6
|
-
|
7
|
-
|
8
|
-
@
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'sms77/resource'
|
4
|
+
|
5
|
+
# This module exposes the methods for communicating with the API endpoint /balance.
|
6
|
+
module Sms77::Resources
|
7
|
+
class Balance < Sms77::Resource
|
8
|
+
@endpoint = Sms77::Endpoint::BALANCE
|
9
|
+
@http_methods = {
|
10
|
+
:retrieve => :get,
|
11
|
+
}
|
12
|
+
|
13
|
+
# Retrieve account balance for associated API key
|
14
|
+
# read more: https://www.sms77.io/en/docs/gateway/http-api/credit-balance/
|
15
|
+
# @return [Float]
|
16
|
+
def retrieve
|
17
|
+
request
|
18
|
+
end
|
19
|
+
end
|
16
20
|
end
|