moceansdk 0.1.6 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.txt +1 -1
  3. data/README.md +75 -57
  4. data/lib/moceansdk.rb +51 -5
  5. data/lib/moceansdk/auth/abstract_auth.rb +15 -0
  6. data/lib/moceansdk/auth/basic.rb +29 -0
  7. data/lib/moceansdk/client.rb +70 -14
  8. data/lib/moceansdk/exceptions/mocean_error.rb +18 -0
  9. data/lib/moceansdk/exceptions/required_field_exception.rb +8 -0
  10. data/lib/moceansdk/modules/abstact_client.rb +54 -0
  11. data/lib/moceansdk/modules/account/balance.rb +26 -22
  12. data/lib/moceansdk/modules/account/pricing.rb +37 -37
  13. data/lib/moceansdk/modules/command/command.rb +47 -0
  14. data/lib/moceansdk/modules/command/mc.rb +40 -0
  15. data/lib/moceansdk/modules/command/mc_builder.rb +30 -0
  16. data/lib/moceansdk/modules/command/mc_object/abstract_mc.rb +36 -0
  17. data/lib/moceansdk/modules/command/mc_object/send_sms.rb +41 -0
  18. data/lib/moceansdk/modules/command/mc_object/tg_request_contact.rb +49 -0
  19. data/lib/moceansdk/modules/command/mc_object/tg_send_animation.rb +41 -0
  20. data/lib/moceansdk/modules/command/mc_object/tg_send_audio.rb +41 -0
  21. data/lib/moceansdk/modules/command/mc_object/tg_send_document.rb +41 -0
  22. data/lib/moceansdk/modules/command/mc_object/tg_send_photo.rb +41 -0
  23. data/lib/moceansdk/modules/command/mc_object/tg_send_text.rb +41 -0
  24. data/lib/moceansdk/modules/command/mc_object/tg_send_video.rb +41 -0
  25. data/lib/moceansdk/modules/message/channel.rb +13 -0
  26. data/lib/moceansdk/modules/message/message_status.rb +29 -24
  27. data/lib/moceansdk/modules/message/sms.rb +74 -96
  28. data/lib/moceansdk/modules/message/verify_request.rb +83 -58
  29. data/lib/moceansdk/modules/message/verify_validate.rb +33 -37
  30. data/lib/moceansdk/modules/number_lookup/number_lookup.rb +34 -0
  31. data/lib/moceansdk/modules/response_factory.rb +50 -0
  32. data/lib/moceansdk/modules/transmitter.rb +112 -0
  33. data/lib/moceansdk/modules/voice/mc.rb +63 -0
  34. data/lib/moceansdk/modules/voice/mc_builder.rb +30 -0
  35. data/lib/moceansdk/modules/voice/mc_object/abstract_mc.rb +38 -0
  36. data/lib/moceansdk/modules/voice/mc_object/collect.rb +39 -0
  37. data/lib/moceansdk/modules/voice/mc_object/dial.rb +31 -0
  38. data/lib/moceansdk/modules/voice/mc_object/play.rb +31 -0
  39. data/lib/moceansdk/modules/voice/mc_object/record.rb +19 -0
  40. data/lib/moceansdk/modules/voice/mc_object/say.rb +43 -0
  41. data/lib/moceansdk/modules/voice/mc_object/sleep.rb +23 -0
  42. data/lib/moceansdk/modules/voice/voice.rb +84 -0
  43. data/lib/moceansdk/utils.rb +15 -0
  44. data/lib/moceansdk/version.rb +1 -1
  45. data/moceansdk.gemspec +13 -6
  46. metadata +97 -19
  47. data/lib/moceansdk/init.rb +0 -4
  48. data/lib/moceansdk/mocean.rb +0 -52
  49. 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,19 @@
1
+ module Moceansdk
2
+ module Modules
3
+ module Voice
4
+ module McObject
5
+
6
+ class Record < AbstractMc
7
+ def required_key
8
+ []
9
+ end
10
+
11
+ def action
12
+ 'record'
13
+ end
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ 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
@@ -0,0 +1,15 @@
1
+ module Moceansdk
2
+
3
+ class Utils
4
+ def self.nil_or_empty?(str)
5
+ str.nil? || str.empty?
6
+ end
7
+
8
+ def self.convert_to_symbol_hash(str_hash)
9
+ str_hash.each_with_object({}) do |(k, v), memo|
10
+ memo[k.to_sym] = v
11
+ end
12
+ end
13
+ end
14
+
15
+ end
@@ -1,3 +1,3 @@
1
1
  module Moceansdk
2
- VERSION = "0.1.6"
2
+ VERSION = "1.1.1"
3
3
  end
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/moceanapi/mocean-sdk-ruby'
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('{lib,spec}/**/*') + %w(LICENSE.txt README.md moceansdk.gemspec)
14
- s.required_ruby_version = '>= 2.0.0'
15
- s.add_dependency('openssl','~>2.0')
16
- s.add_development_dependency('rake', '~> 12.0')
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('webmock', '~> 3.0')
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: 0.1.6
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: 2018-07-18 00:00:00.000000000 Z
11
+ date: 2021-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: openssl
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.0'
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.0'
26
+ version: '2.4'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
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: '12.0'
34
- type: :development
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: '12.0'
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.0'
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.0'
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/init.rb
81
- - lib/moceansdk/mocean.rb
82
- - lib/moceansdk/modules/abstract.rb
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/moceanapi/mocean-sdk-ruby
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.0.0
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
- rubyforge_project:
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.