paypal_permissions 0.0.3.3 → 0.0.3.4

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.
Files changed (75) hide show
  1. data/README.md +7 -15
  2. data/{examples → examples.old}/app/controllers/paypal_perms_controller.rb +0 -0
  3. data/{examples → examples.old}/app/models/paypal_perm.rb +0 -0
  4. data/{examples → examples.old}/db/migrate/paypal_permissions_create_paypal_perms.rb +0 -0
  5. data/examples/.gitignore +15 -0
  6. data/examples/Gemfile +12 -0
  7. data/examples/README.rdoc +261 -0
  8. data/examples/Rakefile +7 -0
  9. data/examples/app/assets/images/rails.png +0 -0
  10. data/examples/app/assets/javascripts/application.js +15 -0
  11. data/examples/app/assets/javascripts/merchants.js.coffee +3 -0
  12. data/examples/app/assets/stylesheets/application.css +13 -0
  13. data/examples/app/assets/stylesheets/merchants.css.scss +3 -0
  14. data/examples/app/controllers/application_controller.rb +3 -0
  15. data/examples/app/controllers/merchants_controller.rb +61 -0
  16. data/examples/app/controllers/ppp_models_controller.rb +5 -0
  17. data/examples/app/helpers/application_helper.rb +2 -0
  18. data/examples/app/helpers/merchants_helper.rb +2 -0
  19. data/examples/app/mailers/.gitkeep +0 -0
  20. data/examples/app/models/.gitkeep +0 -0
  21. data/examples/app/models/merchant.rb +3 -0
  22. data/examples/app/views/layouts/application.html.erb +14 -0
  23. data/examples/app/views/merchants/show.html.erb +20 -0
  24. data/examples/config.ru +4 -0
  25. data/examples/config/application.rb +59 -0
  26. data/examples/config/boot.rb +6 -0
  27. data/examples/config/database.yml +25 -0
  28. data/examples/config/environment.rb +5 -0
  29. data/examples/config/environments/development.rb +50 -0
  30. data/examples/config/environments/production.rb +79 -0
  31. data/examples/config/environments/test.rb +49 -0
  32. data/examples/config/initializers/backtrace_silencers.rb +7 -0
  33. data/examples/config/initializers/inflections.rb +15 -0
  34. data/examples/config/initializers/mime_types.rb +5 -0
  35. data/examples/config/initializers/secret_token.rb +7 -0
  36. data/examples/config/initializers/session_store.rb +8 -0
  37. data/examples/config/initializers/wrap_parameters.rb +14 -0
  38. data/examples/config/locales/en.yml +5 -0
  39. data/examples/config/routes.rb +4 -0
  40. data/examples/db/migrate/20120415205138_paypal_permissions_create_merchants.rb +13 -0
  41. data/examples/db/seeds.rb +7 -0
  42. data/examples/doc/README_FOR_APP +2 -0
  43. data/examples/lib/assets/.gitkeep +0 -0
  44. data/examples/lib/tasks/.gitkeep +0 -0
  45. data/examples/log/.gitkeep +0 -0
  46. data/examples/public/404.html +26 -0
  47. data/examples/public/422.html +26 -0
  48. data/examples/public/500.html +25 -0
  49. data/examples/public/favicon.ico +0 -0
  50. data/examples/public/index.html +241 -0
  51. data/examples/public/robots.txt +5 -0
  52. data/examples/script/rails +6 -0
  53. data/examples/test/fixtures/.gitkeep +0 -0
  54. data/examples/test/fixtures/merchants.yml +11 -0
  55. data/examples/test/functional/.gitkeep +0 -0
  56. data/examples/test/functional/merchants_controller_test.rb +7 -0
  57. data/examples/test/integration/.gitkeep +0 -0
  58. data/examples/test/performance/browsing_test.rb +12 -0
  59. data/examples/test/test_helper.rb +13 -0
  60. data/examples/test/unit/.gitkeep +0 -0
  61. data/examples/test/unit/helpers/merchants_helper_test.rb +4 -0
  62. data/examples/test/unit/merchant_test.rb +7 -0
  63. data/examples/vendor/assets/javascripts/.gitkeep +0 -0
  64. data/examples/vendor/assets/stylesheets/.gitkeep +0 -0
  65. data/examples/vendor/plugins/.gitkeep +0 -0
  66. data/lib/active_merchant/billing/gateways/paypal_permissions.rb +211 -80
  67. data/lib/active_merchant/billing/gateways/paypal_permissions/x_pp_authorization.rb +41 -0
  68. data/lib/generators/active_record/paypal_permissions_generator.rb +3 -34
  69. data/lib/generators/paypal_permissions/install_generator.rb +6 -2
  70. data/lib/generators/paypal_permissions/orm_helpers.rb +0 -1
  71. data/lib/generators/paypal_permissions/paypal_permissions_generator.rb +4 -1
  72. data/lib/paypal_permissions.rb +0 -4
  73. data/lib/paypal_permissions/version.rb +1 -1
  74. data/paypal_permissions.gemspec +1 -1
  75. metadata +83 -21
