sage_pay 0.2.0 → 0.2.1

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.
@@ -0,0 +1,13 @@
1
+ # Changelog
2
+
3
+ # 0.2.1
4
+
5
+ * [FIX] SagePay think it's OK to have curly braces in a URL query string.
6
+ Ruby's URI library thinks otherwise. No matter who's right, one of these is
7
+ easier to change than the other.
8
+
9
+ # 0.2.0
10
+
11
+ * Initial release. This should support the full workflow for making payments,
12
+ but the notification side hasn't been tested again SagePay in the wild so
13
+ you mileage probably will vary.
@@ -6,11 +6,12 @@ require 'md5'
6
6
  require 'uuid'
7
7
 
8
8
  module SagePay
9
- VERSION = '0.2.0'
9
+ VERSION = '0.2.1'
10
10
  end
11
11
 
12
12
  require 'validatable-ext'
13
13
 
14
+ require 'sage_pay/uri_fixups'
14
15
  require 'sage_pay/server/address'
15
16
  require 'sage_pay/server/transaction_code'
16
17
  require 'sage_pay/server/signature_verification_details'
@@ -0,0 +1,42 @@
1
+ module URI
2
+ module REGEXP
3
+ module PATTERN
4
+
5
+ # FIXME: SagePay insists that curly brackets in URLs is OK, so we have
6
+ # to convince the URI parser that's the case. First we have to update
7
+ # the constant in question.
8
+ remove_const :UNRESERVED
9
+ UNRESERVED = "-_.!~*'()#{ALNUM}\{\}"
10
+
11
+ # FIXME: Then we have to update all the dependent constants we care
12
+ # about.
13
+ remove_const :URIC
14
+ remove_const :QUERY
15
+ remove_const :X_ABS_URI
16
+ URIC = "(?:[#{UNRESERVED}#{RESERVED}]|#{ESCAPED})"
17
+ QUERY = "#{URIC}*"
18
+ X_ABS_URI = "
19
+ (#{PATTERN::SCHEME}): (?# 1: scheme)
20
+ (?:
21
+ (#{PATTERN::OPAQUE_PART}) (?# 2: opaque)
22
+ |
23
+ (?:(?:
24
+ //(?:
25
+ (?:(?:(#{PATTERN::USERINFO})@)? (?# 3: userinfo)
26
+ (?:(#{PATTERN::HOST})(?::(\\d*))?))?(?# 4: host, 5: port)
27
+ |
28
+ (#{PATTERN::REG_NAME}) (?# 6: registry)
29
+ )
30
+ |
31
+ (?!//)) (?# XXX: '//' is the mark for hostport)
32
+ (#{PATTERN::ABS_PATH})? (?# 7: path)
33
+ )(?:\\?(#{PATTERN::QUERY}))? (?# 8: query)
34
+ )
35
+ (?:\\#(#{PATTERN::FRAGMENT}))? (?# 9: fragment)
36
+ "
37
+ end
38
+ remove_const :ABS_URI
39
+ ABS_URI = Regexp.new('^' + PATTERN::X_ABS_URI + '$', #'
40
+ Regexp::EXTENDED, 'N').freeze
41
+ end
42
+ end
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
7
7
  ## If your rubyforge_project name is different, then edit it and comment out
8
8
  ## the sub! line in the Rakefile
9
9
  s.name = 'sage_pay'
10
- s.version = '0.2.0'
11
- s.date = '2010-04-13'
10
+ s.version = '0.2.1'
11
+ s.date = '2010-04-14'
12
12
  s.rubyforge_project = 'sage_pay'
13
13
 
14
14
  ## Make sure your summary is short. The description may be as long
@@ -49,6 +49,7 @@ gateway for accepting credit card payments through your web app.
49
49
  ## THE MANIFEST COMMENTS, they are used as delimiters by the task.
50
50
  # = MANIFEST =
51
51
  s.files = %w[
52
+ CHANGELOG.md
52
53
  LICENSE
53
54
  README.md
54
55
  Rakefile
@@ -61,6 +62,7 @@ gateway for accepting credit card payments through your web app.
61
62
  lib/sage_pay/server/transaction_notification_response.rb
62
63
  lib/sage_pay/server/transaction_registration.rb
63
64
  lib/sage_pay/server/transaction_registration_response.rb
65
+ lib/sage_pay/uri_fixups.rb
64
66
  lib/validatable-ext.rb
65
67
  lib/validations/validates_inclusion_of.rb
66
68
  sage_pay.gemspec
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 0
9
- version: 0.2.0
8
+ - 1
9
+ version: 0.2.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Graeme Mathieson
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-13 00:00:00 +01:00
17
+ date: 2010-04-14 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -70,6 +70,7 @@ extra_rdoc_files:
70
70
  - README.md
71
71
  - LICENSE
72
72
  files:
73
+ - CHANGELOG.md
73
74
  - LICENSE
74
75
  - README.md
75
76
  - Rakefile
@@ -82,6 +83,7 @@ files:
82
83
  - lib/sage_pay/server/transaction_notification_response.rb
83
84
  - lib/sage_pay/server/transaction_registration.rb
84
85
  - lib/sage_pay/server/transaction_registration_response.rb
86
+ - lib/sage_pay/uri_fixups.rb
85
87
  - lib/validatable-ext.rb
86
88
  - lib/validations/validates_inclusion_of.rb
87
89
  - sage_pay.gemspec