atpay_tokens 2.4.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e78ea049231eadd91a3a8903d63be5c2c7c316d0
4
+ data.tar.gz: 8fa771fa8d475e287acb09014f4cf41b13625ba6
5
+ SHA512:
6
+ metadata.gz: 25e216578c2550febf9a73b1bb006da1fe8bc44b8e1ba833b47600a048216a8542b5a092dbcd7717685514d37771b0af77368fa26225b444e60f84256749e2b4
7
+ data.tar.gz: 7892ac551565aa481faf0f3e33b2a1c8d8fd9ebc5039b1f6c225e69ae983fe87c825b8f5bd7dd805364436dc97d51caa3bcdca7252c5f2669aff36950db8a19c
data/atpay_tokens.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'atpay_tokens'
3
- s.version = '2.4.0'
4
- s.date = '2014-02-27'
3
+ s.version = '3.0.0'
4
+ s.date = '2014-03-31'
5
5
  s.summary = "@Pay Token Generator"
6
6
  s.description = "Client interface for the @Pay API, key generation for performance optimization"
7
7
  s.authors = ["James Kassemi", "Glen Holcomb"]
@@ -15,7 +15,7 @@ module AtPay
15
15
  end
16
16
 
17
17
  def email_token
18
- "@#{version}#{Base64.strict_encode64([nonce, partner_frame, body_frame].join)}"
18
+ "@#{version}#{Base64.strict_encode64([nonce, partner_frame, body_frame].join)}@"
19
19
  ensure
20
20
  @nonce = nil
21
21
  end
@@ -49,7 +49,7 @@ module AtPay
49
49
  remote_addr
50
50
  ].join))
51
51
 
