moceansdk 0.1.7 → 1.0.0

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.
@@ -0,0 +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
50
+ end
@@ -0,0 +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
92
+ end
@@ -0,0 +1,9 @@
1
+ module Moceansdk
2
+
3
+ class Utils
4
+ def self.nil_or_empty?(str)
5
+ str.nil? || str.empty?
6
+ end
7
+ end
8
+
9
+ end
@@ -1,3 +1,3 @@
1
- module Moceansdk
2
- VERSION = "0.1.7"
3
- end
1
+ module Moceansdk
2
+ VERSION = "1.0.0"
3
+ end
data/moceansdk.gemspec CHANGED
@@ -1,20 +1,26 @@
1
- require File.expand_path('lib/moceansdk/version', File.dirname(__FILE__))
2
-
3
- Gem::Specification.new do |s|
4
- s.name = 'moceansdk'
5
- s.version = Moceansdk::VERSION
6
- s.license = 'MIT'
7
- s.platform = Gem::Platform::RUBY
8
- s.authors = ['Micro Ocean Technologies Sdn Bhd']
9
- s.email = ['support@moceanapi.com']
10
- s.homepage = 'https://github.com/moceanapi/mocean-sdk-ruby'
11
- s.description = 'Mocean SDK for Ruby'
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')
17
- s.add_development_dependency('minitest', '~> 5.0')
18
- s.add_development_dependency('webmock', '~> 3.0')
19
- s.require_path = 'lib'
1
+ require File.expand_path('lib/moceansdk/version', File.dirname(__FILE__))
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = 'moceansdk'
5
+ s.version = Moceansdk::VERSION
6
+ s.license = 'MIT'
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ['Micro Ocean Technologies Sdn Bhd']
9
+ s.email = ['support@moceanapi.com']
10
+ s.homepage = 'https://github.com/MoceanAPI/mocean-sdk-ruby'
11
+ s.description = 'Mocean SDK for Ruby'
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/**/*.rb') + %w(LICENSE.txt README.md moceansdk.gemspec)
14
+ s.required_ruby_version = '>= 2.2.0'
15
+ s.add_dependency('hash_dot', '~> 2.4')
16
+ s.add_dependency('http', '~> 3.0')
17
+ s.add_dependency('xml-simple', '~> 1.1')
18
+ s.add_development_dependency('codecov', '>= 0.1.10')
19
+ s.add_development_dependency('minitest', '~> 5.0')
20
+ s.add_development_dependency('rake', '~> 12.0')
21
+ s.require_path = 'lib'
22
+ s.metadata = {
23
+ 'homepage' => 'https://github.com/MoceanAPI/mocean-sdk-ruby',
24
+ 'source_code_uri' => 'https://github.com/MoceanAPI/mocean-sdk-ruby'
25
+ }
20
26
  end
metadata CHANGED
@@ -1,43 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moceansdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 1.0.0
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: 2019-06-20 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
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '12.0'
34
- type: :development
33
+ version: '3.0'
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '12.0'
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: xml-simple
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: codecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 0.1.10
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 0.1.10
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: minitest
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -53,19 +81,19 @@ dependencies:
53
81
  - !ruby/object:Gem::Version
54
82
  version: '5.0'
55
83
  - !ruby/object:Gem::Dependency
56
- name: webmock
84
+ name: rake
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
87
  - - "~>"
60
88
  - !ruby/object:Gem::Version
61
- version: '3.0'
89
+ version: '12.0'
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
- version: '3.0'
96
+ version: '12.0'
69
97
  description: Mocean SDK for Ruby
70
98
  email:
71
99
  - support@moceanapi.com
@@ -76,22 +104,31 @@ files:
76
104
  - LICENSE.txt
77
105
  - README.md
78
106
  - lib/moceansdk.rb
107
+ - lib/moceansdk/auth/abstract_auth.rb
108
+ - lib/moceansdk/auth/basic.rb
79
109
  - lib/moceansdk/client.rb
