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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b2c2dbe89647944477ea3df793d97f22781ada86b58674c4bb2b69bb037b17bd
4
- data.tar.gz: 43c28beb04c58f691bb949a866eb2490cedcb8fb43ae58a248c010ad23e54bdc
3
+ metadata.gz: 21be166483ac9016af3e93792829cf213299c61ad293c9e8421bbd077cd29eb9
4
+ data.tar.gz: acd5e51154fb5dae1b673e33aeef5bb2ef7297541c4c034a7b95aefe7ec706d1
5
5
  SHA512:
6
- metadata.gz: 9288e529718029cf220cab1c63d79bf86ee2053fa3efef88a1c378e7754ce83f59f041ad812f90e9a65d108f1e7553262576376dceb5c2fff13d25d9b70efed4
7
- data.tar.gz: b9a41cf03bb03eaa034888b41b32d5b232a44e2118777eec7a584d534b9c55179d6f8fac9f22af796649e083e1ea596b077ec8abf90c4cc00991b91df2a3433b
6
+ metadata.gz: 70c30cbf7b273566adc554d3d771a383b32f2dd22ceb9ff43214584e334da7d42c5a26ef5a314a2119b7224cbd71dc18422ac3184a5dd73940e49fb284654432
7
+ data.tar.gz: 036160ccaf69aa2b55a2b3d2a45d6beb2104c7e75c2c9539165f0979bafd6b977c06a021af046b073df8e72bd4dcc729fe0b545ebb557c0b920b5f1cb183dd47
@@ -13,6 +13,7 @@ require_relative 'saas/tokens'
13
13
  require_relative 'saas/transactions'
14
14
  require_relative 'saas/users'
15
15
  require_relative 'saas/base_tokens'
16
+ require_relative 'saas/webhooks'
16
17
 
17
18
  module OSTSdk
18
19
 
@@ -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:
@@ -1,5 +1,5 @@
1
1
  module OSTSdk
2
2
 
3
- VERSION = "2.1.0"
3
+ VERSION = "2.2.0"
4
4
 
5
5
  end
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.1.0
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-03 00:00:00.000000000 Z
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