moceansdk 0.1.6 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/LICENSE.txt +1 -1
- data/README.md +75 -57
- data/lib/moceansdk.rb +51 -5
- data/lib/moceansdk/auth/abstract_auth.rb +15 -0
- data/lib/moceansdk/auth/basic.rb +29 -0
- data/lib/moceansdk/client.rb +70 -14
- data/lib/moceansdk/exceptions/mocean_error.rb +18 -0
- data/lib/moceansdk/exceptions/required_field_exception.rb +8 -0
- data/lib/moceansdk/modules/abstact_client.rb +54 -0
- data/lib/moceansdk/modules/account/balance.rb +26 -22
- data/lib/moceansdk/modules/account/pricing.rb +37 -37
- data/lib/moceansdk/modules/command/command.rb +47 -0
- data/lib/moceansdk/modules/command/mc.rb +40 -0
- data/lib/moceansdk/modules/command/mc_builder.rb +30 -0
- data/lib/moceansdk/modules/command/mc_object/abstract_mc.rb +36 -0
- data/lib/moceansdk/modules/command/mc_object/send_sms.rb +41 -0
- data/lib/moceansdk/modules/command/mc_object/tg_request_contact.rb +49 -0
- data/lib/moceansdk/modules/command/mc_object/tg_send_animation.rb +41 -0
- data/lib/moceansdk/modules/command/mc_object/tg_send_audio.rb +41 -0
- data/lib/moceansdk/modules/command/mc_object/tg_send_document.rb +41 -0
- data/lib/moceansdk/modules/command/mc_object/tg_send_photo.rb +41 -0
- data/lib/moceansdk/modules/command/mc_object/tg_send_text.rb +41 -0
- data/lib/moceansdk/modules/command/mc_object/tg_send_video.rb +41 -0
- data/lib/moceansdk/modules/message/channel.rb +13 -0
- data/lib/moceansdk/modules/message/message_status.rb +29 -24
- data/lib/moceansdk/modules/message/sms.rb +74 -96
- data/lib/moceansdk/modules/message/verify_request.rb +83 -58
- data/lib/moceansdk/modules/message/verify_validate.rb +33 -37
- data/lib/moceansdk/modules/number_lookup/number_lookup.rb +34 -0
- data/lib/moceansdk/modules/response_factory.rb +50 -0
- data/lib/moceansdk/modules/transmitter.rb +112 -0
- data/lib/moceansdk/modules/voice/mc.rb +63 -0
- data/lib/moceansdk/modules/voice/mc_builder.rb +30 -0
- data/lib/moceansdk/modules/voice/mc_object/abstract_mc.rb +38 -0
- data/lib/moceansdk/modules/voice/mc_object/collect.rb +39 -0
- data/lib/moceansdk/modules/voice/mc_object/dial.rb +31 -0
- data/lib/moceansdk/modules/voice/mc_object/play.rb +31 -0
- data/lib/moceansdk/modules/voice/mc_object/record.rb +19 -0
- data/lib/moceansdk/modules/voice/mc_object/say.rb +43 -0
- data/lib/moceansdk/modules/voice/mc_object/sleep.rb +23 -0
- data/lib/moceansdk/modules/voice/voice.rb +84 -0
- data/lib/moceansdk/utils.rb +15 -0
- data/lib/moceansdk/version.rb +1 -1
- data/moceansdk.gemspec +13 -6
- metadata +97 -19
- data/lib/moceansdk/init.rb +0 -4
- data/lib/moceansdk/mocean.rb +0 -52
- data/lib/moceansdk/modules/abstract.rb +0 -142
@@ -0,0 +1,31 @@
|
|
1
|
+
module Moceansdk
|
2
|
+
module Modules
|
3
|
+
module Voice
|
4
|
+
module McObject
|
5
|
+
|
6
|
+
class Dial < AbstractMc
|
7
|
+
def to=(param)
|
8
|
+
@params[:to] = param
|
9
|
+
end
|
10
|
+
|
11
|
+
def from=(param)
|
12
|
+
@params[:from] = param
|
13
|
+
end
|
14
|
+
|
15
|
+
def dial_sequentially=(param)
|
16
|
+
@params[:'dial-sequentially'] = param
|
17
|
+
end
|
18
|
+
|
19
|
+
def required_key
|
20
|
+
['to']
|
21
|
+
end
|
22
|
+
|
23
|
+
def action
|
24
|
+
'dial'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Moceansdk
|
2
|
+
module Modules
|
3
|
+
module Voice
|
4
|
+
module McObject
|
5
|
+
|
6
|
+
class Play < AbstractMc
|
7
|
+
def files=(param)
|
8
|
+
@params[:file] = param
|
9
|
+
end
|
10
|
+
|
11
|
+
def barge_in=(param)
|
12
|
+
@params[:'barge-in'] = param
|
13
|
+
end
|
14
|
+
|
15
|
+
def clear_digit_cache=(param)
|
16
|
+
@params[:'clear-digit-cache'] = param
|
17
|
+
end
|
18
|
+
|
19
|
+
def required_key
|
20
|
+
['file']
|
21
|
+
end
|
22
|
+
|
23
|
+
def action
|
24
|
+
'play'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Moceansdk
|
2
|
+
module Modules
|
3
|
+
module Voice
|
4
|
+
module McObject
|
5
|
+
|
6
|
+
class Say < AbstractMc
|
7
|
+
def initialize(params = nil)
|
8
|
+
super(params)
|
9
|
+
|
10
|
+
if @params[:language].nil?
|
11
|
+
@params[:language] = 'en-US'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def language=(param)
|
16
|
+
@params[:language] = param
|
17
|
+
end
|
18
|
+
|
19
|
+
def text=(param)
|
20
|
+
@params[:text] = param
|
21
|
+
end
|
22
|
+
|
23
|
+
def barge_in=(param)
|
24
|
+
@params[:'barge-in'] = param
|
25
|
+
end
|
26
|
+
|
27
|
+
def clear_digit_cache=(param)
|
28
|
+
@params[:'clear-digit-cache'] = param
|
29
|
+
end
|
30
|
+
|
31
|
+
def required_key
|
32
|
+
['text', 'language']
|
33
|
+
end
|
34
|
+
|
35
|
+
def action
|
36
|
+
'say'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Moceansdk
|
2
|
+
module Modules
|
3
|
+
module Voice
|
4
|
+
module McObject
|
5
|
+
|
6
|
+
class Sleep < AbstractMc
|
7
|
+
def duration=(param)
|
8
|
+
@params[:duration] = param
|
9
|
+
end
|
10
|
+
|
11
|
+
def required_key
|
12
|
+
['duration']
|
13
|
+
end
|
14
|
+
|
15
|
+
def action
|
16
|
+
'sleep'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module Moceansdk
|
2
|
+
module Modules
|
3
|
+
module Voice
|
4
|
+
|
5
|
+
class Voice < 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 event_url=(param)
|
16
|
+
@params['mocean-event-url'] = param
|
17
|
+
end
|
18
|
+
|
19
|
+
def mocean_command=(param)
|
20
|
+
if param.is_a? McBuilder
|
21
|
+
@params['mocean-command'] = JSON.generate(param.build)
|
22
|
+
elsif param.is_a? McObject::AbstractMc
|
23
|
+
@params['mocean-command'] = JSON.generate([param.get_request_data])
|
24
|
+
elsif param.is_a? Array
|
25
|
+
@params['mocean-command'] = JSON.generate(param)
|
26
|
+
else
|
27
|
+
@params['mocean-command'] = param
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def resp_format=(param)
|
32
|
+
@params['mocean-resp-format'] = param
|
33
|
+
end
|
34
|
+
|
35
|
+
def call(params = {})
|
36
|
+
sym_params = Moceansdk::Utils.convert_to_symbol_hash(params)
|
37
|
+
|
38
|
+
unless sym_params[:'mocean-command'].nil?
|
39
|
+
mc = sym_params[:'mocean-command']
|
40
|
+
sym_params.delete(:'mocean-command')
|
41
|
+
self.mocean_command = mc
|
42
|
+
end
|
43
|
+
|
44
|
+
create(sym_params)
|
45
|
+
create_final_params
|
46
|
+
required_field_set?
|
47
|
+
|
48
|
+
@transmitter.post('/voice/dial', @params)
|
49
|
+
end
|
50
|
+
|
51
|
+
def hangup(call_uuid)
|
52
|
+
@required_fields = ['mocean-api-key', 'mocean-api-secret', 'mocean-call-uuid']
|
53
|
+
|
54
|
+
create({:'mocean-call-uuid' => call_uuid})
|
55
|
+
create_final_params
|
56
|
+
required_field_set?
|
57
|
+
|
58
|
+
@transmitter.post("/voice/hangup", @params)
|
59
|
+
end
|
60
|
+
|
61
|
+
def recording(call_uuid)
|
62
|
+
@required_fields = ['mocean-api-key', 'mocean-api-secret', 'mocean-call-uuid']
|
63
|
+
|
64
|
+
create({:'mocean-call-uuid' => call_uuid})
|
65
|
+
create_final_params
|
66
|
+
required_field_set?
|
67
|
+
|
68
|
+
response = @transmitter.request('get', '/voice/rec', @params)
|
69
|
+
|
70
|
+
if response['Content-Type'] === 'audio/mpeg'
|
71
|
+
hashed_res = HashExtended.new.merge({'recording_buffer': response.to_s, 'filename': "#{call_uuid}.mp3"})
|
72
|
+
return hashed_res.to_dot
|
73
|
+
end
|
74
|
+
|
75
|
+
# this method will raise exception if there's error
|
76
|
+
processed_response = Moceansdk::Modules::ResponseFactory.create_object(response.to_s)
|
77
|
+
processed_response.raw_response = response.to_s
|
78
|
+
raise Moceansdk::Exceptions::MoceanError.new(processed_response['err_msg'], processed_response)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
data/lib/moceansdk/version.rb
CHANGED
data/moceansdk.gemspec
CHANGED
@@ -7,14 +7,21 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
8
|
s.authors = ['Micro Ocean Technologies Sdn Bhd']
|
9
9
|
s.email = ['support@moceanapi.com']
|
10
|
-
s.homepage = 'https://github.com/
|
10
|
+
s.homepage = 'https://github.com/MoceanAPI/mocean-sdk-ruby'
|
11
11
|
s.description = 'Mocean SDK for Ruby'
|
12
12
|
s.summary = 'This is a Mocean SDK written in Ruby, to use it you will need a mocean account. Signup for free at https://moceanapi.com'
|
13
|
-
s.files = Dir.glob('
|
14
|
-
s.required_ruby_version = '>= 2.
|
15
|
-
s.add_dependency('
|
16
|
-
s.
|
13
|
+
s.files = Dir.glob('lib/**/*.rb') + %w(LICENSE.txt README.md moceansdk.gemspec)
|
14
|
+
s.required_ruby_version = '>= 2.3.0'
|
15
|
+
s.add_dependency('hash_dot', '~> 2.4')
|
16
|
+
s.add_dependency('http', '>= 3', '< 5')
|
17
|
+
s.add_dependency('xml-simple', '~> 1.1')
|
18
|
+
s.add_development_dependency('codecov', '>= 0.1.10')
|
17
19
|
s.add_development_dependency('minitest', '~> 5.0')
|
18
|
-
s.add_development_dependency('
|
20
|
+
s.add_development_dependency('rake', '~> 13.0')
|
21
|
+
s.add_development_dependency('webmock', '~> 3.6')
|
19
22
|
s.require_path = 'lib'
|
23
|
+
s.metadata = {
|
24
|
+
'homepage' => 'https://github.com/MoceanAPI/mocean-sdk-ruby',
|
25
|
+
'source_code_uri' => 'https://github.com/MoceanAPI/mocean-sdk-ruby'
|
26
|
+
}
|
20
27
|
end
|
metadata
CHANGED
@@ -1,43 +1,77 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moceansdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Micro Ocean Technologies Sdn Bhd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: hash_dot
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
19
|
+
version: '2.4'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '2.
|
26
|
+
version: '2.4'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: http
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '5'
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '3'
|
44
|
+
- - "<"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '5'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: xml-simple
|
29
49
|
requirement: !ruby/object:Gem::Requirement
|
30
50
|
requirements:
|
31
51
|
- - "~>"
|
32
52
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
-
type: :
|
53
|
+
version: '1.1'
|
54
|
+
type: :runtime
|
35
55
|
prerelease: false
|
36
56
|
version_requirements: !ruby/object:Gem::Requirement
|
37
57
|
requirements:
|
38
58
|
- - "~>"
|
39
59
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
60
|
+
version: '1.1'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: codecov
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 0.1.10
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 0.1.10
|
41
75
|
- !ruby/object:Gem::Dependency
|
42
76
|
name: minitest
|
43
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,20 +86,34 @@ dependencies:
|
|
52
86
|
- - "~>"
|
53
87
|
- !ruby/object:Gem::Version
|
54
88
|
version: '5.0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: rake
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '13.0'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '13.0'
|
55
103
|
- !ruby/object:Gem::Dependency
|
56
104
|
name: webmock
|
57
105
|
requirement: !ruby/object:Gem::Requirement
|
58
106
|
requirements:
|
59
107
|
- - "~>"
|
60
108
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
109
|
+
version: '3.6'
|
62
110
|
type: :development
|
63
111
|
prerelease: false
|
64
112
|
version_requirements: !ruby/object:Gem::Requirement
|
65
113
|
requirements:
|
66
114
|
- - "~>"
|
67
115
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3.
|
116
|
+
version: '3.6'
|
69
117
|
description: Mocean SDK for Ruby
|
70
118
|
email:
|
71
119
|
- support@moceanapi.com
|
@@ -76,22 +124,53 @@ files:
|
|
76
124
|
- LICENSE.txt
|
77
125
|
- README.md
|
78
126
|
- lib/moceansdk.rb
|
127
|
+
- lib/moceansdk/auth/abstract_auth.rb
|
128
|
+
- lib/moceansdk/auth/basic.rb
|
79
129
|
- lib/moceansdk/client.rb
|
80
|
-
- lib/moceansdk/
|
81
|
-
- lib/moceansdk/
|
82
|
-
- lib/moceansdk/modules/
|
130
|
+
- lib/moceansdk/exceptions/mocean_error.rb
|
131
|
+
- lib/moceansdk/exceptions/required_field_exception.rb
|
132
|
+
- lib/moceansdk/modules/abstact_client.rb
|
83
133
|
- lib/moceansdk/modules/account/balance.rb
|
84
134
|
- lib/moceansdk/modules/account/pricing.rb
|
135
|
+
- lib/moceansdk/modules/command/command.rb
|
136
|
+
- lib/moceansdk/modules/command/mc.rb
|
137
|
+
- lib/moceansdk/modules/command/mc_builder.rb
|
138
|
+
- lib/moceansdk/modules/command/mc_object/abstract_mc.rb
|
139
|
+
- lib/moceansdk/modules/command/mc_object/send_sms.rb
|
140
|
+
- lib/moceansdk/modules/command/mc_object/tg_request_contact.rb
|
141
|
+
- lib/moceansdk/modules/command/mc_object/tg_send_animation.rb
|
142
|
+
- lib/moceansdk/modules/command/mc_object/tg_send_audio.rb
|
143
|
+
- lib/moceansdk/modules/command/mc_object/tg_send_document.rb
|
144
|
+
- lib/moceansdk/modules/command/mc_object/tg_send_photo.rb
|
145
|
+
- lib/moceansdk/modules/command/mc_object/tg_send_text.rb
|
146
|
+
- lib/moceansdk/modules/command/mc_object/tg_send_video.rb
|
147
|
+
- lib/moceansdk/modules/message/channel.rb
|
85
148
|
- lib/moceansdk/modules/message/message_status.rb
|
86
149
|
- lib/moceansdk/modules/message/sms.rb
|
87
150
|
- lib/moceansdk/modules/message/verify_request.rb
|
88
151
|
- lib/moceansdk/modules/message/verify_validate.rb
|
152
|
+
- lib/moceansdk/modules/number_lookup/number_lookup.rb
|
153
|
+
- lib/moceansdk/modules/response_factory.rb
|
154
|
+
- lib/moceansdk/modules/transmitter.rb
|
155
|
+
- lib/moceansdk/modules/voice/mc.rb
|
156
|
+
- lib/moceansdk/modules/voice/mc_builder.rb
|
157
|
+
- lib/moceansdk/modules/voice/mc_object/abstract_mc.rb
|
158
|
+
- lib/moceansdk/modules/voice/mc_object/collect.rb
|
159
|
+
- lib/moceansdk/modules/voice/mc_object/dial.rb
|
160
|
+
- lib/moceansdk/modules/voice/mc_object/play.rb
|
161
|
+
- lib/moceansdk/modules/voice/mc_object/record.rb
|
162
|
+
- lib/moceansdk/modules/voice/mc_object/say.rb
|
163
|
+
- lib/moceansdk/modules/voice/mc_object/sleep.rb
|
164
|
+
- lib/moceansdk/modules/voice/voice.rb
|
165
|
+
- lib/moceansdk/utils.rb
|
89
166
|
- lib/moceansdk/version.rb
|
90
167
|
- moceansdk.gemspec
|
91
|
-
homepage: https://github.com/
|
168
|
+
homepage: https://github.com/MoceanAPI/mocean-sdk-ruby
|
92
169
|
licenses:
|
93
170
|
- MIT
|
94
|
-
metadata:
|
171
|
+
metadata:
|
172
|
+
homepage: https://github.com/MoceanAPI/mocean-sdk-ruby
|
173
|
+
source_code_uri: https://github.com/MoceanAPI/mocean-sdk-ruby
|
95
174
|
post_install_message:
|
96
175
|
rdoc_options: []
|
97
176
|
require_paths:
|
@@ -100,15 +179,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
100
179
|
requirements:
|
101
180
|
- - ">="
|
102
181
|
- !ruby/object:Gem::Version
|
103
|
-
version: 2.
|
182
|
+
version: 2.3.0
|
104
183
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
184
|
requirements:
|
106
185
|
- - ">="
|
107
186
|
- !ruby/object:Gem::Version
|
108
187
|
version: '0'
|
109
188
|
requirements: []
|
110
|
-
|
111
|
-
rubygems_version: 2.6.14.1
|
189
|
+
rubygems_version: 3.1.4
|
112
190
|
signing_key:
|
113
191
|
specification_version: 4
|
114
192
|
summary: This is a Mocean SDK written in Ruby, to use it you will need a mocean account.
|