80
- - lib/moceansdk/init.rb
81
- - lib/moceansdk/mocean.rb
82
- - lib/moceansdk/modules/abstract.rb
110
+ - lib/moceansdk/exceptions/mocean_error.rb
111
+ - lib/moceansdk/exceptions/required_field_exception.rb
112
+ - lib/moceansdk/modules/abstact_client.rb
83
113
  - lib/moceansdk/modules/account/balance.rb
84
114
  - lib/moceansdk/modules/account/pricing.rb
115
+ - lib/moceansdk/modules/message/channel.rb
85
116
  - lib/moceansdk/modules/message/message_status.rb
86
117
  - lib/moceansdk/modules/message/sms.rb
87
118
  - lib/moceansdk/modules/message/verify_request.rb
88
119
  - lib/moceansdk/modules/message/verify_validate.rb
120
+ - lib/moceansdk/modules/number_lookup/number_lookup.rb
121
+ - lib/moceansdk/modules/response_factory.rb
122
+ - lib/moceansdk/modules/transmitter.rb
123
+ - lib/moceansdk/utils.rb
89
124
  - lib/moceansdk/version.rb
90
125
  - moceansdk.gemspec
91
- homepage: https://github.com/moceanapi/mocean-sdk-ruby
126
+ homepage: https://github.com/MoceanAPI/mocean-sdk-ruby
92
127
  licenses:
93
128
  - MIT
94
- metadata: {}
129
+ metadata:
130
+ homepage: https://github.com/MoceanAPI/mocean-sdk-ruby
131
+ source_code_uri: https://github.com/MoceanAPI/mocean-sdk-ruby
95
132
  post_install_message:
96
133
  rdoc_options: []
97
134
  require_paths:
@@ -100,7 +137,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
100
137
  requirements:
101
138
  - - ">="
102
139
  - !ruby/object:Gem::Version
103
- version: 2.0.0
140
+ version: 2.2.0
104
141
  required_rubygems_version: !ruby/object:Gem::Requirement
105
142
  requirements:
106
143
  - - ">="
@@ -108,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
145
  version: '0'
109
146
  requirements: []
110
147
  rubyforge_project:
111
- rubygems_version: 2.6.14.1
148
+ rubygems_version: 2.7.6
112
149
  signing_key:
113
150
  specification_version: 4
114
151
  summary: This is a Mocean SDK written in Ruby, to use it you will need a mocean account.