52
- [[message.length].pack("l>"), message,
52
+ [[message.length].pack("l>"), message,
53
53
  [remote_addr.length].pack("l>"), remote_addr].join
54
54
  end
55
55
 
@@ -1,15 +1,16 @@
1
1
  module AtPay
2
2
  class Tokenator
3
- attr_reader :token,
3
+ attr_reader :token,
4
4
  :payload,
5
- :partner_id,
6
- :source,
7
- :amount,
8
- :expires,
5
+ :partner_id,
6
+ :source,
7
+ :amount,
8
+ :expires,
9
9
  :group,
10
10
  :site_frame,
11
11
  :ip,
12
- :user_data
12
+ :user_data,
13
+ :version
13
14
 
14
15
  TARGETS = {
15
16
  /url<(.*?)>/ => [:@url, 6],
@@ -19,12 +20,14 @@ module AtPay
19
20
  }
20
21
 
21
22
  # A bit clunky but useful for testing token decomposition.
22
- # If you provide a test session then the config values there
23
+ # If you provide a test session then the config values there
23
24
  # will be used so that decryption will function without @Pay's
24
25
  # private key.
25
26
  def initialize(token, session = nil)
27
+ trim_tail token
26
28
  @token = token
27
29
  @session = session
30
+ @version = Tokenator.token_version(token)
28
31
  strip_version
29
32
 
30
33
  @checksum = Digest::SHA1.hexdigest(token) # Before or after removing version?
@@ -52,7 +55,7 @@ module AtPay
52
55
  Base64.decode64(version[1..-1]).unpack("Q>")[0]
53
56
  end
54
57
  end
55
-
58
+
56
59
 
57
60
  # We want to pull the header out of the token. This means we
58
61
  # grab the nonce and the partner id from the token. The version
@@ -104,7 +107,7 @@ module AtPay
104
107
 
105
108
  # Fix our Base64 problems
106
109
  def decode
107
- @token = Base64.decode64 @token
110
+ @token = Base64.decode64 @token
108
111
  end
109
112
 
110
113
  # Extract our entropy
@@ -150,10 +153,10 @@ module AtPay
150
153
  target raw_target
151
154
 
152
155
  if @group
153
- @group = @payload.slice!(0, @group.index("/"))
156
+ @group = @payload.slice!(0, @group.index("/"))
154
157
  @payload.slice!(0, 1)
155
158
  end
156
-
159
+
157
160
  @amount = parse_amount!
158
161
  @expiration = parse_expiration!
159
162
  @user_data = parse_user_data!
@@ -183,5 +186,10 @@ module AtPay
183
186
  instance_variable_set TARGETS[match][0], $1.dup
184
187
  @payload.slice!(0, ($1.length + TARGETS[match][1]))
185
188
  end
189
+
190
+ # Remove the trailing @ if it's present on the token
191
+ def trim_tail(token)
192
+ token.chomp! '@'
193
+ end
186
194
  end
187
195
  end
@@ -37,7 +37,7 @@ describe AtPay::SecurityKey do
37
37
  it "fails when amount not float" do
38
38
  expect {
39
39
  AtPay::SecurityKey.new(session, {
40
- :amount => "25",
40
+ :amount => "25",
41
41
  :email => "test@example.com"
42
42
  })
43
43
  }.to raise_error
@@ -90,5 +90,12 @@ describe AtPay::SecurityKey do
90
90
  it "returns a key with user_data" do
91
91
  key = AtPay::SecurityKey.new(session, {:email => "glen@atpay.com", :amount => 25.00, :user_data => 'bacon and eggs'}).to_s
92
92
  end
93
+
94
+ it "encapsulates the key with @" do
95
+ key = AtPay::SecurityKey.new(session, {email: 'glen@atpay.com', amount: 25.00}).to_s
96
+
97
+ expect(key[0]).to eq('@')
98
+ expect(key[-1]).to eq('@')
99
+ end
93
100
  end
94
101
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atpay_tokens
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
5
- prerelease:
4
+ version: 3.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - James Kassemi
@@ -10,54 +9,48 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2014-02-27 00:00:00.000000000 Z
12
+ date: 2014-03-31 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: ffi
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - '>='
21
19
  - !ruby/object:Gem::Version
22
20
  version: '0'
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - '>='
29
26
  - !ruby/object:Gem::Version
30
27
  version: '0'
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: rbnacl
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ! '>='
32
+ - - '>='
37
33
  - !ruby/object:Gem::Version
38
34
  version: '0'
39
35
  type: :runtime
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ! '>='
39
+ - - '>='
45
40
  - !ruby/object:Gem::Version
46
41
  version: '0'
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: trollop
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
- - - ! '>='
46
+ - - '>='
53
47
  - !ruby/object:Gem::Version
54
48
  version: '0'
55
49
  type: :runtime
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
- - - ! '>='
53
+ - - '>='
61
54
  - !ruby/object:Gem::Version
62
55
  version: '0'
63
56
  description: Client interface for the @Pay API, key generation for performance optimization
@@ -89,28 +82,27 @@ files:
89
82
  - spec/helper.rb
90
83
  homepage: https://atpay.com
91
84
  licenses: []
85
+ metadata: {}
92
86
  post_install_message:
93
87
  rdoc_options: []
94
88
  require_paths:
95
89
  - lib
96
90
  required_ruby_version: !ruby/object:Gem::Requirement
97
- none: false
98
91
  requirements:
99
- - - ! '>='
92
+ - - '>='
100
93
  - !ruby/object:Gem::Version
101
94
  version: '0'
102
95
  required_rubygems_version: !ruby/object:Gem::Requirement
103
- none: false
104
96
  requirements:
105
- - - ! '>='
97
+ - - '>='
106
98
  - !ruby/object:Gem::Version
107
99
  version: '0'
108
100
  requirements: []
109
101
  rubyforge_project:
110
- rubygems_version: 1.8.23
102
+ rubygems_version: 2.0.14
111
103
  signing_key:
112
- specification_version: 3
113
- summary: ! '@Pay Token Generator'
104
+ specification_version: 4
105
+ summary: '@Pay Token Generator'
114
106
  test_files:
115
107
  - spec/atpay/config_spec.rb
116
108
  - spec/atpay/security_key_spec.rb