moceansdk 0.1.6 → 1.1.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.
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.