paypal_permissions 0.0.5.1 → 0.0.5.2

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.
@@ -56,7 +56,6 @@ end
56
56
  end
57
57
 
58
58
  def copy_initializer
59
- # Nothing in the initializer yet, but once there is, just uncomment the following.
60
59
  template "paypal_permissions.rb", "config/initializers/paypal_permissions.rb"
61
60
  end
62
61
 
@@ -1,2 +1,3 @@
1
1
  require "paypal_permissions/version"
2
2
  require "paypal_permissions/paypal_permissions_gateway"
3
+ require "paypal_permissions/parsers"
@@ -0,0 +1,5 @@
1
+ require 'paypal_permissions/parsers/common'
2
+ require 'paypal_permissions/parsers/request_permissions'
3
+ require 'paypal_permissions/parsers/get_access_token'
4
+ require 'paypal_permissions/parsers/get_basic_personal_data'
5
+ require 'paypal_permissions/parsers/get_advanced_personal_data'
@@ -0,0 +1,67 @@
1
+ module ActiveMerchant
2
+ module Billing
3
+ module PaypalPermissions
4
+ module Parsers
5
+ class CommonNVParser
6
+ class << self
7
+ def parse nvp_response
8
+ @response = {
9
+ :raw_response => nvp_response,
10
+ :errors => [
11
+ ],
12
+ }
13
+ end
14
+
15
+ def process_envelope_pair n, v
16
+ case n
17
+ when "responseEnvelope.timestamp"
18
+ @response[:timestamp] = v
19
+ when "responseEnvelope.ack"
20
+ @response[:ack] = v
21
+ when "responseEnvelope.correlationId"
22
+ @response[:correlation_id] = v
23
+ when "responseEnvelope.build"
24
+ # do nothing
25
+ end
26
+ end
27
+
28
+ def process_error_idx error_idx
29
+ if @response[:errors].length <= error_idx
30
+ @response[:errors] << { :parameters => [] }
31
+ raise if @response[:errors].length <= error_idx
32
+ end
33
+ end
34
+
35
+ def process_error_pair n, v
36
+ n =~ /^error\((\d+)\)/
37
+ error_idx = $1
38
+ process_error_idx error_idx
39
+
40
+ case n
41
+ when /^error\(\d+\)\.errorId$/
42
+ @response[:errors][error_idx][:error_id] = v
43
+ when /^error\(\d+\)\.domain$/
44
+ @response[:errors][error_idx][:domain] = v
45
+ when /^error\(\d+\)\.subdomain$/
46
+ @response[:errors][error_idx][:subdomain] = v
47
+ when /^error\(\d+\)\.severity$/
48
+ @response[:errors][error_idx][:severity] = v
49
+ when /^error\(\d+\)\.category$/
50
+ @response[:errors][error_idx][:category] = v
51
+ when /^error\(\d+\)\.message$/
52
+ @response[:errors][error_idx][:message] = v
53
+ when /^error\(\d+\)\.parameter\((\d+)\)$/
54
+ parameter_idx = $1.to_i
55
+ if @response[:errors][error_idx][:parameters].length <= parameter_idx
56
+ @response[:errors][error_idx][:parameters] << {}
57
+ raise if @response[:errors][error_idx][:parameters].length <= parameter_idx
58
+ end
59
+ @response[:errors][error_idx][:parameters][parameter_idx] = v
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,42 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module PaypalPermissions
4
+ module Parsers
5
+ class GetAccessTokenNVParser < CommonNVParser
6
+ class << self
7
+ def parse nvp_response
8
+ super
9
+
10
+ pairs = nvp_response.split "&"
11
+ pairs.each do |pair|
12
+ n,v = pair.split "="
13
+ n = CGI.unescape n
14
+ v = CGI.unescape v
15
+
16
+ case n
17
+
18
+ # envelope
19
+ when /^responseEnvelope/
20
+ process_envelope_pair n, v
21
+
22
+ # successful token response
23
+ when "token"
24
+ @response[:token] = v
25
+ when "tokenSecret"
26
+ @response[:token_secret] = v
27
+
28
+ # error with index
29
+ when /^error\((\d+)\)/
30
+ process_error_pair n, v
31
+
32
+ end
33
+ end
34
+ @response
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+
@@ -0,0 +1,26 @@
1
+ require 'paypal_permissions/parsers/personal_data'
2
+
3
+ module ActiveMerchant #:nodoc:
4
+ module Billing #:nodoc:
5
+ module PaypalPermissions
6
+ module Parsers
7
+ class GetAdvancedPersonalDataNVParser < PersonalDataNVParser
8
+ class << self
9
+ def personal_data_mappings
10
+ {
11
+ "http://axschema.org/birthDate" => :birthdate,
12
+ "http://schema.openid.net/contact/street1" => :street1,
13
+ "http://schema.openid.net/contact/street2" => :street2,
14
+ "http://axschema.org/contact/city/home" => :city,
15
+ "http://axschema.org/contact/state/home" => :state,
16
+ "http://axschema.org/contact/postalCode/home" => :postal_code,
17
+ "http://axschema.org/contact/phone/default" => :phone,
18
+ }
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+
@@ -0,0 +1,25 @@
1
+ require 'paypal_permissions/parsers/personal_data'
2
+
3
+ module ActiveMerchant #:nodoc:
4
+ module Billing #:nodoc:
5
+ module PaypalPermissions
6
+ module Parsers
7
+ class GetBasicPersonalDataNVParser < PersonalDataNVParser
8
+ class << self
9
+ def personal_data_mappings
10
+ {
11
+ "http://axschema.org/contact/country/home" => :country,
12
+ "http://axschema.org/contact/email" => :email,
13
+ "http://axschema.org/namePerson/first" => :first_name,
14
+ "http://axschema.org/namePerson/last" => :last_name,
15
+ "http://schema.openid.net/contact/fullname" => :full_name,
16
+ "https://www.paypal.com/webapps/auth/schema/payerID" => :payer_id,
17
+ }
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,46 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module PaypalPermissions
4
+ module Parsers
5
+ class PersonalDataNVParser < CommonNVParser
6
+ class << self
7
+ def parse nvp_response
8
+ super
9
+
10
+ @response[:personal_data] = {}
11
+
12
+ pairs = nvp_response.split "&"
13
+ pairs.each do |pair|
14
+ n,v = pair.split "="
15
+ n = CGI.unescape n
16
+ v = CGI.unescape v
17
+
18
+ case n
19
+
20
+ # envelope
21
+ when /^responseEnvelope/
22
+ process_envelope_pair n, v
23
+
24
+ # successful personal data response
25
+ when /response\.personalData\((\d+)\)\.personalDataKey/
26
+ key_idx = $1.to_i
27
+ key = personal_data_mappings[v]
28
+
29
+ when /response\.personalData\((\d+)\)\.personalDataValue/
30
+ val_idx = $1.to_i
31
+ raise unless key && val_idx != key_idx
32
+ @response[:personal_data][key] = v
33
+
34
+ # error with index
35
+ when /^error\((\d+)\)/
36
+ process_error_pair n, v
37
+
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,40 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module PaypalPermissions
4
+ module Parsers
5
+ class RequestPermissionsNVParser < CommonNVParser
6
+ class << self
7
+ def parse nvp_response
8
+ super
9
+
10
+ pairs = nvp_response.split "&"
11
+ pairs.each do |pair|
12
+ n,v = pair.split "="
13
+ n = CGI.unescape n
14
+ v = CGI.unescape v
15
+
16
+ case n
17
+
18
+ # envelope
19
+ when /^responseEnvelope/
20
+ process_envelope_pair n, v
21
+
22
+ # successful token response
23
+ when "token"
24
+ @response[:token] = v
25
+
26
+ # error with index
27
+ when /^error\((\d+)\)/
28
+ process_error_pair n, v
29
+
30
+ end
31
+ end
32
+ @response
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+
@@ -1,6 +1,7 @@
1
1
  require 'active_merchant'
