moceansdk 1.0.0 → 1.0.1
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/LICENSE.txt +21 -21
- data/README.md +74 -74
- data/lib/moceansdk.rb +27 -27
- data/lib/moceansdk/auth/abstract_auth.rb +15 -15
- data/lib/moceansdk/auth/basic.rb +29 -29
- data/lib/moceansdk/client.rb +62 -62
- data/lib/moceansdk/exceptions/mocean_error.rb +18 -18
- data/lib/moceansdk/exceptions/required_field_exception.rb +8 -8
- data/lib/moceansdk/modules/abstact_client.rb +53 -53
- data/lib/moceansdk/modules/account/balance.rb +26 -26
- data/lib/moceansdk/modules/account/pricing.rb +37 -37
- data/lib/moceansdk/modules/message/channel.rb +11 -11
- data/lib/moceansdk/modules/message/message_status.rb +29 -29
- data/lib/moceansdk/modules/message/sms.rb +74 -74
- data/lib/moceansdk/modules/message/verify_request.rb +81 -81
- data/lib/moceansdk/modules/message/verify_validate.rb +33 -33
- data/lib/moceansdk/modules/number_lookup/number_lookup.rb +34 -34
- data/lib/moceansdk/modules/response_factory.rb +49 -49
- data/lib/moceansdk/modules/transmitter.rb +91 -91
- data/lib/moceansdk/utils.rb +9 -9
- data/lib/moceansdk/version.rb +3 -3
- data/moceansdk.gemspec +26 -25
- metadata +27 -7
@@ -1,82 +1,82 @@
|
|
1
|
-
module Moceansdk
|
2
|
-
module Modules
|
3
|
-
module Message
|
4
|
-
|
5
|
-
class VerifyRequest < Moceansdk::Modules::AbstractClient
|
6
|
-
attr_reader :channel, :is_resend
|
7
|
-
|
8
|
-
def initialize(obj_auth, transmitter)
|
9
|
-
super(obj_auth, transmitter)
|
10
|
-
@required_fields = ['mocean-api-key', 'mocean-api-secret', 'mocean-to', 'mocean-brand']
|
11
|
-
@channel = Channel::AUTO
|
12
|
-
@is_resend = false
|
13
|
-
end
|
14
|
-
|
15
|
-
def to=(param)
|
16
|
-
@params['mocean-to'] = param
|
17
|
-
end
|
18
|
-
|
19
|
-
def brand=(param)
|
20
|
-
@params['mocean-brand'] = param
|
21
|
-
end
|
22
|
-
|
23
|
-
def from=(param)
|
24
|
-
@params['mocean-from'] = param
|
25
|
-
end
|
26
|
-
|
27
|
-
def code_length=(param)
|
28
|
-
@params['mocean-code-length'] = param
|
29
|
-
end
|
30
|
-
|
31
|
-
def template=(param)
|
32
|
-
@params['mocean-template'] = param
|
33
|
-
end
|
34
|
-
|
35
|
-
def pin_validity=(param)
|
36
|
-
@params['mocean-pin-validity'] = param
|
37
|
-
end
|
38
|
-
|
39
|
-
def next_event_wait=(param)
|
40
|
-
@params['mocean-next-event-wait'] = param
|
41
|
-
end
|
42
|
-
|
43
|
-
def resp_format=(param)
|
44
|
-
@params['mocean-resp-format'] = param
|
45
|
-
end
|
46
|
-
|
47
|
-
def send_as(channel)
|
48
|
-
@channel = channel
|
49
|
-
self
|
50
|
-
end
|
51
|
-
|
52
|
-
def send(params = {})
|
53
|
-
create(params)
|
54
|
-
create_final_params
|
55
|
-
required_field_set?
|
56
|
-
|
57
|
-
verify_request_url = '/verify'
|
58
|
-
verify_request_url += if @is_resend
|
59
|
-
'/resend'
|
60
|
-
else
|
61
|
-
'/req'
|
62
|
-
end
|
63
|
-
|
64
|
-
if @channel == Channel::SMS
|
65
|
-
verify_request_url += '/sms'
|
66
|
-
end
|
67
|
-
|
68
|
-
@transmitter.post(verify_request_url, @params)
|
69
|
-
end
|
70
|
-
|
71
|
-
def resend(params = {})
|
72
|
-
send_as Channel::SMS
|
73
|
-
@is_resend = true
|
74
|
-
@required_fields = ['mocean-api-key', 'mocean-api-secret', 'mocean-reqid']
|
75
|
-
|
76
|
-
send(params)
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
end
|
81
|
-
end
|
1
|
+
module Moceansdk
|
2
|
+
module Modules
|
3
|
+
module Message
|
4
|
+
|
5
|
+
class VerifyRequest < Moceansdk::Modules::AbstractClient
|
6
|
+
attr_reader :channel, :is_resend
|
7
|
+
|
8
|
+
def initialize(obj_auth, transmitter)
|
9
|
+
super(obj_auth, transmitter)
|
10
|
+
@required_fields = ['mocean-api-key', 'mocean-api-secret', 'mocean-to', 'mocean-brand']
|
11
|
+
@channel = Channel::AUTO
|
12
|
+
@is_resend = false
|
13
|
+
end
|
14
|
+
|
15
|
+
def to=(param)
|
16
|
+
@params['mocean-to'] = param
|
17
|
+
end
|
18
|
+
|
19
|
+
def brand=(param)
|
20
|
+
@params['mocean-brand'] = param
|
21
|
+
end
|
22
|
+
|
23
|
+
def from=(param)
|
24
|
+
@params['mocean-from'] = param
|
25
|
+
end
|
26
|
+
|
27
|
+
def code_length=(param)
|
28
|
+
@params['mocean-code-length'] = param
|
29
|
+
end
|
30
|
+
|
31
|
+
def template=(param)
|
32
|
+
@params['mocean-template'] = param
|
33
|
+
end
|
34
|
+
|
35
|
+
def pin_validity=(param)
|
36
|
+
@params['mocean-pin-validity'] = param
|
37
|
+
end
|
38
|
+
|
39
|
+
def next_event_wait=(param)
|
40
|
+
@params['mocean-next-event-wait'] = param
|
41
|
+
end
|
42
|
+
|
43
|
+
def resp_format=(param)
|
44
|
+
@params['mocean-resp-format'] = param
|
45
|
+
end
|
46
|
+
|
47
|
+
def send_as(channel)
|
48
|
+
@channel = channel
|
49
|
+
self
|
50
|
+
end
|
51
|
+
|
52
|
+
def send(params = {})
|
53
|
+
create(params)
|
54
|
+
create_final_params
|
55
|
+
required_field_set?
|
56
|
+
|
57
|
+
verify_request_url = '/verify'
|
58
|
+
verify_request_url += if @is_resend
|
59
|
+
'/resend'
|
60
|
+
else
|
61
|
+
'/req'
|
62
|
+
end
|
63
|
+
|
64
|
+
if @channel == Channel::SMS
|
65
|
+
verify_request_url += '/sms'
|
66
|
+
end
|
67
|
+
|
68
|
+
@transmitter.post(verify_request_url, @params)
|
69
|
+
end
|
70
|
+
|
71
|
+
def resend(params = {})
|
72
|
+
send_as Channel::SMS
|
73
|
+
@is_resend = true
|
74
|
+
@required_fields = ['mocean-api-key', 'mocean-api-secret', 'mocean-reqid']
|
75
|
+
|
76
|
+
send(params)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
82
82
|
end
|
@@ -1,34 +1,34 @@
|
|
1
|
-
module Moceansdk
|
2
|
-
module Modules
|
3
|
-
module Message
|
4
|
-
|
5
|
-
class VerifyValidate < Moceansdk::Modules::AbstractClient
|
6
|
-
def initialize(obj_auth, transmitter)
|
7
|
-
super(obj_auth, transmitter)
|
8
|
-
@required_fields = ['mocean-api-key', 'mocean-api-secret', 'mocean-reqid', 'mocean-code']
|
9
|
-
end
|
10
|
-
|
11
|
-
def reqid=(param)
|
12
|
-
@params['mocean-reqid'] = param
|
13
|
-
end
|
14
|
-
|
15
|
-
def code=(param)
|
16
|
-
@params['mocean-code'] = param
|
17
|
-
end
|
18
|
-
|
19
|
-
def resp_format=(param)
|
20
|
-
@params['mocean-resp-format'] = param
|
21
|
-
end
|
22
|
-
|
23
|
-
def send(params = {})
|
24
|
-
create(params)
|
25
|
-
create_final_params
|
26
|
-
required_field_set?
|
27
|
-
|
28
|
-
@transmitter.post('/verify/check', @params)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
end
|
1
|
+
module Moceansdk
|
2
|
+
module Modules
|
3
|
+
module Message
|
4
|
+
|
5
|
+
class VerifyValidate < Moceansdk::Modules::AbstractClient
|
6
|
+
def initialize(obj_auth, transmitter)
|
7
|
+
super(obj_auth, transmitter)
|
8
|
+
@required_fields = ['mocean-api-key', 'mocean-api-secret', 'mocean-reqid', 'mocean-code']
|
9
|
+
end
|
10
|
+
|
11
|
+
def reqid=(param)
|
12
|
+
@params['mocean-reqid'] = param
|
13
|
+
end
|
14
|
+
|
15
|
+
def code=(param)
|
16
|
+
@params['mocean-code'] = param
|
17
|
+
end
|
18
|
+
|
19
|
+
def resp_format=(param)
|
20
|
+
@params['mocean-resp-format'] = param
|
21
|
+
end
|
22
|
+
|
23
|
+
def send(params = {})
|
24
|
+
create(params)
|
25
|
+
create_final_params
|
26
|
+
required_field_set?
|
27
|
+
|
28
|
+
@transmitter.post('/verify/check', @params)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
34
|
end
|
@@ -1,34 +1,34 @@
|
|
1
|
-
module Moceansdk
|
2
|
-
module Modules
|
3
|
-
module NumberLookup
|
4
|
-
|
5
|
-
class NumberLookup < Moceansdk::Modules::AbstractClient
|
6
|
-
def initialize(obj_auth, transmitter)
|
7
|
-
super(obj_auth, transmitter)
|
8
|
-
@required_fields = ['mocean-api-key', 'mocean-api-secret', 'mocean-to']
|
9
|
-
end
|
10
|
-
|
11
|
-
def to=(param)
|
12
|
-
@params['mocean-to'] = param
|
13
|
-
end
|
14
|
-
|
15
|
-
def nl_url=(param)
|
16
|
-
@params['mocean-nl-url'] = param
|
17
|
-
end
|
18
|
-
|
19
|
-
def resp_format=(param)
|
20
|
-
@params['mocean-resp-format'] = param
|
21
|
-
end
|
22
|
-
|
23
|
-
def inquiry(params = {})
|
24
|
-
create(params)
|
25
|
-
create_final_params
|
26
|
-
required_field_set?
|
27
|
-
|
28
|
-
@transmitter.post('/nl', @params)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
1
|
+
module Moceansdk
|
2
|
+
module Modules
|
3
|
+
module NumberLookup
|
4
|
+
|
5
|
+
class NumberLookup < Moceansdk::Modules::AbstractClient
|
6
|
+
def initialize(obj_auth, transmitter)
|
7
|
+
super(obj_auth, transmitter)
|
8
|
+
@required_fields = ['mocean-api-key', 'mocean-api-secret', 'mocean-to']
|
9
|
+
end
|
10
|
+
|
11
|
+
def to=(param)
|
12
|
+
@params['mocean-to'] = param
|
13
|
+
end
|
14
|
+
|
15
|
+
def nl_url=(param)
|
16
|
+
@params['mocean-nl-url'] = param
|
17
|
+
end
|
18
|
+
|
19
|
+
def resp_format=(param)
|
20
|
+
@params['mocean-resp-format'] = param
|
21
|
+
end
|
22
|
+
|
23
|
+
def inquiry(params = {})
|
24
|
+
create(params)
|
25
|
+
create_final_params
|
26
|
+
required_field_set?
|
27
|
+
|
28
|
+
@transmitter.post('/nl', @params)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,50 +1,50 @@
|
|
1
|
-
module Moceansdk
|
2
|
-
module Modules
|
3
|
-
|
4
|
-
class ResponseFactory
|
5
|
-
def self.create_object(raw_response)
|
6
|
-
begin
|
7
|
-
res = JSON.load(raw_response, proc {|obj|
|
8
|
-
case obj
|
9
|
-
when Hash
|
10
|
-
obj.each {|k, v|
|
11
|
-
obj[k] = if v.is_a? Float
|
12
|
-
# hardcoded float to 4 decimal string
|
13
|
-
sprintf('%.4f', v)
|
14
|
-
elsif v.is_a? Integer
|
15
|
-
v.to_s
|
16
|
-
else
|
17
|
-
v
|
18
|
-
end
|
19
|
-
}
|
20
|
-
when Array
|
21
|
-
obj.map! {|v| v}
|
22
|
-
end
|
23
|
-
})
|
24
|
-
rescue JSON::JSONError
|
25
|
-
begin
|
26
|
-
res = XmlSimple.xml_in(raw_response, 'ForceArray': false)
|
27
|
-
rescue StandardError
|
28
|
-
raise Moceansdk::Exceptions::MoceanError, 'unable to parse response, ' + raw_response
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
hashed_res = HashExtended.new.merge(res)
|
33
|
-
hashed_res.to_dot
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
class HashExtended < Hash
|
38
|
-
attr_accessor :raw_response
|
39
|
-
|
40
|
-
def to_s
|
41
|
-
@raw_response
|
42
|
-
end
|
43
|
-
|
44
|
-
def to_hash
|
45
|
-
inspect
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
1
|
+
module Moceansdk
|
2
|
+
module Modules
|
3
|
+
|
4
|
+
class ResponseFactory
|
5
|
+
def self.create_object(raw_response)
|
6
|
+
begin
|
7
|
+
res = JSON.load(raw_response, proc {|obj|
|
8
|
+
case obj
|
9
|
+
when Hash
|
10
|
+
obj.each {|k, v|
|
11
|
+
obj[k] = if v.is_a? Float
|
12
|
+
# hardcoded float to 4 decimal string
|
13
|
+
sprintf('%.4f', v)
|
14
|
+
elsif v.is_a? Integer
|
15
|
+
v.to_s
|
16
|
+
else
|
17
|
+
v
|
18
|
+
end
|
19
|
+
}
|
20
|
+
when Array
|
21
|
+
obj.map! {|v| v}
|
22
|
+
end
|
23
|
+
})
|
24
|
+
rescue JSON::JSONError
|
25
|
+
begin
|
26
|
+
res = XmlSimple.xml_in(raw_response, 'ForceArray': false)
|
27
|
+
rescue StandardError
|
28
|
+
raise Moceansdk::Exceptions::MoceanError, 'unable to parse response, ' + raw_response
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
hashed_res = HashExtended.new.merge(res)
|
33
|
+
hashed_res.to_dot
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class HashExtended < Hash
|
38
|
+
attr_accessor :raw_response
|
39
|
+
|
40
|
+
def to_s
|
41
|
+
@raw_response
|
42
|
+
end
|
43
|
+
|
44
|
+
def to_hash
|
45
|
+
inspect
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
50
|
end
|
@@ -1,92 +1,92 @@
|
|
1
|
-
module Moceansdk
|
2
|
-
module Modules
|
3
|
-
|
4
|
-
class Transmitter
|
5
|
-
def initialize(options = nil)
|
6
|
-
@options = default_options
|
7
|
-
|
8
|
-
unless options.nil?
|
9
|
-
@options = @options.merge(options)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def default_options
|
14
|
-
{
|
15
|
-
base_url: 'https://rest.moceanapi.com',
|
16
|
-
version: '2'
|
17
|
-
}
|
18
|
-
end
|
19
|
-
|
20
|
-
def get(uri, params)
|
21
|
-
request('get', uri, params)
|
22
|
-
end
|
23
|
-
|
24
|
-
def post(uri, params)
|
25
|
-
request('post', uri, params)
|
26
|
-
end
|
27
|
-
|
28
|
-
def request(method, uri, params)
|
29
|
-
params[:'mocean-medium'] = 'RUBY-SDK'
|
30
|
-
|
31
|
-
# use json if default not set
|
32
|
-
params[:'mocean-resp-format'] = 'json' unless params[:'mocean-resp-format']
|
33
|
-
|
34
|
-
url = @options[:base_url] + '/rest/' + @options[:version] + uri
|
35
|
-
|
36
|
-
res = if method.casecmp('get').zero?
|
37
|
-
HTTP.get(url, params: params)
|
38
|
-
else
|
39
|
-
HTTP.post(url, form: params)
|
40
|
-
end
|
41
|
-
|
42
|
-
format_response(res.to_s, params[:'mocean-resp-format'] == 'xml', uri)
|
43
|
-
end
|
44
|
-
|
45
|
-
def format_response(response_text, is_xml = false, uri = nil)
|
46
|
-
raw_response = response_text
|
47
|
-
|
48
|
-
# format for v1
|
49
|
-
if !uri.nil? && @options[:version] == '1' && is_xml
|
50
|
-
if uri == '/account/pricing'
|
51
|
-
response_text = response_text
|
52
|
-
.sub('<data>', '<destinations>')
|
53
|
-
.sub('</data>', '</destinations>')
|
54
|
-
elsif uri == '/sms'
|
55
|
-
response_text = response_text
|
56
|
-
.sub('<result>', '<result><messages>')
|
57
|
-
.sub('</result>', '</messages></result>')
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
processed_response = ResponseFactory.create_object(
|
62
|
-
response_text
|
63
|
-
.sub('<verify_request>', '')
|
64
|
-
.sub('</verify_request>', '')
|
65
|
-
.sub('<verify_check>', '')
|
66
|
-
.sub('</verify_check>', '')
|
67
|
-
)
|
68
|
-
|
69
|
-
if processed_response['status'] && processed_response['status'] != '0' && processed_response['status'] != 0
|
70
|
-
processed_response.raw_response = raw_response
|
71
|
-
raise Moceansdk::Exceptions::MoceanError.new(processed_response['err_msg'], processed_response)
|
72
|
-
end
|
73
|
-
|
74
|
-
# format for v1
|
75
|
-
if !uri.nil? && is_xml
|
76
|
-
if uri == '/account/pricing'
|
77
|
-
processed_response.destinations = processed_response.destinations.destination
|
78
|
-
elsif uri == '/sms'
|
79
|
-
unless processed_response.messages.message.is_a? Array
|
80
|
-
processed_response.messages.message = [processed_response.messages.message]
|
81
|
-
end
|
82
|
-
processed_response.messages = processed_response.messages.message
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
processed_response.raw_response = raw_response
|
87
|
-
processed_response
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
end
|
1
|
+
module Moceansdk
|
2
|
+
module Modules
|
3
|
+
|
4
|
+
class Transmitter
|
5
|
+
def initialize(options = nil)
|
6
|
+
@options = default_options
|
7
|
+
|
8
|
+
unless options.nil?
|
9
|
+
@options = @options.merge(options)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def default_options
|
14
|
+
{
|
15
|
+
base_url: 'https://rest.moceanapi.com',
|
16
|
+
version: '2'
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
def get(uri, params)
|
21
|
+
request('get', uri, params)
|
22
|
+
end
|
23
|
+
|
24
|
+
def post(uri, params)
|
25
|
+
request('post', uri, params)
|
26
|
+
end
|
27
|
+
|
28
|
+
def request(method, uri, params)
|
29
|
+
params[:'mocean-medium'] = 'RUBY-SDK'
|
30
|
+
|
31
|
+
# use json if default not set
|
32
|
+
params[:'mocean-resp-format'] = 'json' unless params[:'mocean-resp-format']
|
33
|
+
|
34
|
+
url = @options[:base_url] + '/rest/' + @options[:version] + uri
|
35
|
+
|
36
|
+
res = if method.casecmp('get').zero?
|
37
|
+
HTTP.get(url, params: params)
|
38
|
+
else
|
39
|
+
HTTP.post(url, form: params)
|
40
|
+
end
|
41
|
+
|
42
|
+
format_response(res.to_s, params[:'mocean-resp-format'] == 'xml', uri)
|
43
|
+
end
|
44
|
+
|
45
|
+
def format_response(response_text, is_xml = false, uri = nil)
|
46
|
+
raw_response = response_text
|
47
|
+
|
48
|
+
# format for v1
|
49
|
+
if !uri.nil? && @options[:version] == '1' && is_xml
|
50
|
+
if uri == '/account/pricing'
|
51
|
+
response_text = response_text
|
52
|
+
.sub('<data>', '<destinations>')
|
53
|
+
.sub('</data>', '</destinations>')
|
54
|
+
elsif uri == '/sms'
|
55
|
+
response_text = response_text
|
56
|
+
.sub('<result>', '<result><messages>')
|
57
|
+
.sub('</result>', '</messages></result>')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
processed_response = ResponseFactory.create_object(
|
62
|
+
response_text
|
63
|
+
.sub('<verify_request>', '')
|
64
|
+
.sub('</verify_request>', '')
|
65
|
+
.sub('<verify_check>', '')
|
66
|
+
.sub('</verify_check>', '')
|
67
|
+
)
|
68
|
+
|
69
|
+
if processed_response['status'] && processed_response['status'] != '0' && processed_response['status'] != 0
|
70
|
+
processed_response.raw_response = raw_response
|
71
|
+
raise Moceansdk::Exceptions::MoceanError.new(processed_response['err_msg'], processed_response)
|
72
|
+
end
|
73
|
+
|
74
|
+
# format for v1
|
75
|
+
if !uri.nil? && is_xml
|
76
|
+
if uri == '/account/pricing'
|
77
|
+
processed_response.destinations = processed_response.destinations.destination
|
78
|
+
elsif uri == '/sms'
|
79
|
+
unless processed_response.messages.message.is_a? Array
|
80
|
+
processed_response.messages.message = [processed_response.messages.message]
|
81
|
+
end
|
82
|
+
processed_response.messages = processed_response.messages.message
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
processed_response.raw_response = raw_response
|
87
|
+
processed_response
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
92
|
end
|