ost-sdk-ruby 2.1.0 → 2.2.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.
- checksums.yaml +4 -4
- data/lib/ost-sdk-ruby/saas.rb +1 -0
- data/lib/ost-sdk-ruby/saas/base.rb +12 -0
- data/lib/ost-sdk-ruby/saas/manifest.rb +2 -1
- data/lib/ost-sdk-ruby/saas/webhooks.rb +90 -0
- data/lib/ost-sdk-ruby/test/webhooks_test.rb +72 -0
- data/lib/ost-sdk-ruby/util/http_helper.rb +27 -0
- data/lib/ost-sdk-ruby/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21be166483ac9016af3e93792829cf213299c61ad293c9e8421bbd077cd29eb9
|
4
|
+
data.tar.gz: acd5e51154fb5dae1b673e33aeef5bb2ef7297541c4c034a7b95aefe7ec706d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70c30cbf7b273566adc554d3d771a383b32f2dd22ceb9ff43214584e334da7d42c5a26ef5a314a2119b7224cbd71dc18422ac3184a5dd73940e49fb284654432
|
7
|
+
data.tar.gz: 036160ccaf69aa2b55a2b3d2a45d6beb2104c7e75c2c9539165f0979bafd6b977c06a021af046b073df8e72bd4dcc729fe0b545ebb557c0b920b5f1cb183dd47
|
data/lib/ost-sdk-ruby/saas.rb
CHANGED
@@ -54,6 +54,18 @@ module OSTSdk
|
|
54
54
|
get_value_for_key!(params, "user_id")
|
55
55
|
end
|
56
56
|
|
57
|
+
# Get webhook_id key from params hash and delete it
|
58
|
+
#
|
59
|
+
# Arguments:
|
60
|
+
# params: (Hash)
|
61
|
+
#
|
62
|
+
# Returns:
|
63
|
+
# user_id: (String)
|
64
|
+
#
|
65
|
+
def get_webhook_id!(params)
|
66
|
+
get_value_for_key!(params, "webhook_id")
|
67
|
+
end
|
68
|
+
|
57
69
|
# Get chain_id key from params hash and delete it
|
58
70
|
#
|
59
71
|
# Arguments:
|
@@ -5,7 +5,7 @@ module OSTSdk
|
|
5
5
|
class Manifest
|
6
6
|
|
7
7
|
attr_reader :balance, :chains, :device_managers, :devices, :price_points, :recovery_owners, :rules,
|
8
|
-
:sessions, :tokens, :transactions, :users, :base_tokens
|
8
|
+
:sessions, :tokens, :transactions, :users, :base_tokens, :webhooks
|
9
9
|
|
10
10
|
# Initialize
|
11
11
|
#
|
@@ -31,6 +31,7 @@ module OSTSdk
|
|
31
31
|
@transactions = OSTSdk::Saas::Transactions.new(params)
|
32
32
|
@users = OSTSdk::Saas::Users.new(params)
|
33
33
|
@base_tokens = OSTSdk::Saas::BaseTokens.new(params)
|
34
|
+
@webhooks = OSTSdk::Saas::Webhooks.new(params)
|
34
35
|
|
35
36
|
end
|
36
37
|
|
@@ -0,0 +1,90 @@
|
|
1
|
+
module OSTSdk
|
2
|
+
|
3
|
+
module Saas
|
4
|
+
|
5
|
+
class Webhooks < OSTSdk::Saas::Base
|
6
|
+
|
7
|
+
# Initialize
|
8
|
+
#
|
9
|
+
# Arguments:
|
10
|
+
# api_base_url: (String)
|
11
|
+
# api_key: (String)
|
12
|
+
# api_secret: (String)
|
13
|
+
# api_spec: (Boolean)
|
14
|
+
# config: (Hash)
|
15
|
+
#
|
16
|
+
def initialize(params)
|
17
|
+
super
|
18
|
+
@url_prefix = '/webhooks'
|
19
|
+
end
|
20
|
+
|
21
|
+
# Create a Webhook
|
22
|
+
#
|
23
|
+
# Returns:
|
24
|
+
# response: (Hash)
|
25
|
+
#
|
26
|
+
def create(params = {})
|
27
|
+
http_helper.send_post_request("#{@url_prefix}/", params)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Update a Webhook
|
31
|
+
#
|
32
|
+
# Returns:
|
33
|
+
# response: (Hash)
|
34
|
+
#
|
35
|
+
def update(params = {})
|
36
|
+
http_helper.send_post_request("#{@url_prefix}/#{get_webhook_id!(params)}", params)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Get webhook details
|
40
|
+
#
|
41
|
+
# Returns:
|
42
|
+
# response: (Hash)
|
43
|
+
#
|
44
|
+
def get(params = {})
|
45
|
+
http_helper.send_get_request("#{@url_prefix}/#{get_webhook_id!(params)}", params)
|
46
|
+
end
|
47
|
+
|
48
|
+
# List Webhooks
|
49
|
+
#
|
50
|
+
# Returns:
|
51
|
+
# response: (Hash)
|
52
|
+
#
|
53
|
+
def get_list(params = {})
|
54
|
+
http_helper.send_get_request("#{@url_prefix}/", params)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Delete a Webhook
|
58
|
+
#
|
59
|
+
# Returns:
|
60
|
+
# response: (Hash)
|
61
|
+
#
|
62
|
+
def delete(params = {})
|
63
|
+
http_helper.send_delete_request("#{@url_prefix}/#{get_webhook_id!(params)}", params)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Verify webhook request signature
|
67
|
+
#
|
68
|
+
# Returns:
|
69
|
+
# response: (Boolean)
|
70
|
+
#
|
71
|
+
def verify_signature(params = {})
|
72
|
+
version = params[:version]
|
73
|
+
webhook_secret = params[:webhook_secret]
|
74
|
+
stringified_data = params[:stringified_data]
|
75
|
+
request_timestamp = params[:request_timestamp]
|
76
|
+
signature = params[:signature]
|
77
|
+
|
78
|
+
signature_params = "#{request_timestamp}.#{version}.#{stringified_data}"
|
79
|
+
digest = OpenSSL::Digest.new('sha256')
|
80
|
+
signature_to_be_verified = OpenSSL::HMAC.hexdigest(digest, webhook_secret, signature_params)
|
81
|
+
|
82
|
+
signature == signature_to_be_verified
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require_relative "../../../lib/ost-sdk-ruby/util"
|
2
|
+
require_relative "../../../lib/ost-sdk-ruby/saas"
|
3
|
+
require "test/unit"
|
4
|
+
require_relative "../../../lib/config"
|
5
|
+
|
6
|
+
class UsersTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def webhooks_service
|
9
|
+
@webhooks_service ||= Config::OST_SDK.services.webhooks
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_webhooks_create
|
13
|
+
result = webhooks_service.create({
|
14
|
+
topics: ['transactions/initiate', 'transactions/success'],
|
15
|
+
url: 'https://testingWebhooks.com'
|
16
|
+
})
|
17
|
+
puts "result=>#{result}" unless result["success"]
|
18
|
+
webhook_id = result["data"]["webhook"]["id"]
|
19
|
+
webhooks_get(webhook_id)
|
20
|
+
webhooks_get_all
|
21
|
+
webhooks_update(webhook_id)
|
22
|
+
webhooks_delete(webhook_id)
|
23
|
+
assert_equal(result["success"], true)
|
24
|
+
end
|
25
|
+
|
26
|
+
def webhooks_get(webhook_id)
|
27
|
+
result = webhooks_service.get({
|
28
|
+
webhook_id: webhook_id
|
29
|
+
})
|
30
|
+
puts "result=>#{result}" unless result["success"]
|
31
|
+
assert_equal(result["success"], true)
|
32
|
+
end
|
33
|
+
|
34
|
+
def webhooks_get_all
|
35
|
+
result = webhooks_service.get_list()
|
36
|
+
puts "result=>#{result}" unless result["success"]
|
37
|
+
assert_equal(result["success"], true)
|
38
|
+
end
|
39
|
+
|
40
|
+
def webhooks_update(webhook_id)
|
41
|
+
result = webhooks_service.update({
|
42
|
+
webhook_id: webhook_id,
|
43
|
+
topics: ['transactions/initiate', 'transactions/success', 'transactions/failure'],
|
44
|
+
status: 'inactive'
|
45
|
+
})
|
46
|
+
puts "result=>#{result}" unless result["success"]
|
47
|
+
assert_equal(result["success"], true)
|
48
|
+
end
|
49
|
+
|
50
|
+
def webhooks_delete(webhook_id)
|
51
|
+
result = webhooks_service.delete({
|
52
|
+
webhook_id: webhook_id,
|
53
|
+
})
|
54
|
+
puts "result=>#{result}" unless result["success"]
|
55
|
+
assert_equal(result["success"], true)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_webhooks_verify_signature
|
59
|
+
data = {}
|
60
|
+
data[:hello] = 'hello'
|
61
|
+
result = webhooks_service.verify_signature({
|
62
|
+
version: "2",
|
63
|
+
webhook_secret: "mySecret",
|
64
|
+
request_timestamp: "1559902637",
|
65
|
+
signature: "2c56c143550c603a6ff47054803f03ee4755c9c707986ae27f7ca1dd1c92a824",
|
66
|
+
stringified_data: data.to_json
|
67
|
+
})
|
68
|
+
puts "result=>#{result}" unless result
|
69
|
+
assert_equal(result, true)
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
@@ -81,6 +81,33 @@ module OSTSdk
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
+
# Send DELETE requests
|
85
|
+
#
|
86
|
+
# Arguments:
|
87
|
+
# end_point: (String)
|
88
|
+
# request_params: (Hash)
|
89
|
+
#
|
90
|
+
# Returns:
|
91
|
+
# response: (Hash)
|
92
|
+
#
|
93
|
+
def send_delete_request(endpoint, request_params)
|
94
|
+
perform_and_handle_exceptions('u_hh_3', 'DELETE request Failed') do
|
95
|
+
escaped_query_string = get_query_string(endpoint, request_params)
|
96
|
+
raw_url = get_api_url(endpoint) + "?#{escaped_query_string}"
|
97
|
+
uri = URI(raw_url)
|
98
|
+
http = setup_request(uri)
|
99
|
+
if @api_spec
|
100
|
+
return {request_uri: uri.to_s.split("?")[0], request_type: 'DELETE', request_params: escaped_query_string}
|
101
|
+
else
|
102
|
+
result = {}
|
103
|
+
Timeout.timeout(@timeout) do
|
104
|
+
result = http.delete(uri)
|
105
|
+
end
|
106
|
+
return format_response(result)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
84
111
|
# Generate a signature for test case. It only creates a signature for a given Hash
|
85
112
|
#
|
86
113
|
# Arguments:
|
data/lib/ost-sdk-ruby/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ost-sdk-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OST.com Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-unit
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- lib/ost-sdk-ruby/saas/tokens.rb
|
63
63
|
- lib/ost-sdk-ruby/saas/transactions.rb
|
64
64
|
- lib/ost-sdk-ruby/saas/users.rb
|
65
|
+
- lib/ost-sdk-ruby/saas/webhooks.rb
|
65
66
|
- lib/ost-sdk-ruby/test/balance_test.rb
|
66
67
|
- lib/ost-sdk-ruby/test/base_tokens_test.rb
|
67
68
|
- lib/ost-sdk-ruby/test/chains_test.rb
|
@@ -75,6 +76,7 @@ files:
|
|
75
76
|
- lib/ost-sdk-ruby/test/tokens_test.rb
|
76
77
|
- lib/ost-sdk-ruby/test/transactions_test.rb
|
77
78
|
- lib/ost-sdk-ruby/test/users_test.rb
|
79
|
+
- lib/ost-sdk-ruby/test/webhooks_test.rb
|
78
80
|
- lib/ost-sdk-ruby/util.rb
|
79
81
|
- lib/ost-sdk-ruby/util/api_credentials.rb
|
80
82
|
- lib/ost-sdk-ruby/util/common_validator.rb
|