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
|