straight-server 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/examples/client/client.html +2 -0
- data/examples/client/client.js +1 -1
- data/lib/straight-server/gateway.rb +3 -3
- data/lib/straight-server/orders_controller.rb +7 -1
- data/spec/lib/gateway_spec.rb +5 -3
- data/straight-server.gemspec +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52533bcd5fc953b35fd81b8bf7f4a4b974954b01
|
4
|
+
data.tar.gz: 6d43d836466f5d29f849536b08286ee7497973f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1350baf54ebb72e7baf2ccfefd48fe9ffd39c309436e9ed9e52f2f174736935e6b0e9d424e6bf08bff5f1fefc6ae5c0a54343bf3082e11b285c82b606d99f461
|
7
|
+
data.tar.gz: 199b84bf7ed343c417d29d92195180c753ae73da916cd45dd4297d16b62253287ffc977056a9cc2164f8ba4ac4da09c8572368283b0b0de3f0d022b9d91fb903
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
data/examples/client/client.html
CHANGED
@@ -15,6 +15,8 @@
|
|
15
15
|
|
16
16
|
<p>Use this form to generate a new order:</p>
|
17
17
|
Gateway id: <input name="gateway_id"/><br/>
|
18
|
+
Signature: <input name="signature"/><br/>
|
19
|
+
Keychain id: <input name="order_id"/><br/>
|
18
20
|
Amount (in default currency for the gateway, usually in satoshi, but could be USD or EUR): <input name="amount"/>
|
19
21
|
<p><button id="create_order">Create Order</button></p>
|
20
22
|
</div>
|
data/examples/client/client.js
CHANGED
@@ -5,7 +5,7 @@ jQuery(function($) {
|
|
5
5
|
url: '/gateways/' + $("input[name=gateway_id]").val() + '/orders',
|
6
6
|
type: 'POST',
|
7
7
|
dataType: 'json',
|
8
|
-
data: { amount: $("input[name=amount]").val() },
|
8
|
+
data: { amount: $("input[name=amount]").val(), signature: $("input[name=signature]").val(), order_id :$("input[name=order_id]").val() },
|
9
9
|
success: function(response) {
|
10
10
|
window.location = '/pay/' + response.payment_id
|
11
11
|
}
|
@@ -111,11 +111,11 @@ module StraightServer
|
|
111
111
|
|
112
112
|
StraightServer.logger.info "Creating new order with attrs: #{attrs}"
|
113
113
|
signature = attrs.delete(:signature)
|
114
|
-
if !check_signature || sign_with_secret(attrs[:
|
115
|
-
raise InvalidOrderId if check_signature && (attrs[:
|
114
|
+
if !check_signature || sign_with_secret(attrs[:keychain_id]) == signature
|
115
|
+
raise InvalidOrderId if check_signature && (attrs[:keychain_id].nil? || attrs[:keychain_id].to_i <= 0)
|
116
116
|
order = order_for_keychain_id(
|
117
117
|
amount: attrs[:amount],
|
118
|
-
keychain_id: increment_last_keychain_id!,
|
118
|
+
keychain_id: attrs[:keychain_id] || increment_last_keychain_id!,
|
119
119
|
currency: attrs[:currency],
|
120
120
|
btc_denomination: attrs[:btc_denomination]
|
121
121
|
)
|
@@ -24,7 +24,7 @@ module StraightServer
|
|
24
24
|
amount: @params['amount'], # this is satoshi
|
25
25
|
currency: @params['currency'],
|
26
26
|
btc_denomination: @params['btc_denomination'],
|
27
|
-
|
27
|
+
keychain_id: @params['order_id'],
|
28
28
|
signature: @params['signature'],
|
29
29
|
data: @params['data']
|
30
30
|
}
|
@@ -56,6 +56,12 @@ module StraightServer
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def show
|
59
|
+
|
60
|
+
unless @gateway
|
61
|
+
StraightServer.logger.warn "Gateway not found"
|
62
|
+
return [404, {}, "Gateway not found" ]
|
63
|
+
end
|
64
|
+
|
59
65
|
order = Order[@params['id']] || (@params['id'] =~ /[^\d]+/ && Order[:payment_id => @params['id']])
|
60
66
|
if order
|
61
67
|
order.status(reload: true)
|
data/spec/lib/gateway_spec.rb
CHANGED
@@ -14,7 +14,7 @@ RSpec.describe StraightServer::Gateway do
|
|
14
14
|
@gateway.last_keychain_id = 0
|
15
15
|
expect( -> { @gateway.create_order(amount: 1, signature: 'invalid', id: 1) }).to raise_exception(StraightServer::GatewayModule::InvalidSignature)
|
16
16
|
expect(@gateway).to receive(:order_for_keychain_id).with(@order_for_keychain_id_args).once.and_return(@order_mock)
|
17
|
-
@gateway.create_order(amount: 1, signature: hmac_sha256(1, 'secret'),
|
17
|
+
@gateway.create_order(amount: 1, signature: hmac_sha256(1, 'secret'), keychain_id: 1)
|
18
18
|
end
|
19
19
|
|
20
20
|
it "checks md5 signature only if that setting is set ON for a particular gateway" do
|
@@ -164,12 +164,13 @@ RSpec.describe StraightServer::Gateway do
|
|
164
164
|
end
|
165
165
|
|
166
166
|
it "saves and retrieves last_keychain_id from the file in the .straight dir" do
|
167
|
+
@gateway.check_signature = false
|
167
168
|
expect(File.read("#{ENV['HOME']}/.straight/default_last_keychain_id").to_i).to eq(0)
|
168
169
|
@gateway.increment_last_keychain_id!
|
169
170
|
expect(File.read("#{ENV['HOME']}/.straight/default_last_keychain_id").to_i).to eq(1)
|
170
171
|
|
171
172
|
expect(@gateway).to receive(:order_for_keychain_id).with(@order_for_keychain_id_args.merge({ keychain_id: 2})).once.and_return(@order_mock)
|
172
|
-
@gateway.create_order(amount: 1
|
173
|
+
@gateway.create_order(amount: 1)
|
173
174
|
expect(File.read("#{ENV['HOME']}/.straight/default_last_keychain_id").to_i).to eq(2)
|
174
175
|
end
|
175
176
|
|
@@ -197,13 +198,14 @@ RSpec.describe StraightServer::Gateway do
|
|
197
198
|
end
|
198
199
|
|
199
200
|
it "saves and retrieves last_keychain_id from the db" do
|
201
|
+
@gateway.check_signature = false
|
200
202
|
@gateway.save
|
201
203
|
expect(DB[:gateways][:name => 'default'][:last_keychain_id]).to eq(0)
|
202
204
|
@gateway.increment_last_keychain_id!
|
203
205
|
expect(DB[:gateways][:name => 'default'][:last_keychain_id]).to eq(1)
|
204
206
|
|
205
207
|
expect(@gateway).to receive(:order_for_keychain_id).with(@order_for_keychain_id_args.merge({ keychain_id: 2})).once.and_return(@order_mock)
|
206
|
-
@gateway.create_order(amount: 1
|
208
|
+
@gateway.create_order(amount: 1)
|
207
209
|
expect(DB[:gateways][:name => 'default'][:last_keychain_id]).to eq(2)
|
208
210
|
end
|
209
211
|
|
data/straight-server.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: straight-server 0.2.
|
5
|
+
# stub: straight-server 0.2.2 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "straight-server"
|
9
|
-
s.version = "0.2.
|
9
|
+
s.version = "0.2.2"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Roman Snitko"]
|
14
|
-
s.date = "2015-05-
|
14
|
+
s.date = "2015-05-10"
|
15
15
|
s.description = "Accepts orders via http, returns payment info via http or streams updates via websockets, stores orders in a DB"
|
16
16
|
s.email = "roman.snitko@gmail.com"
|
17
17
|
s.executables = ["goliath.log", "goliath.log_stdout.log", "straight-console", "straight-server", "straight-server-benchmark"]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: straight-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roman Snitko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: straight
|