@@ -1,4 +0,0 @@
1
- module Deno92
2
- require_relative "./mocean"
3
- require_relative "./client"
4
- end
@@ -1,52 +0,0 @@
1
- class Mocean
2
-
3
- attr_reader :obj_auth
4
-
5
- def initialize client = Client
6
- if client.class == Client
7
- @obj_auth = client
8
- elsif client.api_key == nil || client.api_secret == nil
9
- raise Exception.new("Api key and api secret can't be empty")
10
- else
11
- raise Exception.new("Arguement pass into Mocean object must be Client object")
12
- end
13
- end
14
-
15
- def sms
16
- require_relative "modules/message/sms"
17
- return Sms.new(@obj_auth)
18
-
19
- end
20
-
21
- def flashSms
22
- require_relative "modules/message/sms"
23
- _sms = Sms.new(@obj_auth)
24
- _sms.flashSms = true
25
- return _sms
26
- end
27
-
28
- def pricing_list
29
- require_relative "modules/account/pricing"
30
- return Pricing.new(@obj_auth)
31
- end
32
-
33
- def balance
34
- require_relative "modules/account/balance"
35
- return Balance.new(@obj_auth)
36
- end
37
-
38
- def message_status
39
- require_relative "modules/message/message_status"
40
- return Message_status.new(@obj_auth)
41
- end
42
-
43
- def verify_request
44
- require_relative "modules/message/verify_request"
45
- return Verify_request.new(@obj_auth)
46
- end
47
-
48
- def verify_validate
49
- require_relative "modules/message/verify_validate"
50
- return Verify_validate.new(@obj_auth)
51
- end
52
- end
@@ -1,142 +0,0 @@
1
- require "net/http"
2
- require "uri"
3
-
4
- class MoceanFactory
5
- attr_accessor :params
6
-
7
- def initialize client
8
- @params = {}
9
- @params['mocean-api-key'] = client.api_key
10
- @params['mocean-api-secret'] = client.api_secret
11
- end
12
-
13
- def create params = {}
14
- if params.class != Hash
15
- raise Exception.new('Params past into create must be hash.')
16
- end
17
- tmp_params = params.clone
18
- tmp_params.each do |key,value|
19
- if !isParamPrefixSet(key)
20
- new_key ="mocean-"+key
21
- params[new_key] = value
22
- params.delete(key)
23
- end
24
- end
25
- tmp_params = nil
26
- @params = @params.merge(params)
27
- end
28
-
29
- def createFinalParams
30
- final_params = {}
31
- @params.each do |key,value|
32
- unless value.nil? || (value.class != Integer && value.empty?)
33
- final_params[key] = value
34
-
35
- end
36
- end
37
- @params = final_params
38
- end
39
-
40
- def createResponse response
41
- end
42
-
43
- def isParamPrefixSet param
44
- if param.class != String
45
- raise Exception.new("Parameter key must be string, "+param.class+" given.")
46
- end
47
- if param.scan(/^mocean-/i).empty?
48
- return false
49
- end
50
- return true
51
- end
52
-
53
- def isRequiredFieldsSet
54
- if @required_fields.class == 'Array' && !@required_fields.empty?
55
- @required_fields.each do |field|
56
- if @params[field] == nil
57
- raise Exception.new("#{field} is mandatory field, can't leave empty")
58
- end
59
- end
60
- end
61
- return true
62
- end
63
-
64
- def reset()
65
- @params.each do |key,value|
66
- if key == 'mocean-api-key' || key == 'mocean-api-secret'
67
- next
68
- end
69
- @params[key] = nil
70
- end
71
- end
72
-
73
- end
74
-
75
- class Transmitter
76
-
77
- def initialize uri,method,params
78
- @URL = 'rest.moceanapi.com'
79
- @uri = uri
80
- @params = params
81
- @params['mocean-medium'] = 'RUBY-SDK'
82
-
83
- begin
84
- @http = Net::HTTP.new(@URL,443)
85
- @http.use_ssl = true
86
- rescue Exception
87
- raise Exception.new('Unable to create connection, please contact SDK provider.')
88
- end
89
-
90
- case method.downcase
91
- when 'get'
92
- @response = __get
93
- when 'post'
94
- @response = __post
95
- when 'put'
96
- @response = __put
97
- when 'delete'
98
- @response = __delete
99
- else
100
- raise Exception.new("Unknown request method, please contact SDK provider.")
101
- end
102
-
103
- end
104
-
105
- def __get
106
- form_data = ''
107
- if @params.size > 0
108
- form_data = URI.encode_www_form(@params)
109
- end
110
- request = Net::HTTP::Get.new(@uri+"?"+form_data)
111
- return @http.request(request)
112
- end
113
-
114
- def __post
115
- request = Net::HTTP::Post.new(@uri)
116
- if @params.size > 0
117
- request.form_data = @params
118
- end
119
- return @http.request(request)
120
- end
121
-
122
- def __put
123
- request = Net::HTTP::Put.new(@uri)
124
- if @params.size > 0
125
- request.form_data = @params
126
- end
127
- return @http.request(request)
128
- end
129
-
130
- def __delete
131
- request = Net::HTTP::Delete.new(@uri)
132
- if @params.size > 0
133
- request.form_data = @params
134
- end
135
- return @http.request(request)
136
- end
137
-
138
- def getResponse
139
- @response.body || nil
140
- end
141
-
142
- end