mozpay 0.0.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,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6d900afc8385d9d40d8ea14972672e78cd6ff87f
4
+ data.tar.gz: 4aef6ed73b3824ccf2670704540a422506b8ca68
5
+ SHA512:
6
+ metadata.gz: 272644a5d559370b657b227a7ebde2f1d2266d020ea226efb3c61f75479bc2bced177d1c3e7dc43507b6c9f310e0d179a9fe982a4f94c02ad22fb39e2c84cea8
7
+ data.tar.gz: 9fef5293d9eb6ecf1074dfb652cb06c5fbcbe64c93ebcda7a91e5c40cef95657c70b311c64513ab44b9c07ec632af6910ad4e1632707ac7792a923c52a37fe4b
@@ -0,0 +1 @@
1
+ require 'mozpay/base'
@@ -0,0 +1,180 @@
1
+ require 'jwt'
2
+
3
+ class Pay
4
+
5
+ # This is here solely to make sure I set up tests correctly.
6
+
7
+ def self.hi
8
+ return "Hello world!"
9
+ end
10
+
11
+ # This array keeps track of the tokens waiting for marketplace responses
12
+
13
+ @@purchaseQueue = {}
14
+
15
+ ##
16
+ # Check purchaseQueue to see if token has resolved
17
+ #
18
+ # @param {Object} token
19
+ # @api public
20
+ ##
21
+
22
+ def self.checkQueue(token)
23
+ status = @@purchaseQueue[token]
24
+ if status
25
+ if status != 'processing'
26
+ delete @@purchaseQueue[token]
27
+ end
28
+ return status || 'notfound'
29
+ else
30
+ return 'notfound'
31
+ end
32
+ end
33
+
34
+ # ##
35
+ # # Receive successful postback and mark token in queue accordingly
36
+ # #
37
+ # # @param {Object} token
38
+ # # @api public
39
+ # ##
40
+
41
+ # def self.postback(token)
42
+ # purchaseQueue[token] = 'success'
43
+ # end
44
+
45
+ # ##
46
+ # # Receive chargeback and mark token in queue accordingly
47
+ # #
48
+ # # @param {Object} settings
49
+ # # @api public
50
+ # ##
51
+
52
+ # def self.chargeback(token)
53
+ # purchaseQueue[token] = 'failure'
54
+ # end
55
+
56
+ # ##
57
+ # # Configure global settings.
58
+ # #
59
+ # # @param {Object} settings
60
+ # # @api public
61
+ # ##
62
+
63
+ # defaultConfig { 'mozPayAudience' => 'marketplace.firefox.com', 'mozPayType' => 'mozilla/payments/pay/', 'mozPayRoutePrefix' => '/mozpay'}
64
+ # config = defaultConfig;
65
+
66
+ # def self.configure(options)
67
+ # begin
68
+ # options = config.clone().merge(options)
69
+ # # don't I want to assign to config here?
70
+ # rescue
71
+ # raise 'Problem with options passed in, probably they were bad for some reason.'
72
+ # end
73
+
74
+ # if config['mozPayKey'].empty? || config['mozPaySecret'].empty?
75
+ # raise 'Missing mozPayKey or mozPaySecret'
76
+ # end
77
+
78
+ # puts(options)
79
+ # # 'cause I'm not sure if I did this right
80
+ # end
81
+
82
+ # def self.resetConfig
83
+ # config = defaultConfig
84
+ # # or should this be nil
85
+ # end
86
+
87
+ ##
88
+ # Encode a JWT payment request.
89
+ #
90
+ # @param {Object} request
91
+ # @api public
92
+ ##
93
+
94
+ def self.request(payload)
95
+ jwt_encoded = JWT.encode(payload, config.mozPaySecret, "HS256")
96
+ purchaseQueue[payload[productData]] = 'processing';
97
+ return jwt_encoded
98
+ end
99
+
100
+ # ##
101
+ # # Verify an incoming JWT payment notice.
102
+ # #
103
+ # # @param {String} encoded JWT
104
+ # # @api public
105
+ # ##
106
+
107
+ # def self.verify
108
+ # return JWT.decode(foreignJWT, config.mozPaySecret)
109
+ # end
110
+
111
+ # ##
112
+ # # Issue a JWT object (i.e. not encoded) for a payment request.
113
+ # #
114
+ # # @param {Object} request
115
+ # # @api public
116
+ # ##
117
+
118
+ # def self.issueRequest(request)
119
+ # requireConfig()
120
+ # return { 'iss' => config.mozPayKey, 'aud' => config.mozPayAudience, 'type' => 'config.mozPayType', 'iat' => self.now(), 'exp' => (self.now() + 3600), 'request' => request }
121
+ # end
122
+
123
+ # ##
124
+ # # Validate the JWT iat/exp/nbf claims.
125
+ # ##
126
+ # # pay.validateClaims = function(data) {
127
+ # # var now = pay.now();
128
+ # # if (!data.exp || !data.iat) {
129
+ # # throw new Error('JWT is missing the iat or exp claim properties');
130
+ # # }
131
+ # # if (+data.exp < now) {
132
+ # # throw new Error('JWT from iss ' + data.iss + ' expired: ' + data.exp + ' < ' + now);
133
+ # # }
134
+ # # if (data.nbf) {
135
+ # # // Honor the optional nbf (not before) timestamp.
136
+ # # if (+data.nbf > (now + 120)) { // pad for clock skew
137
+ # # throw new Error('JWT from iss ' + data.iss + ' cannot be processed: nbf=' + data.nbf + ' > ' + now);
138
+ # # }
139
+ # # }
140
+ # # }
141
+ # def self.validateClaims(data)
142
+ # now = self.now()
143
+
144
+ # if !data.has_key?('exp') || !data.has_key?('iat')
145
+ # raise 'JWT is missing the iat or exp claim properties'
146
+ # end
147
+
148
+ # if data['exp'] < now
149
+ # raise 'JWT from iss' + data['iss'] + ' expired ' + data['exp'] + ' < ' + now
150
+ # end
151
+
152
+ # if data.has_key?('nbf')
153
+ # # Honor the optional nbf (not before) timestamp
154
+ # if data['nbf'] > (now + 120) # pad for clock skew
155
+ # raise 'JWT from iss' + data['iss'] + ' cannot be processed: nbf = ' + data['nbf'] + ' > ' + now
156
+ # end
157
+ # end
158
+
159
+ # end
160
+
161
+
162
+ # ##
163
+ # # Return current UTC unix timestamp.
164
+ # ##
165
+
166
+ # def self.now
167
+ # return Time.new()
168
+ # end
169
+
170
+ # ##
171
+ # # Check if configure() has been called
172
+ # ##
173
+
174
+ # def self.requireConfig
175
+ # if !config
176
+ # raise 'configure() must be called before anything else.'
177
+ # end
178
+ # end
179
+
180
+ end
@@ -0,0 +1,3 @@
1
+ module Mozpay
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,8 @@
1
+ require 'test/unit'
2
+ require 'mozpay'
3
+
4
+ class MozpayTest < Test::Unit::TestCase
5
+ def test_hello
6
+ assert_equal "Hello world!", Mozpay.hi
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mozpay
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Angelina Fabbro
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jwt
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.8
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.8
27
+ description: This is a rubygem for processing navigator.mozPay() payments on a server.
28
+ email:
29
+ - angelina@mozilla.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - lib/mozpay/base.rb
35
+ - lib/mozpay/version.rb
36
+ - lib/mozpay.rb
37
+ - test/test_mozpay.rb
38
+ homepage: ''
39
+ licenses: []
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubyforge_project:
57
+ rubygems_version: 2.1.5
58
+ signing_key:
59
+ specification_version: 4
60
+ summary: Implements navigator.mozPay()
61
+ test_files:
62
+ - test/test_mozpay.rb