paypal_permissions 0.0.3.3 → 0.0.3.4

Sign up to get free protection for your applications and to get access to all the features.
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