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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b0b4c0c5f19f708f2e1d0f255eed1341244f64922b75cde574d9765cadc570f6
|
4
|
+
data.tar.gz: 628465a50f969494c965a77b5f0868c89ac11d0b1f0be7f2b0d17c0ac786cc8c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1a3f349fdf7127a1157272a7cb56cac46a03d139ff8a03f756218f5697f936ac35bb4a20ec2056de93dda42100649e88ed789d2c55f9aed375f0828d9ff0f52
|
7
|
+
data.tar.gz: 38ba32440b25ad20da427f5e5242eaf0ab03ba22b273344a140d02e887424fbb216b6a5faacdb82cf4a5b0d44926f24c49f182446b1e1a366cfe827a2c1fbff8
|
data/LICENSE.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2018 Micro Ocean Technologies Sdn Bhd
|
3
|
+
Copyright (c) 2018-2019 Micro Ocean Technologies Sdn Bhd
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -1,57 +1,75 @@
|
|
1
|
-
MoceanAPI Client Library for Ruby
|
2
|
-
============================
|
3
|
-
[![Gem Version](https://
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
```
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
[
|
1
|
+
MoceanAPI Client Library for Ruby
|
2
|
+
============================
|
3
|
+
[![Gem Version](https://img.shields.io/gem/v/moceansdk.svg)](https://rubygems.org/gems/moceansdk)
|
4
|
+
[![build status](https://img.shields.io/travis/com/MoceanAPI/mocean-sdk-ruby.svg)](https://travis-ci.com/MoceanAPI/mocean-sdk-ruby)
|
5
|
+
[![Github build status](https://github.com/MoceanAPI/mocean-sdk-ruby/actions/workflows/build.yml/badge.svg)](https://github.com/MoceanAPI/mocean-sdk-ruby/actions/workflows/build.yml)
|
6
|
+
[![codecov](https://img.shields.io/codecov/c/github/MoceanAPI/mocean-sdk-ruby.svg)](https://codecov.io/gh/MoceanAPI/mocean-sdk-ruby)
|
7
|
+
[![codacy](https://img.shields.io/codacy/grade/7564ecfa8e7948a7ba15cb7634258c7e.svg)](https://app.codacy.com/project/MoceanAPI/mocean-sdk-ruby/dashboard)
|
8
|
+
[![MIT license](http://img.shields.io/badge/license-MIT-brightgreen.svg)](http://opensource.org/licenses/MIT)
|
9
|
+
[![total downloads](https://img.shields.io/gem/dt/moceansdk.svg)](https://rubygems.org/gems/moceansdk)
|
10
|
+
|
11
|
+
This is the Ruby client library for use Mocean's API. To use this, you'll need a Mocean account. Sign up [for free at
|
12
|
+
moceanapi.com][signup].
|
13
|
+
|
14
|
+
* [Installation](#installation)
|
15
|
+
* [Usage](#usage)
|
16
|
+
* [Example](#example)
|
17
|
+
|
18
|
+
## Installation
|
19
|
+
|
20
|
+
To use the client library you'll need to have [created a Mocean account][signup].
|
21
|
+
|
22
|
+
To install the Ruby client library using Gem.
|
23
|
+
|
24
|
+
```bash
|
25
|
+
gem install moceansdk
|
26
|
+
```
|
27
|
+
|
28
|
+
## Usage
|
29
|
+
|
30
|
+
Create a client with your API key and secret:
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
require 'moceansdk'
|
34
|
+
|
35
|
+
credential = Moceansdk::Auth::Basic.new("API_KEY_HERE", "API_SECRET_HERE")
|
36
|
+
mocean = Moceansdk::Client.new(credential)
|
37
|
+
```
|
38
|
+
|
39
|
+
## Example
|
40
|
+
|
41
|
+
To use [Mocean's SMS API][doc_sms] to send an SMS message, call the `mocean.sms.send()` method.
|
42
|
+
|
43
|
+
The API can be called directly, using a simple array of parameters, the keys match the [parameters of the API][doc_sms].
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
res = mocean.sms.send({
|
47
|
+
"mocean-text": 'Hello World',
|
48
|
+
"mocean-from": 'MOCEAN',
|
49
|
+
"mocean-to": '60123456789'
|
50
|
+
})
|
51
|
+
|
52
|
+
puts res
|
53
|
+
```
|
54
|
+
|
55
|
+
### Responses
|
56
|
+
|
57
|
+
For your convenient, the API response has been parsed to `Hash` using [hash_dot](https://github.com/adsteel/hash_dot) package.
|
58
|
+
```ruby
|
59
|
+
puts res # show full response string
|
60
|
+
puts res.status # show response status, '0' in this case
|
61
|
+
puts res['status'] # same as above
|
62
|
+
```
|
63
|
+
|
64
|
+
## Documentation
|
65
|
+
|
66
|
+
Kindly visit [MoceanApi Docs][doc_main] for more usage
|
67
|
+
|
68
|
+
## License
|
69
|
+
|
70
|
+
This library is released under the [MIT License][license]
|
71
|
+
|
72
|
+
[signup]: https://dashboard.moceanapi.com/register?medium=github&campaign=ruby-sdk
|
73
|
+
[doc_main]: https://moceanapi.com/docs/?ruby
|
74
|
+
[doc_sms]: https://moceanapi.com/docs/?ruby#send-sms
|
75
|
+
[license]: LICENSE.txt
|
data/lib/moceansdk.rb
CHANGED
@@ -1,6 +1,52 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'http'
|
2
|
+
require 'json'
|
3
|
+
require 'hash_dot'
|
4
|
+
require 'xmlsimple'
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
|
6
|
+
require 'moceansdk/auth/abstract_auth'
|
7
|
+
require 'moceansdk/auth/basic'
|
8
|
+
require 'moceansdk/exceptions/mocean_error'
|
9
|
+
require 'moceansdk/exceptions/required_field_exception'
|
10
|
+
|
11
|
+
require 'moceansdk/modules/abstact_client'
|
12
|
+
require 'moceansdk/modules/response_factory'
|
13
|
+
require 'moceansdk/modules/transmitter'
|
14
|
+
|
15
|
+
require 'moceansdk/modules/account/balance'
|
16
|
+
require 'moceansdk/modules/account/pricing'
|
17
|
+
|
18
|
+
require 'moceansdk/modules/message/channel'
|
19
|
+
require 'moceansdk/modules/message/message_status'
|
20
|
+
require 'moceansdk/modules/message/sms'
|
21
|
+
require 'moceansdk/modules/message/verify_request'
|
22
|
+
require 'moceansdk/modules/message/verify_validate'
|
23
|
+
|
24
|
+
require 'moceansdk/modules/number_lookup/number_lookup'
|
25
|
+
|
26
|
+
require 'moceansdk/modules/voice/mc_object/abstract_mc'
|
27
|
+
require 'moceansdk/modules/voice/mc_object/dial'
|
28
|
+
require 'moceansdk/modules/voice/mc_object/collect'
|
29
|
+
require 'moceansdk/modules/voice/mc_object/play'
|
30
|
+
require 'moceansdk/modules/voice/mc_object/record'
|
31
|
+
require 'moceansdk/modules/voice/mc_object/say'
|
32
|
+
require 'moceansdk/modules/voice/mc_object/sleep'
|
33
|
+
require 'moceansdk/modules/voice/mc'
|
34
|
+
require 'moceansdk/modules/voice/mc_builder'
|
35
|
+
require 'moceansdk/modules/voice/voice'
|
36
|
+
|
37
|
+
require 'moceansdk/modules/command/mc_object/abstract_mc'
|
38
|
+
require 'moceansdk/modules/command/mc_object/tg_send_text'
|
39
|
+
require 'moceansdk/modules/command/mc_object/tg_send_audio'
|
40
|
+
require 'moceansdk/modules/command/mc_object/tg_send_animation'
|
41
|
+
require 'moceansdk/modules/command/mc_object/tg_send_photo'
|
42
|
+
require 'moceansdk/modules/command/mc_object/tg_send_video'
|
43
|
+
require 'moceansdk/modules/command/mc_object/tg_send_document'
|
44
|
+
require 'moceansdk/modules/command/mc_object/tg_request_contact'
|
45
|
+
require 'moceansdk/modules/command/mc_object/send_sms'
|
46
|
+
require 'moceansdk/modules/command/mc'
|
47
|
+
require 'moceansdk/modules/command/mc_builder'
|
48
|
+
require 'moceansdk/modules/command/command'
|
49
|
+
|
50
|
+
require 'moceansdk/utils'
|
51
|
+
require 'moceansdk/version'
|
52
|
+
require 'moceansdk/client'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Moceansdk
|
2
|
+
module Auth
|
3
|
+
|
4
|
+
class AbstractAuth
|
5
|
+
def auth_method
|
6
|
+
raise NotImplementedError, 'AbstractAuth is a abstract class'
|
7
|
+
end
|
8
|
+
|
9
|
+
def params
|
10
|
+
raise NotImplementedError, 'AbstractAuth is a abstract class'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Moceansdk
|
2
|
+
module Auth
|
3
|
+
|
4
|
+
class Basic < AbstractAuth
|
5
|
+
def initialize(api_key = nil, api_secret = nil)
|
6
|
+
@params = {}
|
7
|
+
@params['mocean-api-key'] = api_key unless api_key.nil?
|
8
|
+
@params['mocean-api-secret'] = api_secret unless api_secret.nil?
|
9
|
+
end
|
10
|
+
|
11
|
+
def api_key=(api_key)
|
12
|
+
@params['mocean-api-key'] = api_key
|
13
|
+
end
|
14
|
+
|
15
|
+
def api_secret=(api_secret)
|
16
|
+
@params['mocean-api-secret'] = api_secret
|
17
|
+
end
|
18
|
+
|
19
|
+
def auth_method
|
20
|
+
'basic'
|
21
|
+
end
|
22
|
+
|
23
|
+
def params
|
24
|
+
@params
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
data/lib/moceansdk/client.rb
CHANGED
@@ -1,14 +1,70 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
1
|
+
module Moceansdk
|
2
|
+
|
3
|
+
class Client
|
4
|
+
def initialize(obj_auth, options = nil)
|
5
|
+
unless obj_auth.is_a? Auth::AbstractAuth
|
6
|
+
raise Exceptions::MoceanError, 'auth object must extend AbstractAuth'
|
7
|
+
end
|
8
|
+
|
9
|
+
if obj_auth.auth_method.casecmp('basic').zero?
|
10
|
+
if Utils.nil_or_empty?(obj_auth.params['mocean-api-key']) || Utils.nil_or_empty?(obj_auth.params['mocean-api-secret'])
|
11
|
+
raise Exceptions::RequiredFieldException, "api key and api secret for client object can't be empty"
|
12
|
+
end
|
13
|
+
else
|
14
|
+
raise Exceptions::MoceanError, 'unsupported auth method'
|
15
|
+
end
|
16
|
+
|
17
|
+
@transmitter = if options.is_a? Modules::Transmitter
|
18
|
+
options
|
19
|
+
else
|
20
|
+
Modules::Transmitter.new(options)
|
21
|
+
end
|
22
|
+
|
23
|
+
@obj_auth = obj_auth
|
24
|
+
end
|
25
|
+
|
26
|
+
def sms
|
27
|
+
Modules::Message::Sms.new(@obj_auth, @transmitter)
|
28
|
+
end
|
29
|
+
|
30
|
+
def flash_sms
|
31
|
+
sms = Modules::Message::Sms.new(@obj_auth, @transmitter)
|
32
|
+
sms.mclass = 1
|
33
|
+
sms.alt_dcs = 1
|
34
|
+
sms
|
35
|
+
end
|
36
|
+
|
37
|
+
def pricing
|
38
|
+
Modules::Account::Pricing.new(@obj_auth, @transmitter)
|
39
|
+
end
|
40
|
+
|
41
|
+
def balance
|
42
|
+
Modules::Account::Balance.new(@obj_auth, @transmitter)
|
43
|
+
end
|
44
|
+
|
45
|
+
def message_status
|
46
|
+
Modules::Message::MessageStatus.new(@obj_auth, @transmitter)
|
47
|
+
end
|
48
|
+
|
49
|
+
def verify_request
|
50
|
+
Modules::Message::VerifyRequest.new(@obj_auth, @transmitter)
|
51
|
+
end
|
52
|
+
|
53
|
+
def verify_validate
|
54
|
+
Modules::Message::VerifyValidate.new(@obj_auth, @transmitter)
|
55
|
+
end
|
56
|
+
|
57
|
+
def number_lookup
|
58
|
+
Modules::NumberLookup::NumberLookup.new(@obj_auth, @transmitter)
|
59
|
+
end
|
60
|
+
|
61
|
+
def voice
|
62
|
+
Modules::Voice::Voice.new(@obj_auth, @transmitter)
|
63
|
+
end
|
64
|
+
|
65
|
+
def command
|
66
|
+
Modules::Command::Command.new(@obj_auth, @transmitter)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Moceansdk
|
2
|
+
module Exceptions
|
3
|
+
|
4
|
+
class MoceanError < StandardError
|
5
|
+
attr_reader :error_response
|
6
|
+
|
7
|
+
def initialize(msg, error_response = nil)
|
8
|
+
if error_response.nil?
|
9
|
+
super(msg)
|
10
|
+
else
|
11
|
+
super(error_response['err_msg'])
|
12
|
+
@error_response = error_response
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Moceansdk
|
2
|
+
module Modules
|
3
|
+
|
4
|
+
class AbstractClient
|
5
|
+
attr_accessor :params
|
6
|
+
|
7
|
+
def initialize(obj_auth, transmitter)
|
8
|
+
@params = obj_auth.params
|
9
|
+
@transmitter = transmitter
|
10
|
+
end
|
11
|
+
|
12
|
+
def create(params = {})
|
13
|
+
@params = @params.merge(params) if params.is_a? Hash
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_final_params
|
17
|
+
final_params = {}
|
18
|
+
@params.each do |key, value|
|
19
|
+
unless value.nil?
|
20
|
+
param_prefix_set?(key) ? final_params[key] = value : final_params["mocean-#{key}"] = value
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# convert string hash to symbol hash
|
25
|
+
@params = Moceansdk::Utils.convert_to_symbol_hash(final_params)
|
26
|
+
end
|
27
|
+
|
28
|
+
def param_prefix_set?(key)
|
29
|
+
cloned_key = if key.is_a? String
|
30
|
+
key
|
31
|
+
else
|
32
|
+
key.to_s
|
33
|
+
end
|
34
|
+
|
35
|
+
return false if cloned_key.scan(/^mocean-/i).empty?
|
36
|
+
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
def required_field_set?
|
41
|
+
if @required_fields.is_a?(Array) && !@required_fields.empty?
|
42
|
+
@required_fields.each do |field|
|
43
|
+
if @params[:"#{field}"].nil?
|
44
|
+
raise Moceansdk::Exceptions::RequiredFieldException, "#{field} is mandatory field, can't leave empty"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
@@ -1,22 +1,26 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
end
|
1
|
+
module Moceansdk
|
2
|
+
module Modules
|
3
|
+
module Account
|
4
|
+
|
5
|
+
class Balance < Moceansdk::Modules::AbstractClient
|
6
|
+
def initialize(obj_auth, transmitter)
|
7
|
+
super(obj_auth, transmitter)
|
8
|
+
@required_fields = ['mocean-api-key', 'mocean-api-secret']
|
9
|
+
end
|
10
|
+
|
11
|
+
def resp_format=(param)
|
12
|
+
@params['mocean-resp-format'] = param
|
13
|
+
end
|
14
|
+
|
15
|
+
def inquiry(params = {})
|
16
|
+
create(params)
|
17
|
+
create_final_params
|
18
|
+
required_field_set?
|
19
|
+
|
20
|
+
@transmitter.get('/account/balance', @params)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|