@@ -0,0 +1,41 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module XPPAuthorization
4
+ public
5
+ def x_pp_authorization_header url, access_token, access_token_verifier
6
+ timestamp = Time.now.to_i.to_s
7
+ signature = x_pp_authorization_signature url, timestamp, access_token, access_token_verifier
8
+ { 'X-PP-AUTHORIZATION' => "token=#{access_token},signature=#{signature},timestamp=#{timestamp}" }
9
+ end
10
+
11
+ public
12
+ def x_pp_authorization_signature url, timestamp, access_token, access_token_verifier
13
+ # no query params, but if there were, this is where they'd go
14
+ query_params = {}
15
+ key = [
16
+ URI.encode(@password),
17
+ URI.encode(access_token_verifier),
18
+ ].join("&")
19
+
20
+ params = query_params.dup.merge({
21
+ "oauth_consumer_key" => @login,
22
+ "oauth_version" => "1.0",
23
+ "oauth_signature_method" => "HMAC-SHA1",
24
+ "oauth_token" => access_token,
25
+ "oauth_timestamp" => timestamp,
26
+ })
27
+ sorted_params = Hash[params.sort]
28
+ sorted_query_string = sorted_params.to_query
29
+
30
+ base = [
31
+ "POST",
32
+ URI.encode(url),
33
+ URI.encode(sorted_query_string)
34
+ ].join("&")
35
+
36
+ hexdigest = OpenSSL::HMAC.hexdigest('sha1', key, base)
37
+ Base64.encode64(hexdigest).chomp
38
+ end
39
+ end
40
+ end
41
+ end
@@ -23,51 +23,20 @@ module ActiveRecord
23
23
 
24
24
  def inject_paypal_permissions_content
25
25
  inject_into_class(model_path, class_name, model_contents + <<ACCESSIBLE_FIELDS) if model_exists?
26
- attr_accessible :request_permissions_ack, :request_permissions_correlation_id, :request_permissions_request_token,
27
- :request_permissions_verifier, :request_permissions_envelope_timestamp,
28
- :request_permissions_errors, :request_permissions_raw_response,
29
- :request_permissions_callback_ack, :request_permissions_callback_correlation_id, :request_permissions_callback_request_token,
30
- :request_permissions_callback_verifier, :request_permissions_callback_envelope_timestamp,
31
- :request_permissions_callback_errors, :request_permissions_callback_raw_response,
32
- :get_access_token_ack, :get_access_token_correlation_id, :get_access_token_access_token,
33
- :get_access_token_verifier, :get_access_token_envelope_timestamp,
34
- :get_access_token_errors, :get_access_token_raw_response
26
+ attr_accessible :ppp_access_token, :ppp_access_token_verifier
35
27
  ACCESSIBLE_FIELDS
