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