ost-sdk-ruby 0.0.6
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.
- checksums.yaml +7 -0
- data/Rakefile +8 -0
- data/lib/ost-sdk-ruby.rb +8 -0
- data/lib/ost-sdk-ruby/saas.rb +12 -0
- data/lib/ost-sdk-ruby/saas/addresses.rb +32 -0
- data/lib/ost-sdk-ruby/saas/base.rb +32 -0
- data/lib/ost-sdk-ruby/saas/transaction_kind.rb +56 -0
- data/lib/ost-sdk-ruby/saas/users.rb +68 -0
- data/lib/ost-sdk-ruby/util.rb +13 -0
- data/lib/ost-sdk-ruby/util/api_credentials.rb +32 -0
- data/lib/ost-sdk-ruby/util/common_validator.rb +50 -0
- data/lib/ost-sdk-ruby/util/http_helper.rb +187 -0
- data/lib/ost-sdk-ruby/util/result.rb +247 -0
- data/lib/ost-sdk-ruby/util/services_helper.rb +120 -0
- data/lib/ost-sdk-ruby/version.rb +5 -0
- metadata +86 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f464f45bf2828dc33b12c7b2b0082ff7b5f8f2b7
|
4
|
+
data.tar.gz: 749d9645db7f14080470aac04ba0c49b335376a8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1c8d34a8444024ec94b8cc2d9ce61d6025d6a6f61c57dcf00b0bb68fe6bb1cb5730bbaed66ec457f3488c02038b3c8b0dd0be13e6b8ee8dab18d5da547b118e5
|
7
|
+
data.tar.gz: d4ae0c67743b36f91cde79b3f822f167d6b8d5d0f725e36d568f1d9439495e9def5888a41ab3c00f34d7e6e594314a1d4540faa5fbc940353120a2744b9288c2
|
data/Rakefile
ADDED
data/lib/ost-sdk-ruby.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
module OSTSdk
|
2
|
+
|
3
|
+
module Saas
|
4
|
+
|
5
|
+
class Addresses < OSTSdk::Saas::Base
|
6
|
+
|
7
|
+
# Initialize
|
8
|
+
#
|
9
|
+
# Arguments:
|
10
|
+
# environment: (String)
|
11
|
+
# credentials: (OSTSdk::Util::APICredentials)
|
12
|
+
# api_spec: (Boolean)
|
13
|
+
#
|
14
|
+
def initialize(environment, credentials, api_spec = false)
|
15
|
+
super
|
16
|
+
@url_prefix = '/addresses'
|
17
|
+
end
|
18
|
+
|
19
|
+
# Fetches balances transaction types
|
20
|
+
#
|
21
|
+
# Returns:
|
22
|
+
# response: (OSTSdk::Util::Result)
|
23
|
+
#
|
24
|
+
def fetch_balances(params)
|
25
|
+
http_helper.send_get_request("#{@url_prefix}/fetch-utility-chain-balances", params)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module OSTSdk
|
2
|
+
|
3
|
+
module Saas
|
4
|
+
|
5
|
+
class Base
|
6
|
+
|
7
|
+
include OSTSdk::Util::ServicesHelper
|
8
|
+
|
9
|
+
attr_reader :http_helper
|
10
|
+
|
11
|
+
# Initialize
|
12
|
+
#
|
13
|
+
# Arguments:
|
14
|
+
# environment: (String)
|
15
|
+
# credentials: (OSTSdk::Util::APICredentials)
|
16
|
+
# api_spec: (Boolean)
|
17
|
+
#
|
18
|
+
def initialize(environment, credentials, api_spec)
|
19
|
+
|
20
|
+
fail 'missing param environment' if environment.nil?
|
21
|
+
fail 'missing/invalid param credentials' if credentials.nil? ||
|
22
|
+
credentials.class != OSTSdk::Util::APICredentials
|
23
|
+
|
24
|
+
@http_helper = OSTSdk::Util::HTTPHelper.new(environment, credentials, api_spec)
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module OSTSdk
|
2
|
+
|
3
|
+
module Saas
|
4
|
+
|
5
|
+
class TransactionKind < OSTSdk::Saas::Base
|
6
|
+
|
7
|
+
# Initialize
|
8
|
+
#
|
9
|
+
# Arguments:
|
10
|
+
# environment: (String)
|
11
|
+
# credentials: (OSTSdk::Util::APICredentials)
|
12
|
+
# api_spec: (Boolean)
|
13
|
+
#
|
14
|
+
def initialize(environment, credentials, api_spec = false)
|
15
|
+
super
|
16
|
+
@url_prefix = '/transaction/kind'
|
17
|
+
end
|
18
|
+
|
19
|
+
# Fetches the list of all transaction types
|
20
|
+
#
|
21
|
+
# Returns:
|
22
|
+
# response: (OSTSdk::Util::Result)
|
23
|
+
#
|
24
|
+
def list(params = {})
|
25
|
+
http_helper.send_get_request("#{@url_prefix}/get-all", params)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Creates a new transaction type
|
29
|
+
#
|
30
|
+
# Arguments:
|
31
|
+
# params: (Hash)
|
32
|
+
#
|
33
|
+
# Returns:
|
34
|
+
# response: (OSTSdk::Util::Result)
|
35
|
+
#
|
36
|
+
def create(params)
|
37
|
+
http_helper.send_post_request("#{@url_prefix}/new", params)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Updates an existing transaction type
|
41
|
+
#
|
42
|
+
# Arguments:
|
43
|
+
# params: (Hash)
|
44
|
+
#
|
45
|
+
# Returns:
|
46
|
+
# response: (OSTSdk::Util::Result)
|
47
|
+
#
|
48
|
+
def edit(params)
|
49
|
+
http_helper.send_post_request("#{@url_prefix}/edit", params)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module OSTSdk
|
2
|
+
|
3
|
+
module Saas
|
4
|
+
|
5
|
+
class Users < OSTSdk::Saas::Base
|
6
|
+
|
7
|
+
# Initialize
|
8
|
+
#
|
9
|
+
# Arguments:
|
10
|
+
# environment: (String)
|
11
|
+
# credentials: (OSTSdk::Util::APICredentials)
|
12
|
+
# api_spec: (Boolean)
|
13
|
+
#
|
14
|
+
def initialize(environment, credentials, api_spec = false)
|
15
|
+
super
|
16
|
+
@url_prefix = '/users'
|
17
|
+
end
|
18
|
+
|
19
|
+
# Create a new user
|
20
|
+
#
|
21
|
+
# Returns:
|
22
|
+
# response: (OSTSdk::Util::Result)
|
23
|
+
#
|
24
|
+
def create(params = {})
|
25
|
+
http_helper.send_post_request("#{@url_prefix}/create", params)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Edit an existing user
|
29
|
+
#
|
30
|
+
# Returns:
|
31
|
+
# response: (OSTSdk::Util::Result)
|
32
|
+
#
|
33
|
+
def edit(params = {})
|
34
|
+
http_helper.send_post_request("#{@url_prefix}/edit", params)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Fetches the list of all users
|
38
|
+
#
|
39
|
+
# Returns:
|
40
|
+
# response: (OSTSdk::Util::Result)
|
41
|
+
#
|
42
|
+
def list(params = {})
|
43
|
+
http_helper.send_post_request("#{@url_prefix}/list", params)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Airdrop Branded Token to list of users
|
47
|
+
#
|
48
|
+
# Returns:
|
49
|
+
# response: (OSTSdk::Util::Result)
|
50
|
+
#
|
51
|
+
def airdrop_tokens(params = {})
|
52
|
+
http_helper.send_post_request("#{@url_prefix}/airdrop-tokens", params)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Get status of an Airdrop request for users.
|
56
|
+
#
|
57
|
+
# Returns:
|
58
|
+
# response: (OSTSdk::Util::Result)
|
59
|
+
#
|
60
|
+
def get_airdrop_status(params = {})
|
61
|
+
http_helper.send_get_request("#{@url_prefix}/airdrop/get-status", params)
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module OSTSdk
|
2
|
+
|
3
|
+
module Util
|
4
|
+
|
5
|
+
class APICredentials
|
6
|
+
|
7
|
+
# Initialize
|
8
|
+
#
|
9
|
+
# Arguments:
|
10
|
+
# api_key: (String)
|
11
|
+
# api_secret: (String)
|
12
|
+
#
|
13
|
+
def initialize(api_key, api_secret)
|
14
|
+
@api_key = api_key
|
15
|
+
@api_secret = api_secret
|
16
|
+
end
|
17
|
+
|
18
|
+
# Returns:
|
19
|
+
# api_key: (String)
|
20
|
+
#
|
21
|
+
attr_reader :api_key
|
22
|
+
|
23
|
+
# Returns:
|
24
|
+
# api_secret: (String)
|
25
|
+
#
|
26
|
+
attr_reader :api_secret
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module OSTSdk
|
2
|
+
|
3
|
+
module Util
|
4
|
+
|
5
|
+
class CommonValidator
|
6
|
+
|
7
|
+
# Check for numeric-ness of an input
|
8
|
+
#
|
9
|
+
# Arguments:
|
10
|
+
# object: (Float)
|
11
|
+
#
|
12
|
+
# Returns:
|
13
|
+
# Boolean
|
14
|
+
#
|
15
|
+
def self.is_numeric?(object)
|
16
|
+
true if Float(object) rescue false
|
17
|
+
end
|
18
|
+
|
19
|
+
#
|
20
|
+
#
|
21
|
+
# Arguments:
|
22
|
+
# object: (Boolean)
|
23
|
+
#
|
24
|
+
# Returns:
|
25
|
+
# Boolean
|
26
|
+
#
|
27
|
+
def self.is_boolean?(object)
|
28
|
+
[
|
29
|
+
true,
|
30
|
+
false
|
31
|
+
].include?(object)
|
32
|
+
end
|
33
|
+
|
34
|
+
# Is the given object Hash
|
35
|
+
#
|
36
|
+
# Arguments:
|
37
|
+
# object: (Hash)
|
38
|
+
#
|
39
|
+
# Returns:
|
40
|
+
# Boolean
|
41
|
+
#
|
42
|
+
def self.is_a_hash?(obj)
|
43
|
+
obj.is_a?(Hash) || obj.is_a?(ActionController::Parameters)
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,187 @@
|
|
1
|
+
module OSTSdk
|
2
|
+
|
3
|
+
module Util
|
4
|
+
|
5
|
+
class HTTPHelper
|
6
|
+
|
7
|
+
require "uri"
|
8
|
+
require "open-uri"
|
9
|
+
require "openssl"
|
10
|
+
require "net/http"
|
11
|
+
require "json"
|
12
|
+
|
13
|
+
# Initialize
|
14
|
+
#
|
15
|
+
# Arguments:
|
16
|
+
# environment: (String)
|
17
|
+
# credentials: (OSTSdk::Util::APICredentials)
|
18
|
+
# api_spec: (Boolean)
|
19
|
+
#
|
20
|
+
def initialize(environment, credentials, api_spec)
|
21
|
+
set_api_base_url(environment)
|
22
|
+
@api_key = credentials.api_key
|
23
|
+
@api_secret = credentials.api_secret
|
24
|
+
@api_spec = api_spec
|
25
|
+
end
|
26
|
+
|
27
|
+
# Send POST requests
|
28
|
+
#
|
29
|
+
# Arguments:
|
30
|
+
# end_point: (String)
|
31
|
+
# request_params: (Hash)
|
32
|
+
#
|
33
|
+
# Returns:
|
34
|
+
# OSTSdk::Util::Result
|
35
|
+
#
|
36
|
+
def send_post_request(endpoint, request_params)
|
37
|
+
perform_and_handle_exceptions('u_hh_1', 'POST request failed') do
|
38
|
+
base_params = get_base_params(endpoint, request_params)
|
39
|
+
uri = post_api_uri(endpoint)
|
40
|
+
http = setup_request(uri)
|
41
|
+
r_params = base_params.merge(request_params)
|
42
|
+
if @api_spec
|
43
|
+
return OSTSdk::Util::Result.success({data: {request_uri: uri.to_s, request_type: 'POST', request_params: hash_to_query_string(r_params)}})
|
44
|
+
else
|
45
|
+
result = http.post(uri.path, hash_to_query_string(r_params))
|
46
|
+
return format_response(result)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Send GET requests
|
52
|
+
#
|
53
|
+
# Arguments:
|
54
|
+
# end_point: (String)
|
55
|
+
# request_params: (Hash)
|
56
|
+
#
|
57
|
+
# Returns:
|
58
|
+
# OSTSdk::Util::Result
|
59
|
+
#
|
60
|
+
def send_get_request(endpoint, request_params)
|
61
|
+
perform_and_handle_exceptions('u_hh_2', 'GET request Failed') do
|
62
|
+
base_params = get_base_params(endpoint, request_params)
|
63
|
+
r_params = base_params.merge(request_params)
|
64
|
+
uri = URI(get_api_url(endpoint))
|
65
|
+
uri.query = URI.encode_www_form(r_params)
|
66
|
+
if @api_spec
|
67
|
+
return OSTSdk::Util::Result.success({data: {request_uri: uri.to_s.split("?")[0], request_type: 'GET', request_params: hash_to_query_string(r_params)}})
|
68
|
+
else
|
69
|
+
result = Net::HTTP.get_response(uri)
|
70
|
+
return format_response(result)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def set_api_base_url(env)
|
78
|
+
ost_sdk_saas_api_endpoint = ENV['CA_SAAS_API_ENDPOINT']
|
79
|
+
if ost_sdk_saas_api_endpoint.present?
|
80
|
+
@api_base_url = ost_sdk_saas_api_endpoint
|
81
|
+
else
|
82
|
+
case env
|
83
|
+
when 'sandbox'
|
84
|
+
@api_base_url = 'https://sandboxapi.ost.com'
|
85
|
+
when 'main'
|
86
|
+
@api_base_url = 'https://api.ost.com'
|
87
|
+
else
|
88
|
+
fail "unrecognized ENV #{env}"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def setup_request(uri)
|
94
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
95
|
+
http.read_timeout = 5
|
96
|
+
http.open_timeout = 5
|
97
|
+
if uri.scheme == "https"
|
98
|
+
http.use_ssl = true
|
99
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
100
|
+
end
|
101
|
+
http
|
102
|
+
end
|
103
|
+
|
104
|
+
def get_base_params(endpoint, request_params)
|
105
|
+
request_timestamp = Time.now.to_i.to_s
|
106
|
+
str = endpoint + '::' + request_timestamp + '::' + format_request_params(request_params).to_json
|
107
|
+
signature = generate_signature(str)
|
108
|
+
{"request-timestamp" => request_timestamp, "signature" => signature, "api-key" => @api_key}
|
109
|
+
end
|
110
|
+
|
111
|
+
def generate_signature(string_to_sign)
|
112
|
+
digest = OpenSSL::Digest.new('sha256')
|
113
|
+
OpenSSL::HMAC.hexdigest(digest, @api_secret, string_to_sign)
|
114
|
+
end
|
115
|
+
|
116
|
+
def post_api_uri(endpoint)
|
117
|
+
URI(@api_base_url + endpoint)
|
118
|
+
end
|
119
|
+
|
120
|
+
def get_api_url(endpoint)
|
121
|
+
@api_base_url + endpoint
|
122
|
+
end
|
123
|
+
|
124
|
+
# Method which is called in service perform and handle exceptions
|
125
|
+
#
|
126
|
+
def perform_and_handle_exceptions(err_code = 'swt', err_message = 'Something Went Wrong', &block)
|
127
|
+
begin
|
128
|
+
yield if block_given?
|
129
|
+
rescue StandardError => se
|
130
|
+
OSTSdk::Util::Result.exception(se, {error: err_code, error_message: err_message})
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def format_request_params(request_params)
|
135
|
+
sorted_array = request_params.sort {|a, b| a[0].downcase <=> b[0].downcase}
|
136
|
+
sorted_hash = {}
|
137
|
+
sorted_array.each do |element|
|
138
|
+
value = element[1]
|
139
|
+
value = value.to_s
|
140
|
+
sorted_hash[element[0].to_s] = value
|
141
|
+
end
|
142
|
+
sorted_hash
|
143
|
+
end
|
144
|
+
|
145
|
+
def hash_to_query_string(hash)
|
146
|
+
str_array = []
|
147
|
+
hash.each do |k, v|
|
148
|
+
str_array << "#{k}=#{v.to_s}"
|
149
|
+
end
|
150
|
+
str_array.join('&')
|
151
|
+
end
|
152
|
+
|
153
|
+
def format_response(response)
|
154
|
+
response.code == '200' ? format_success_response(response.body) : format_failure_response(response.code)
|
155
|
+
end
|
156
|
+
|
157
|
+
def format_success_response(raw_response)
|
158
|
+
json_raw_response = JSON.parse(raw_response)
|
159
|
+
if json_raw_response['success']
|
160
|
+
OSTSdk::Util::Result.success({data: json_raw_response['data']})
|
161
|
+
else
|
162
|
+
err_data = json_raw_response['err']
|
163
|
+
OSTSdk::Util::Result.error(
|
164
|
+
{
|
165
|
+
error: err_data['code'],
|
166
|
+
error_message: err_data['msg'],
|
167
|
+
error_data: err_data['error_data']
|
168
|
+
}
|
169
|
+
)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
def format_failure_response(response_code)
|
174
|
+
OSTSdk::Util::Result.error(
|
175
|
+
{
|
176
|
+
error: response_code,
|
177
|
+
error_message: 'Non 200 HTTP Status',
|
178
|
+
http_code: response_code
|
179
|
+
}
|
180
|
+
)
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
184
|
+
|
185
|
+
end
|
186
|
+
|
187
|
+
end
|
@@ -0,0 +1,247 @@
|
|
1
|
+
module OSTSdk
|
2
|
+
|
3
|
+
module Util
|
4
|
+
|
5
|
+
class Result
|
6
|
+
|
7
|
+
attr_accessor :error,
|
8
|
+
:error_message,
|
9
|
+
:error_display_text,
|
10
|
+
:error_display_heading,
|
11
|
+
:error_data,
|
12
|
+
:message,
|
13
|
+
:data,
|
14
|
+
:exception,
|
15
|
+
:http_code
|
16
|
+
|
17
|
+
# Initialize
|
18
|
+
#
|
19
|
+
# Arguments:
|
20
|
+
# params: (Hash)
|
21
|
+
def initialize(params = {})
|
22
|
+
set_error(params)
|
23
|
+
set_message(params[:message])
|
24
|
+
set_http_code(params[:http_code])
|
25
|
+
@data = params[:data] || {}
|
26
|
+
end
|
27
|
+
|
28
|
+
# Set Error
|
29
|
+
#
|
30
|
+
# Arguments:
|
31
|
+
# params: (Hash)
|
32
|
+
def set_error(params)
|
33
|
+
@error = params[:error] if params.key?(:error)
|
34
|
+
@error_message = params[:error_message] if params.key?(:error_message)
|
35
|
+
@error_data = params[:error_data] if params.key?(:error_data)
|
36
|
+
@error_display_text = params[:error_display_text] if params.key?(:error_display_text)
|
37
|
+
@error_display_heading = params[:error_display_heading] if params.key?(:error_display_heading)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Set Message
|
41
|
+
#
|
42
|
+
# Arguments:
|
43
|
+
# msg: (String)
|
44
|
+
def set_message(msg)
|
45
|
+
@message = msg
|
46
|
+
end
|
47
|
+
|
48
|
+
# Set HTTP Code
|
49
|
+
#
|
50
|
+
# Arguments:
|
51
|
+
# msg: (String)
|
52
|
+
def set_http_code(h_c)
|
53
|
+
@http_code = h_c || 200
|
54
|
+
end
|
55
|
+
|
56
|
+
# Set Exception
|
57
|
+
#
|
58
|
+
# Arguments:
|
59
|
+
# e: (Exception)
|
60
|
+
def set_exception(e)
|
61
|
+
@exception = e
|
62
|
+
@error_data = {
|
63
|
+
msg: e.message,
|
64
|
+
trace: e.backtrace
|
65
|
+
}
|
66
|
+
end
|
67
|
+
|
68
|
+
# is valid?
|
69
|
+
#
|
70
|
+
# @return [Boolean] returns True / False
|
71
|
+
#
|
72
|
+
def valid?
|
73
|
+
!invalid?
|
74
|
+
end
|
75
|
+
|
76
|
+
# is invalid?
|
77
|
+
#
|
78
|
+
# @return [Boolean] returns True / False
|
79
|
+
#
|
80
|
+
def invalid?
|
81
|
+
errors_present?
|
82
|
+
end
|
83
|
+
|
84
|
+
# Define error / failed methods
|
85
|
+
#
|
86
|
+
[:error?, :errors?, :failed?].each do |name|
|
87
|
+
define_method(name) { invalid? }
|
88
|
+
end
|
89
|
+
|
90
|
+
# Define success method
|
91
|
+
#
|
92
|
+
[:success?].each do |name|
|
93
|
+
define_method(name) { valid? }
|
94
|
+
end
|
95
|
+
|
96
|
+
# are errors present?
|
97
|
+
#
|
98
|
+
# @return [Boolean] returns True / False
|
99
|
+
#
|
100
|
+
def errors_present?
|
101
|
+
@error ||
|
102
|
+
@error_message ||
|
103
|
+
@error_data ||
|
104
|
+
@error_display_text ||
|
105
|
+
@error_display_heading ||
|
106
|
+
@exception
|
107
|
+
end
|
108
|
+
|
109
|
+
# Exception message
|
110
|
+
#
|
111
|
+
# Returns:
|
112
|
+
# exception_message: (String)
|
113
|
+
#
|
114
|
+
def exception_message
|
115
|
+
@e_m ||= @exception.nil? ? '' : @exception.message
|
116
|
+
end
|
117
|
+
|
118
|
+
# Exception backtrace
|
119
|
+
#
|
120
|
+
# Returns:
|
121
|
+
# exception_backtrace: (String)
|
122
|
+
#
|
123
|
+
def exception_backtrace
|
124
|
+
@e_b ||= @exception.nil? ? '' : @exception.backtrace
|
125
|
+
end
|
126
|
+
|
127
|
+
# Get instance variables Hash style from object
|
128
|
+
#
|
129
|
+
def [](key)
|
130
|
+
instance_variable_get("@#{key}")
|
131
|
+
end
|
132
|
+
|
133
|
+
# Error
|
134
|
+
#
|
135
|
+
# Returns:
|
136
|
+
# obj: (OSTSdk::Util::Result)
|
137
|
+
#
|
138
|
+
def self.error(params)
|
139
|
+
new(params)
|
140
|
+
end
|
141
|
+
|
142
|
+
# Success
|
143
|
+
#
|
144
|
+
# Returns:
|
145
|
+
# obj: (OSTSdk::Util::Result)
|
146
|
+
#
|
147
|
+
def self.success(params)
|
148
|
+
new(params.merge!(no_error))
|
149
|
+
end
|
150
|
+
|
151
|
+
# Exception
|
152
|
+
#
|
153
|
+
# Returns:
|
154
|
+
# obj: (OSTSdk::Util::Result)
|
155
|
+
#
|
156
|
+
def self.exception(e, params = {})
|
157
|
+
obj = new(params)
|
158
|
+
obj.set_exception(e)
|
159
|
+
return obj
|
160
|
+
end
|
161
|
+
|
162
|
+
# No Error
|
163
|
+
#
|
164
|
+
# Returns:
|
165
|
+
# obj: (Hash)
|
166
|
+
#
|
167
|
+
def self.no_error
|
168
|
+
@n_err ||= {
|
169
|
+
error: nil,
|
170
|
+
error_message: nil,
|
171
|
+
error_data: nil,
|
172
|
+
error_display_text: nil,
|
173
|
+
error_display_heading: nil
|
174
|
+
}
|
175
|
+
end
|
176
|
+
|
177
|
+
# Fields
|
178
|
+
#
|
179
|
+
# Returns:
|
180
|
+
# obj: (Array)
|
181
|
+
#
|
182
|
+
def self.fields
|
183
|
+
error_fields + [:data, :message]
|
184
|
+
end
|
185
|
+
|
186
|
+
# Error Fields
|
187
|
+
#
|
188
|
+
# Returns:
|
189
|
+
# obj: (Array)
|
190
|
+
#
|
191
|
+
def self.error_fields
|
192
|
+
[
|
193
|
+
:error,
|
194
|
+
:error_message,
|
195
|
+
:error_data,
|
196
|
+
:error_display_text,
|
197
|
+
:error_display_heading
|
198
|
+
]
|
199
|
+
end
|
200
|
+
|
201
|
+
# Create an Hash out of all instance vars
|
202
|
+
#
|
203
|
+
# Returns:
|
204
|
+
# obj: (Hash)
|
205
|
+
#
|
206
|
+
def to_hash
|
207
|
+
self.class.fields.each_with_object({}) do |key, hash|
|
208
|
+
val = send(key)
|
209
|
+
hash[key] = val if !val.nil?
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
# To JSON
|
214
|
+
#
|
215
|
+
# Returns:
|
216
|
+
# obj: (Hash)
|
217
|
+
#
|
218
|
+
def to_json
|
219
|
+
|
220
|
+
hash = self.to_hash
|
221
|
+
|
222
|
+
if (hash[:error] == nil)
|
223
|
+
h = {
|
224
|
+
success: true
|
225
|
+
}.merge(hash)
|
226
|
+
h
|
227
|
+
else
|
228
|
+
{
|
229
|
+
success: false,
|
230
|
+
err: {
|
231
|
+
code: hash[:error],
|
232
|
+
msg: hash[:error_message],
|
233
|
+
display_text: hash[:error_display_text].to_s,
|
234
|
+
display_heading: hash[:error_display_heading].to_s,
|
235
|
+
error_data: hash[:error_data] || {}
|
236
|
+
},
|
237
|
+
data: hash[:data]
|
238
|
+
}
|
239
|
+
end
|
240
|
+
|
241
|
+
end
|
242
|
+
|
243
|
+
end
|
244
|
+
|
245
|
+
end
|
246
|
+
|
247
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
module OSTSdk
|
2
|
+
|
3
|
+
module Util
|
4
|
+
|
5
|
+
module ServicesHelper
|
6
|
+
|
7
|
+
# Wrapper Method which could be used to execute business logic
|
8
|
+
# Error handling code wraps execution of business logic
|
9
|
+
#
|
10
|
+
# Arguments:
|
11
|
+
# err_code: (String)
|
12
|
+
# err_message: (String)
|
13
|
+
# block: (Proc)
|
14
|
+
#
|
15
|
+
# Returns:
|
16
|
+
# OSTSdk::Util::Result
|
17
|
+
#
|
18
|
+
def perform_and_handle_exceptions(err_code = 'swt', err_message = 'Something Went Wrong', &block)
|
19
|
+
begin
|
20
|
+
yield if block_given?
|
21
|
+
rescue StandardError => se
|
22
|
+
OSTSdk::Util::Result.exception(se, {error: err_code, error_message: err_message, data: @params} )
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# returns current time
|
27
|
+
#
|
28
|
+
# Returns:
|
29
|
+
# Time
|
30
|
+
#
|
31
|
+
def current_time
|
32
|
+
@c_time ||= Time.now
|
33
|
+
end
|
34
|
+
|
35
|
+
# returns current timestamp
|
36
|
+
#
|
37
|
+
# Returns:
|
38
|
+
# Integer
|
39
|
+
#
|
40
|
+
def current_timestamp
|
41
|
+
@c_tstamp ||= current_time.to_f
|
42
|
+
end
|
43
|
+
|
44
|
+
# Success
|
45
|
+
#
|
46
|
+
# Returns:
|
47
|
+
# OSTSdk::Util::Result
|
48
|
+
#
|
49
|
+
def success
|
50
|
+
success_with_data({})
|
51
|
+
end
|
52
|
+
|
53
|
+
# Success with data
|
54
|
+
#
|
55
|
+
# Arguments:
|
56
|
+
# data: (Hash)
|
57
|
+
#
|
58
|
+
# Returns:
|
59
|
+
# OSTSdk::Util::Result
|
60
|
+
#
|
61
|
+
def success_with_data(data)
|
62
|
+
|
63
|
+
# Allow only Hash data to pass ahead
|
64
|
+
data = {} unless Util::CommonValidator.is_a_hash?(data)
|
65
|
+
|
66
|
+
OSTSdk::Util::Result.success({data: data})
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
# Error with data
|
71
|
+
#
|
72
|
+
# Arguments:
|
73
|
+
# code: (String)
|
74
|
+
# msg: (String)
|
75
|
+
# data: (Hash)
|
76
|
+
#
|
77
|
+
# Returns:
|
78
|
+
# OSTSdk::Util::Result
|
79
|
+
#
|
80
|
+
def error_with_data(code, msg, data = {})
|
81
|
+
|
82
|
+
OSTSdk::Util::Result.error(
|
83
|
+
{
|
84
|
+
error: code,
|
85
|
+
error_message: msg,
|
86
|
+
data: data
|
87
|
+
}
|
88
|
+
)
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
#
|
93
|
+
# Exception with data and wthout action
|
94
|
+
#
|
95
|
+
# Arguments:
|
96
|
+
# e: (Exception)
|
97
|
+
# code: (String)
|
98
|
+
# msg: (String)
|
99
|
+
# data: (Hash optional)
|
100
|
+
#
|
101
|
+
# Returns:
|
102
|
+
# OSTSdk::Util::Result
|
103
|
+
#
|
104
|
+
def exception_with_data(e, code, msg, data = {})
|
105
|
+
|
106
|
+
OSTSdk::Util::Result.exception(
|
107
|
+
e, {
|
108
|
+
error: code,
|
109
|
+
error_message: msg,
|
110
|
+
data: data
|
111
|
+
}
|
112
|
+
)
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ost-sdk-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.6
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- OST Devs
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-03-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: OST Ruby SDK provides easy integration with https://api.ost.com built
|
42
|
+
on top of OpenST Platform
|
43
|
+
email: []
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- Rakefile
|
49
|
+
- lib/ost-sdk-ruby.rb
|
50
|
+
- lib/ost-sdk-ruby/saas.rb
|
51
|
+
- lib/ost-sdk-ruby/saas/addresses.rb
|
52
|
+
- lib/ost-sdk-ruby/saas/base.rb
|
53
|
+
- lib/ost-sdk-ruby/saas/transaction_kind.rb
|
54
|
+
- lib/ost-sdk-ruby/saas/users.rb
|
55
|
+
- lib/ost-sdk-ruby/util.rb
|
56
|
+
- lib/ost-sdk-ruby/util/api_credentials.rb
|
57
|
+
- lib/ost-sdk-ruby/util/common_validator.rb
|
58
|
+
- lib/ost-sdk-ruby/util/http_helper.rb
|
59
|
+
- lib/ost-sdk-ruby/util/result.rb
|
60
|
+
- lib/ost-sdk-ruby/util/services_helper.rb
|
61
|
+
- lib/ost-sdk-ruby/version.rb
|
62
|
+
homepage: http://ost.com
|
63
|
+
licenses:
|
64
|
+
- MIT
|
65
|
+
metadata: {}
|
66
|
+
post_install_message:
|
67
|
+
rdoc_options: []
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
requirements: []
|
81
|
+
rubyforge_project:
|
82
|
+
rubygems_version: 2.2.2
|
83
|
+
signing_key:
|
84
|
+
specification_version: 4
|
85
|
+
summary: OST Ruby SDK
|
86
|
+
test_files: []
|