atpay_tokens 2.4.0 → 3.0.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 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