36
28
  end
37
29
 
38
30
  def migration_data
39
31
  <<MIGRATION_FIELDS
40
- # RequestPermissions response fields
41
- t.string :request_permissions_ack
42
- t.string :request_permissions_correlation_id
43
- t.string :request_permissions_request_token
44
- t.datetime :request_permissions_envelope_timestamp
45
- t.text :request_permissions_errors
46
- t.text :request_permissions_raw_response
47
-
48
- # RequestPermissions callback fields
49
- t.string :request_permissions_callback_ack
50
- t.string :request_permissions_callback_correlation_id
51
- t.string :request_permissions_callback_verifier
52
- t.datetime :request_permissions_callback_envelope_timestamp
53
- t.text :request_permissions_callback_errors
54
- t.text :request_permissions_callback_raw_response
55
-
56
32
  # GetAccessToken response fields
57
- t.string :get_access_token_ack
58
- t.string :get_access_token_correlation_id
59
- t.string :get_access_token_access_token
60
- t.string :get_access_token_verifier
61
- t.datetime :get_access_token_envelope_timestamp
62
- t.text :get_access_token_errors
63
- t.text :get_access_token_raw_response
33
+ t.string :ppp_access_token
34
+ t.string :ppp_access_token_verifier
64
35
  MIGRATION_FIELDS
65
36
  end
66
37
 
67
38
  def indexes
68
39
  <<INDEXES
69
- add_index :#{table_name}, :request_permissions_request_token
70
- add_index :#{table_name}, :get_access_token_access_token
71
40
  INDEXES
72
41
  end
73
42
  end
@@ -10,6 +10,7 @@ module PaypalPermissions
10
10
  dev_test_config = <<-DEV_TEST_CONFIG
11
11
  #{Rails.application.class.name.split('::').first}::Application.configure do
12
12
  config.after_initialize do