2
2
  require 'active_merchant/billing'
3
3
  require 'active_merchant/billing/gateway'
4
+ require 'paypal_permissions/parsers'
4
5
  require 'paypal_permissions/x_pp_authorization'
5
6
  require 'uri'
6
7
  require 'cgi'
@@ -10,6 +11,7 @@ module ActiveMerchant #:nodoc:
10
11
  module Billing #:nodoc:
11
12
  class PaypalPermissionsGateway < ActiveMerchant::Billing::Gateway # :nodoc
12
13
  include XPPAuthorization
14
+ include PaypalPermissions::Parsers
13
15
 
14
16
  public
15
17
  def self.setup
@@ -40,7 +42,7 @@ module ActiveMerchant #:nodoc:
40
42
  'X-PAYPAL-APPLICATION-ID' => @app_id,
41
43
  'X-PAYPAL-REQUEST-DATA-FORMAT' => 'NV',
42
44
  'X-PAYPAL-RESPONSE-DATA-FORMAT' => 'NV',
43
- }.update(x_pp_authorization_header(get_basic_personal_data_url, access_token, access_token_verifier))
45
+ }.update(x_pp_authorization_header(get_basic_personal_data_url, @login, @password, access_token, access_token_verifier))
44
46
  }
45
47
  get_advanced_personal_data_headers = lambda { |access_token, access_token_verifier|
46
48
  {
@@ -50,7 +52,7 @@ module ActiveMerchant #:nodoc:
50
52
  'X-PAYPAL-APPLICATION-ID' => @app_id,
51
53
  'X-PAYPAL-REQUEST-DATA-FORMAT' => 'NV',
52
54
  'X-PAYPAL-RESPONSE-DATA-FORMAT' => 'NV',
53
- }.update(x_pp_authorization_header(get_advanced_personal_data_url, access_token, access_token_verifier))
55
+ }.update(x_pp_authorization_header(get_advanced_personal_data_url, @login, @password, access_token, access_token_verifier))
54
56
  }