13
+ ActiveMerchant::Billing::Base.mode = :test
13
14
  permissions_options = {
14
15
  :login => 'TODO: your PayPal sandbox caller login',
15
16
  :password => 'TODO: your PayPal sandbox caller password',
@@ -24,6 +25,7 @@ end
24
25
  prod_config = <<-PROD_CONFIG
25
26
  #{Rails.application.class.name.split('::').first}::Application.configure do
26
27
  config.after_initialize do
28
+ ActiveMerchant::Billing::Base.mode = :production
27
29
  permissions_options = {
28
30
  :login => 'TODO: your PayPal live caller login',
29
31
  :password => 'TODO: your PayPal live caller password',
@@ -54,11 +56,13 @@ end
54
56
  end
55
57
 
56
58
  def copy_initializer
57
- template "paypal_permissions.rb", "config/initializers/paypal_permissions.rb"
59
+ # Nothing in the initializer yet, but once there is, just uncomment the following.
60
+ # template "paypal_permissions.rb", "config/initializers/paypal_permissions.rb"
58
61
  end
59
62
 
60
63
  def copy_locale
61
- copy_file "../../../config/locales/en.yml", "config/locales/paypal_permissions.en.yml"
64
+ # Nothing in the locales file yet, but once there is, just uncomment the following.
65
+ # copy_file "../../../config/locales/en.yml", "config/locales/paypal_permissions.en.yml"
62
66
  end
63
67
 
64
68
  def show_readme
@@ -3,7 +3,6 @@ module PaypalPermissions
3
3
  module OrmHelpers
4
4
  def model_contents
5
5
  <<-CONTENT
6
- # validates :request_permissions_ack, :presence => true
7
6
  CONTENT
8
7
  end
9
8
 
@@ -15,8 +15,11 @@ module PaypalPermissions
15
15
 
16
16
  def insert_paypal_permissions_routes
17
17
  if options.routes?
18
- route "match '#{plural_name}/request_permissions_callback' => '#{plural_name}#request_permissions_callback', :via => [ :post ], :as => :#{plural_name}_request_permissions_callback_url"
18
+ # The request_permissions_callback route needs to be *first* in the routes.rb file,
19
+ # but the generator inserts them at the top of the file, so call them in reverse order.
20
+
19
21
  route "resources :#{plural_name}"
22
+ route "match '#{plural_name}/request_permissions_callback' => '#{plural_name}#request_permissions_callback', :via => [ :get ], :as => :#{plural_name}_request_permissions_callback"
20
23
  end
21
24
  end
22
25
  end
@@ -1,6 +1,2 @@
1
1
  require "paypal_permissions/version"
2
2
  require "active_merchant/billing/gateways/paypal_permissions"
3
-
4
- module PaypalPermissions
5
- # Your code goes here...
6
- end
@@ -1,3 +1,3 @@
1
1
  module PaypalPermissions
2
- VERSION = "0.0.3.3"
2
+ VERSION = "0.0.3.4"
3
3
  end
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.add_development_dependency "rake"
22
22
  s.add_development_dependency "vcr", "~> 1.11"
23
23
 
24
- s.add_runtime_dependency 'railties', '~> 3.0'
24
+ s.add_runtime_dependency "railties", "~> 3.0"
25
25
  s.add_runtime_dependency "activesupport", "~> 3.0"
26
26
  s.add_runtime_dependency "activemerchant"
27
27
  s.add_runtime_dependency "rspec", "~> 2.6"
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.3.3
4
+ version: 0.0.3.4
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-03-06 00:00:00.000000000Z
12
+ date: 2012-04-16 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &2153018600 !ruby/object:Gem::Requirement
16
+ requirement: &2156303680 !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: *2153018600
24
+ version_requirements: *2156303680
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: vcr
27
- requirement: &2153018100 !ruby/object:Gem::Requirement
27
+ requirement: &2156302160 !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: *2153018100
35
+ version_requirements: *2156302160
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: railties
38
- requirement: &2153017580 !ruby/object:Gem::Requirement
38
+ requirement: &2156298500 !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: *2153017580
46
+ version_requirements: *2156298500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activesupport
49
- requirement: &2153017100 !ruby/object:Gem::Requirement
49
+ requirement: &2156295860 !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: *2153017100
57
+ version_requirements: *2156295860
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: activemerchant
60
- requirement: &2153016700 !ruby/object:Gem::Requirement
60
+ requirement: &2156293880 !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: *2153016700
68
+ version_requirements: *2156293880
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &2153016120 !ruby/object:Gem::Requirement
71
+ requirement: &2156256740 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '2.6'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *2153016120
79
+ version_requirements: *2156256740
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: ammeter
82
- requirement: &2153015680 !ruby/object:Gem::Requirement
82
+ requirement: &2156255120 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *2153015680
90
+ version_requirements: *2156255120
91
91
  description: ! '"A gem to support PayPal Permissions API for Rails applications using
92
92
  ActiveMerchant."'
93
93
  email:
@@ -101,13 +101,75 @@ files:
101
101
  - README.md
102
102
  - Rakefile
103
103
  - config/locales/en.yml
104
- - examples/app/controllers/paypal_perms_controller.rb
105
- - examples/app/models/paypal_perm.rb
106
- - examples/db/migrate/paypal_permissions_create_paypal_perms.rb
104
+ - examples.old/app/controllers/paypal_perms_controller.rb
105
+ - examples.old/app/models/paypal_perm.rb
106
+ - examples.old/db/migrate/paypal_permissions_create_paypal_perms.rb
107
+ - examples/.gitignore
108
+ - examples/Gemfile
109
+ - examples/README.rdoc
110
+ - examples/Rakefile
111
+ - examples/app/assets/images/rails.png
112
+ - examples/app/assets/javascripts/application.js
113
+ - examples/app/assets/javascripts/merchants.js.coffee
114
+ - examples/app/assets/stylesheets/application.css
115
+ - examples/app/assets/stylesheets/merchants.css.scss
116
+ - examples/app/controllers/application_controller.rb
117
+ - examples/app/controllers/merchants_controller.rb
118
+ - examples/app/controllers/ppp_models_controller.rb
119
+ - examples/app/helpers/application_helper.rb
120
+ - examples/app/helpers/merchants_helper.rb
121
+ - examples/app/mailers/.gitkeep
122
+ - examples/app/models/.gitkeep
123
+ - examples/app/models/merchant.rb
124
+ - examples/app/views/layouts/application.html.erb
125
+ - examples/app/views/merchants/show.html.erb
126
+ - examples/config.ru
127
+ - examples/config/application.rb
128
+ - examples/config/boot.rb
129
+ - examples/config/database.yml
130
+ - examples/config/environment.rb
131
+ - examples/config/environments/development.rb
132
+ - examples/config/environments/production.rb
133
+ - examples/config/environments/test.rb
134
+ - examples/config/initializers/backtrace_silencers.rb
135
+ - examples/config/initializers/inflections.rb
136
+ - examples/config/initializers/mime_types.rb
137
+ - examples/config/initializers/secret_token.rb
138
+ - examples/config/initializers/session_store.rb
139
+ - examples/config/initializers/wrap_parameters.rb
140
+ - examples/config/locales/en.yml
141
+ - examples/config/routes.rb
142
+ - examples/db/migrate/20120415205138_paypal_permissions_create_merchants.rb
143
+ - examples/db/seeds.rb
144
+ - examples/doc/README_FOR_APP
145
+ - examples/lib/assets/.gitkeep
146
+ - examples/lib/tasks/.gitkeep
147
+ - examples/log/.gitkeep
148
+ - examples/public/404.html
149
+ - examples/public/422.html
150
+ - examples/public/500.html
151
+ - examples/public/favicon.ico
152
+ - examples/public/index.html
153
+ - examples/public/robots.txt
154
+ - examples/script/rails
155
+ - examples/test/fixtures/.gitkeep
156
+ - examples/test/fixtures/merchants.yml
157
+ - examples/test/functional/.gitkeep
158
+ - examples/test/functional/merchants_controller_test.rb
159
+ - examples/test/integration/.gitkeep
160
+ - examples/test/performance/browsing_test.rb
161
+ - examples/test/test_helper.rb
162
+ - examples/test/unit/.gitkeep
163
+ - examples/test/unit/helpers/merchants_helper_test.rb
164
+ - examples/test/unit/merchant_test.rb
165
+ - examples/vendor/assets/javascripts/.gitkeep
166
+ - examples/vendor/assets/stylesheets/.gitkeep
167
+ - examples/vendor/plugins/.gitkeep
107
168
  - lib/active_merchant.rb
108
169
  - lib/active_merchant/billing.rb
109
170
  - lib/active_merchant/billing/gateways.rb
110
171
  - lib/active_merchant/billing/gateways/paypal_permissions.rb
172
+ - lib/active_merchant/billing/gateways/paypal_permissions/x_pp_authorization.rb
111
173
  - lib/generators/active_record/paypal_permissions_generator.rb
112
174
  - lib/generators/active_record/templates/migration.rb
113
175
  - lib/generators/active_record/templates/migration_existing.rb
@@ -137,7 +199,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
199
  version: '0'
138
200
  segments:
139
201
  - 0
140
- hash: 465604947276467303
202
+ hash: -141637157395021901
141
203
  required_rubygems_version: !ruby/object:Gem::Requirement
142
204
  none: false
143
205
  requirements:
@@ -146,7 +208,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
208
  version: '0'
147
209
  segments:
148
210
  - 0
149
- hash: 465604947276467303
211
+ hash: -141637157395021901
150
212
  requirements: []
151
213
  rubyforge_project: paypal_permissions
152
214
  rubygems_version: 1.8.10