55
57
  @options = {
56
58
  :request_permissions_headers => request_permissions_headers,
@@ -69,7 +71,7 @@ module ActiveMerchant #:nodoc:
69
71
  # puts "request: #{request_permissions_url}?#{query_string}\n"
70
72
  # puts "nvp_response: #{nvp_response}\n"
71
73
  end
72
- response = parse_request_permissions_nvp(nvp_response)
74
+ response = RequestPermissionsNVParser.parse nvp_response
73
75
  end
74
76
 
75
77
  public
@@ -85,7 +87,7 @@ module ActiveMerchant #:nodoc:
85
87
  # puts "request: #{get_access_token_url}?#{query_string}\n"
86
88
  # puts "nvp_response: #{nvp_response}\n"
87
89
  end
88
- response = parse_get_access_token_nvp(nvp_response)
90
+ response = GetAccessTokenNVParser.parse nvp_response
89
91
  end
90
92
 
91
93
  public
@@ -94,51 +96,28 @@ module ActiveMerchant #:nodoc:
94
96
  template % token
95
97
  end
96
98
 
97
- def basic_personal_data_mappings
98
- {
99
- "http://axschema.org/contact/country/home" => :country,
100
- "http://axschema.org/contact/email" => :email,
101
- "http://axschema.org/namePerson/first" => :first_name,
102
- "http://axschema.org/namePerson/last" => :last_name,
103
- "http://schema.openid.net/contact/fullname" => :full_name,
104
- "https://www.paypal.com/webapps/auth/schema/payerID" => :payer_id,
105
- }
106
- end
107
-
108
- def advanced_personal_data_mappings
109
- {
110
- "http://axschema.org/birthDate" => :birthdate,
111
- "http://schema.openid.net/contact/street1" => :street1,
112
- "http://schema.openid.net/contact/street2" => :street2,
113
- "http://axschema.org/contact/city/home" => :city,
114
- "http://axschema.org/contact/state/home" => :state,
115
- "http://axschema.org/contact/postalCode/home" => :postal_code,
116
- "http://axschema.org/contact/phone/default" => :phone,
117
- }
118
- end
119
-
120
99
  public
121
100
  def get_basic_personal_data(access_token, access_token_verifier)
122
- body = personal_data_post_body(basic_personal_data_mappings)
101
+ body = personal_data_post_body(GetBasicPersonalDataNVParser.personal_data_mappings)
123
102
  opts = @options[:get_basic_personal_data_headers].call(access_token, access_token_verifier)
124
103
  nvp_response = ssl_post(get_basic_personal_data_url, body, opts)
125
104
  if nvp_response =~ /error\(\d+\)/
126
105
  # puts "request: #{get_basic_personal_data_url} post_body:#{body}\n"
127
106
  # puts "nvp_response: #{nvp_response}\n"
128
107
  end
129
- response = parse_personal_data_nvp(nvp_response, basic_personal_data_mappings)
108
+ response = GetBasicPersonalDataNVParser.parse nvp_response
130
109
  end
131
110
 
132
111
  public
133
112
  def get_advanced_personal_data(access_token, access_token_verifier)
134
- body = personal_data_post_body(advanced_personal_data_mappings)
113
+ body = personal_data_post_body(GetAdvancedPersonalDataNVParser.personal_data_mappings)
135
114
  opts = @options[:get_advanced_personal_data_headers].call(access_token, access_token_verifier)
136
115
  nvp_response = ssl_post(get_advanced_personal_data_url, body, opts)
137
116
  if nvp_response =~ /error\(\d+\)/
138
117
  # puts "request: #{get_advanced_personal_data_url} post_body:#{body}\n"
139
118
  # puts "nvp_response: #{nvp_response}\n"
140
119
  end
141
- response = parse_personal_data_nvp(nvp_response, advanced_personal_data_mappings)
120
+ response = GetAdvancedPersonalDataNVParser.parse nvp_response
142
121
  end
143
122
 
144
123
  public
@@ -213,252 +192,6 @@ module ActiveMerchant #:nodoc:
213
192
  body += "requestEnvelope.errorLanguage=en_US"
214
193
  end
215
194
 
216
- private
217
- def parse_request_permissions_nvp(nvp)
218
- response = {
219
- :errors => [
220
- ],
221
- }
222
- pairs = nvp.split "&"
223
- pairs.each do |pair|
224
- n,v = pair.split "="
225
- n = CGI.unescape n
226
- v = CGI.unescape v
227
- case n
228
- when "responseEnvelope.timestamp"
229
- response[:timestamp] = v
230
- when "responseEnvelope.ack"
231
- response[:ack] = v
232
- =begin
233
- # Client should implement these with logging...
234
- case v
235
- when "Success"
236
- when "Failure"
237
- when "Warning"
238
- when "SuccessWithWarning"
239
- when "FailureWithWarning"
240
- end
241
- =end
242
- when "responseEnvelope.correlationId"
243
- response[:correlation_id] = v
244
- when "responseEnvelope.build"
245
- # do nothing
246
- when "token"
247
- response[:token] = v
248
- when /^error\((\d+)\)/
249
- error_idx = $1.to_i
250
- if response[:errors].length <= error_idx
251
- response[:errors] << { :parameters => [] }
252
- raise if response[:errors].length <= error_idx
253
- end
254
- case n
255
- when /^error\(\d+\)\.errorId$/
256
- response[:errors][error_idx][:error_id] = v
257
- =begin
258
- # Client should implement these with logging. PayPal doesn't distinguish
259
- # between errors which can be corrected by the user and errors which need
260
- # to be corrected by a developer or merchant, say, in configuration.
261
- # case v
262
- # when "520002"
263
- # when
264
- =end
265
- when /^error\(\d+\)\.domain$/
266
- response[:errors][error_idx][:domain] = v
267
- when /^error\(\d+\)\.subdomain$/
268
- response[:errors][error_idx][:subdomain] = v
269
- when /^error\(\d+\)\.severity$/
270
- response[:errors][error_idx][:severity] = v
271
- when /^error\(\d+\)\.category$/
272
- response[:errors][error_idx][:category] = v
273
- when /^error\(\d+\)\.message$/
274
- response[:errors][error_idx][:message] = v
275
- when /^error\(\d+\)\.parameter\((\d+)\)$/
276
- parameter_idx = $1.to_i
277
- if response[:errors][error_idx][:parameters].length <= parameter_idx
278
- response[:errors][error_idx][:parameters] << {}
279
- raise if response[:errors][error_idx][:parameters].length <= parameter_idx
280
- end
281
- response[:errors][error_idx][:parameters][parameter_idx] = v
282
- end
283
- end
284
- end
285
- response
286
- end
287
-
288
- private
289
- def parse_get_access_token_nvp(nvp)
290
- response = {
291
- :errors => [
292
- ],
293
- }
294
- pairs = nvp.split "&"
295
- pairs.each do |pair|
296
- n,v = pair.split "="
297
- n = CGI.unescape n
298
- v = CGI.unescape v
299
- case n
300
- when "responseEnvelope.timestamp"
301
- response[:timestamp] = v
302
- when "responseEnvelope.ack"
303
- response[:ack] = v
304
- =begin
305
- # Client should implement these with logging...
306
- case v
307
- when "Success"
308
- when "Failure"
309
- when "Warning"
310
- when "SuccessWithWarning"
311
- when "FailureWithWarning"
312
- end
313
- =end
314
- when "responseEnvelope.correlationId"
315
- response[:correlation_id] = v
316
- when "responseEnvelope.build"
317
- # do nothing
318
- when "token"
319
- response[:token] = v
320
- when "tokenSecret"
321
- response[:tokenSecret] = v
322
- when /^error\((\d+)\)/
323
- error_idx = $1.to_i
324
- if response[:errors].length <= error_idx
325
- response[:errors] << { :parameters => [] }
326
- raise if response[:errors].length <= error_idx
327
- end
328
- case n
329
- when /^error\(\d+\)\.errorId$/
330
- response[:errors][error_idx][:error_id] = v
331
- =begin
332
- # Client should implement these with logging. PayPal doesn't distinguish
333
- # between errors which can be corrected by the user and errors which need
334
- # to be corrected by a developer or merchant, say, in configuration.
335
- # case v
336
- # when "520002"
337
- # when
338
- =end
339
- when /^error\(\d+\)\.domain$/
340
- response[:errors][error_idx][:domain] = v
341
- when /^error\(\d+\)\.subdomain$/
342
- response[:errors][error_idx][:subdomain] = v
343
- when /^error\(\d+\)\.severity$/
344
- response[:errors][error_idx][:severity] = v
345
- when /^error\(\d+\)\.category$/
346
- response[:errors][error_idx][:category] = v
347
- when /^error\(\d+\)\.message$/
348
- response[:errors][error_idx][:message] = v
349
- when /^error\(\d+\)\.parameter\((\d+)\)$/
350
- parameter_idx = $1.to_i
351
- if response[:errors][error_idx][:parameters].length <= parameter_idx
352
- response[:errors][error_idx][:parameters] << {}
353
- raise if response[:errors][error_idx][:parameters].length <= parameter_idx
354
- end
355
- response[:errors][error_idx][:parameters][parameter_idx] = v
356
- end
357
- end
358
- end
359
- response
360
- end
361
-
362
- private
363
- def parse_personal_data_nvp(nvp, personal_data_mappings)
364
- response = {
365
- :raw_response => nvp,
366
- :errors => [
367
- ],
368
- :personal_data => {
369
- }
370
- }
371
- begin
372
- key = nil
373
- key_idx = nil
374
- pairs = nvp.split "&"
375
- pairs.each do |pair|
376
- n,v = pair.split "="
377
- v = "" if v.nil?
378
- n = CGI.unescape n
379
- v = CGI.unescape v
380
- case n
381
- when "responseEnvelope.timestamp"
382
- response[:timestamp] = v
383
- when "responseEnvelope.ack"
384
- response[:ack] = v
385
- when "responseEnvelope.correlationId"
386
- response[:correlation_id] = v
387
- when "responseEnvelope.build"
388
- # do nothing
389
-
390
- when /response\.personalData\((\d+)\)\.personalDataKey/
391
- key_idx = $1.to_i
392
- key = personal_data_mappings[v]
393
- =begin
394
- case v
395
- when "http://axschema.org/contact/country/home"
396
- key = :country
397
- when "http://axschema.org/contact/email"
398
- key = :email
399
- when "http://axschema.org/namePerson/first"
400
- key = :first_name
401
- when "http://axschema.org/namePerson/last"
402
- key = :last_name
403
- when "http://schema.openid.net/contact/fullname"
404
- key = :full_name
405
- when "https://www.paypal.com/webapps/auth/schema/payerID"
406
- key = :payer_id
407
- end
408
- =end
409
-
410
- when /response\.personalData\((\d+)\)\.personalDataValue/
411
- val_idx = $1.to_i
412
- if !key
413
- # puts "key:#{key} is nil for v:#{v}"
414
- elsif val_idx != key_idx
415
- # puts "key_idx:#{key_idx} is out of sync with val_idx:#{val_idx} for key:#{key}"
416
- else
417
- response[:personal_data][key] = v
418
- end
419
-
420
- when /^error\((\d+)\)/
421
- error_idx = $1.to_i
422
- if response[:errors].length <= error_idx
423
- response[:errors] << { :parameters => [] }
424
- raise if response[:errors].length <= error_idx
425
- end
426
- case n
427
- when /^error\(\d+\)\.errorId$/
428
- response[:errors][error_idx][:error_id] = v
429
- =begin
430
- # Client should implement these with logging. PayPal doesn't distinguish
431
- # between errors which can be corrected by the user and errors which need
432
- # to be corrected by a developer or merchant, say, in configuration.
433
- # case v
434
- # when "520002"
435
- # when
436
- =end
437
- when /^error\(\d+\)\.domain$/
438
- response[:errors][error_idx][:domain] = v
439
- when /^error\(\d+\)\.subdomain$/
440
- response[:errors][error_idx][:subdomain] = v
441
- when /^error\(\d+\)\.severity$/
442
- response[:errors][error_idx][:severity] = v
443
- when /^error\(\d+\)\.category$/
444
- response[:errors][error_idx][:category] = v
445
- when /^error\(\d+\)\.message$/
446
- response[:errors][error_idx][:message] = v
447
- when /^error\(\d+\)\.parameter\((\d+)\)$/
448
- parameter_idx = $1.to_i
449
- if response[:errors][error_idx][:parameters].length <= parameter_idx
450
- response[:errors][error_idx][:parameters] << {}
451
- raise if response[:errors][error_idx][:parameters].length <= parameter_idx
452
- end
453
- response[:errors][error_idx][:parameters][parameter_idx] = v
454
- end
455
- end
456
- end
457
- rescue
458
- response[:errors][:unknown_error] << nvp.inspect
459
- end
460
- response
461
- end
462
195
 
463
196
  =begin
464
197
  private
@@ -1,3 +1,3 @@
1
1
  module PaypalPermissions
2
- VERSION = "0.0.5.1"
2
+ VERSION = "0.0.5.2"
3
3
  end
@@ -5,23 +5,23 @@ module ActiveMerchant #:nodoc:
5
5
  module Billing #:nodoc:
6
6
  module XPPAuthorization
7
7
  public
8
- def x_pp_authorization_header url, access_token, access_token_verifier
8
+ def x_pp_authorization_header url, api_user_id, api_password, access_token, access_token_verifier
9
9
  timestamp = Time.now.to_i.to_s
10
- signature = x_pp_authorization_signature url, timestamp, access_token, access_token_verifier
10
+ signature = x_pp_authorization_signature url, api_user_id, api_password, timestamp, access_token, access_token_verifier
11
11
  { 'X-PP-AUTHORIZATION' => "token=#{access_token},signature=#{signature},timestamp=#{timestamp}" }
12
12
  end
13
13
 
14
14
  public
15
- def x_pp_authorization_signature url, timestamp, access_token, access_token_verifier
15
+ def x_pp_authorization_signature url, api_user_id, api_password, timestamp, access_token, access_token_verifier
16
16
  # no query params, but if there were, this is where they'd go
17
17
  query_params = {}
18
18
  key = [
19
- URI.encode(@password),
19
+ URI.encode(api_password),
20
20
  URI.encode(access_token_verifier),
21
21
  ].join("&")
22
22
 
23
23
  params = query_params.dup.merge({
24
- "oauth_consumer_key" => @login,
24
+ "oauth_consumer_key" => api_user_id,
25
25
  "oauth_version" => "1.0",
26
26
  "oauth_signature_method" => "HMAC-SHA1",
27
27
  "oauth_token" => access_token,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paypal_permissions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5.1
4
+ version: 0.0.5.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-17 00:00:00.000000000Z
12
+ date: 2012-04-18 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &2156611040 !ruby/object:Gem::Requirement
16
+ requirement: &2156381840 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2156611040
24
+ version_requirements: *2156381840
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: vcr
27
- requirement: &2156559340 !ruby/object:Gem::Requirement
27
+ requirement: &2156319520 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.11'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2156559340
35
+ version_requirements: *2156319520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: railties
38
- requirement: &2156534720 !ruby/object:Gem::Requirement
38
+ requirement: &2156308800 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2156534720
46
+ version_requirements: *2156308800
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activesupport
49
- requirement: &2156532620 !ruby/object:Gem::Requirement
49
+ requirement: &2156304120 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '3.0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2156532620
57
+ version_requirements: *2156304120
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: activemerchant
60
- requirement: &2156524200 !ruby/object:Gem::Requirement
60
+ requirement: &2156301480 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *2156524200
68
+ version_requirements: *2156301480
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &2156520400 !ruby/object:Gem::Requirement
71
+ requirement: &2156299260 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '2.6'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *2156520400
79
+ version_requirements: *2156299260
80
80
  description: ! '"A gem to support PayPal Permissions API for Rails applications using
81
81
  ActiveMerchant."'
82
82
  email:
@@ -160,6 +160,13 @@ files:
160
160
  - lib/generators/templates/README.rdoc
161
161
  - lib/generators/templates/paypal_permissions.rb
162
162
  - lib/paypal_permissions.rb
163
+ - lib/paypal_permissions/parsers.rb
164
+ - lib/paypal_permissions/parsers/common.rb
165
+ - lib/paypal_permissions/parsers/get_access_token.rb
166
+ - lib/paypal_permissions/parsers/get_advanced_personal_data.rb
167
+ - lib/paypal_permissions/parsers/get_basic_personal_data.rb
168
+ - lib/paypal_permissions/parsers/personal_data.rb
169
+ - lib/paypal_permissions/parsers/request_permissions.rb
163
170
  - lib/paypal_permissions/paypal_permissions_gateway.rb
164
171
  - lib/paypal_permissions/version.rb
165
172
  - lib/paypal_permissions/x_pp_authorization.rb
@@ -181,7 +188,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
181
188
  version: '0'
182
189
  segments:
183
190
  - 0
184
- hash: -736704987918879819
191
+ hash: 4118521118431286841
185
192
  required_rubygems_version: !ruby/object:Gem::Requirement
186
193
  none: false
187
194
  requirements:
@@ -190,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
197
  version: '0'
191
198
  segments:
192
199
  - 0
193
- hash: -736704987918879819
200
+ hash: 4118521118431286841
194
201
  requirements: []
195
202
  rubyforge_project: paypal_permissions
196
203
  rubygems_version: 1.8.10