payola-payments 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/javascripts/payola/checkout_button.js +11 -14
  3. data/app/views/payola/transactions/_checkout.html.erb +4 -2
  4. data/lib/generators/payola/install_generator.rb +1 -1
  5. data/lib/payola/version.rb +1 -1
  6. data/lib/payola/worker/active_job.rb +21 -0
  7. data/lib/payola/worker/base.rb +9 -0
  8. data/lib/payola/worker/sidekiq.rb +20 -0
  9. data/lib/payola/worker/sucker_punch.rb +20 -0
  10. data/lib/payola/worker.rb +12 -41
  11. data/lib/payola.rb +6 -0
  12. data/spec/dummy/config/routes.rb +1 -1
  13. data/spec/dummy/db/development.sqlite3 +0 -0
  14. data/spec/dummy/log/development.log +2 -8460
  15. data/spec/dummy/log/test.log +1428 -12240
  16. data/spec/payola_spec.rb +7 -0
  17. data/spec/worker_spec.rb +24 -0
  18. metadata +16 -57
  19. data/spec/dummy/tmp/cache/assets/development/sprockets/0e585aeb88c1555ae8f5292f7c7a9068 +0 -0
  20. data/spec/dummy/tmp/cache/assets/development/sprockets/0f0c99469c51f1b2d76b08f481781d09 +0 -0
  21. data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  22. data/spec/dummy/tmp/cache/assets/development/sprockets/1b54952339cbc96811097cee5f8923b4 +0 -0
  23. data/spec/dummy/tmp/cache/assets/development/sprockets/1cbc4f4790f2067a2c161c1eb480f276 +0 -0
  24. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  25. data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  26. data/spec/dummy/tmp/cache/assets/development/sprockets/5afa4bc970e0bc781b3500c696ba25ff +0 -0
  27. data/spec/dummy/tmp/cache/assets/development/sprockets/664efeb51d1b486dcfc30d142db56f3c +0 -0
  28. data/spec/dummy/tmp/cache/assets/development/sprockets/68a3bbdc64a0729b5896fa1e33fce4b1 +0 -0
  29. data/spec/dummy/tmp/cache/assets/development/sprockets/aea159adbc0944b120d91d5b578612ba +0 -0
  30. data/spec/dummy/tmp/cache/assets/development/sprockets/b83da90cb58011313e13a97a4a41cb6e +0 -0
  31. data/spec/dummy/tmp/cache/assets/development/sprockets/c0b954b40f2881a6d286061bc069643e +0 -0
  32. data/spec/dummy/tmp/cache/assets/development/sprockets/c5b3877d49b39932a7557611cefca9a6 +0 -0
  33. data/spec/dummy/tmp/cache/assets/development/sprockets/ca491e325ff6948be9292f701aa4ce64 +0 -0
  34. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  35. data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  36. data/spec/dummy/tmp/cache/assets/development/sprockets/d9856638a3c7b9cfd9d1b884e3b33982 +0 -0
  37. data/spec/dummy/tmp/cache/assets/development/sprockets/ddba6e841f28d3005e828fbfffd18b74 +0 -0
  38. data/spec/dummy/tmp/cache/assets/development/sprockets/df935e399019055729aa968bd7062096 +0 -0
  39. data/spec/dummy/tmp/cache/assets/development/sprockets/ef82c31948061751bb026663b54484e1 +0 -0
  40. data/spec/dummy/tmp/cache/assets/development/sprockets/f0b5d4bea0c6cdd1904e1e9a0a45532f +0 -0
  41. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  42. data/spec/dummy/tmp/cache/assets/development/sprockets/f8018075b7aca72974f4014bbbc75ab5 +0 -0
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YWU3ZGI3MzEwZTI1YzY5OGNhNTc0ODEyMTNjZjlhNWIzMTg3YThiOQ==
4
+ Nzc3ZTZjYjM5M2I0MGZlMDMxYjI0Mzc2ZjU2ZjM1NjU0ZDVmZDA3Ng==
5
5
  data.tar.gz: !binary |-
6
- N2YzYzY0ZmY4ODE2MzhlN2I5OTk1MjZjYzg3NGQ4OGNlYTdkYzMwYQ==
6
+ MTY0MzBlYTM1NjNlYmU3OGFiMTQyN2ZiNjZjYmQzYzc3ZTI0YzEwNg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NDFiNjM2NGMyNmI5N2Q3NzA5NGFlNWZlZDYzOWE5ZWVkY2I1ZGRkNjZkZjVj
10
- ZDUwNzY1OGY3Y2IyZDk2YzE2OWNjY2E0MTc5MWExOTE2MThjODg4NjZmZTFj
11
- MzIyYjNmOGYwNmQzNWUxOWFmZGEyY2QyMmY2MTU4MDUyYzc3NGE=
9
+ ODcxYzEwYmYzYjJhMjUyMjhiYjk2ODdiMzM4NTNiZjY1M2JiMjNmNTE5YjE5
10
+ YzRjZWRmNjAwZThhZTgxNGE5ZDQ4ZTFmNTQwZmYwMDg1ZjhmYzBmMzdkYWYz
11
+ ZjNjZTk2MjRkYTZlN2E5NzlkNmFiYTVjZTRiMzg3YTdjYjgwNTg=
12
12
  data.tar.gz: !binary |-
13
- Yjg5ZmQzZTFiNWFlYzdiNDEzZGE4NzExYmRkMWI5NTBkZmEyOTg3MTZlYTkx
14
- YWJmMTZkZTMyYjJiMWU0M2VlMWI1NTVmOTc0M2E1ZWI2MTE5MjcwNDdhMzRi
15
- NTZmNTY4YzBhZmIwZjZhZjgzYmYzZDAzYTAxYzdlNGJiNzliMGE=
13
+ N2VjMjFkMmI2YjAyYzgxNTBhZTYxOGI0ZTE1NzY2Y2M1OWFiMWM4ZTIxN2Ey
14
+ NDUwYWIwY2UxNzY0ODFjNTYwOGQzNDQ3NmY5MjUxMjMwMjRiYzhlMTQ3ZDI2
15
+ NjQ2YjJkMGFjNTJiMmFmY2FhNTlmN2IyNGU4NDBjN2U0MmZjNDc=
@@ -30,17 +30,15 @@ var Payola = {
30
30
  $(".payola-checkout-button-spinner").show();
31
31
  $.ajax({
32
32
  type: "POST",
33
- url: "/payola/buy/" + options.product_class + "/" + options.product_permalink,
33
+ url: options.base_path + "/buy/" + options.product_class + "/" + options.product_permalink,
34
34
  data: form.serialize(),
35
- success: function(data) { Payola.poll(data.guid, 60, options.error_div_id) },
36
- error: function(data) { Payola.showError(data.responseJSON.error, options.error_div_id) }
35
+ success: function(data) { Payola.poll(data.guid, 60, options) },
36
+ error: function(data) { Payola.showError(data.responseJSON.error, options) }
37
37
  });
38
38
  },
39
39
 
40
- showError: function(error, error_div_id) {
41
- console.log(error);
42
- console.log(error_div_id);
43
- var error_div = $("#" + error_div_id);
40
+ showError: function(error, options) {
41
+ var error_div = $("#" + options.error_div_id);
44
42
  error_div.html(error);
45
43
  error_div.show();
46
44
  $(".payola-checkout-button").prop("disabled", false);
@@ -48,20 +46,19 @@ var Payola = {
48
46
  $(".payola-checkout-button-text").show();
49
47
  },
50
48
 
51
- poll: function(guid, num_retries_left, error_div_id) {
52
- console.log(error_div_id);
49
+ poll: function(guid, num_retries_left, options) {
53
50
  if (num_retries_left == 0) {
54
- Payola.showError("This seems to be taking too long. Please contact support and give them transaction ID: " + guid, error_div_id);
51
+ Payola.showError("This seems to be taking too long. Please contact support and give them transaction ID: " + guid, options);
55
52
  return;
56
53
  }
57
54
 
58
- $.get("/payola/status/" + guid, function(data) {
55
+ $.get(options.base_path + "/status/" + guid, function(data) {
59
56
  if (data.status === "finished") {
60
- window.location = "/payola/confirm/" + guid;
57
+ window.location = options.base_path + "/confirm/" + guid;
61
58
  } else if (data.status === "errored") {
62
- Payola.showError(data.error, error_div_id);
59
+ Payola.showError(data.error, options);
63
60
  } else {
64
- setTimeout(function() { Payola.poll(guid, num_retries_left - 1, error_div_id) }, 500);
61
+ setTimeout(function() { Payola.poll(guid, num_retries_left - 1, options) }, 500);
65
62
  }
66
63
  });
67
64
  }
@@ -9,7 +9,8 @@
9
9
  allow_remember_me = local_assigns.fetch :allow_remember_me, true
10
10
  email = local_assigns.fetch :email, ''
11
11
  verify_zip_code = local_assigns.fetch :verify_zip_code, false
12
-
12
+
13
+ sale = Payola::Sale.new(product: sellable)
13
14
 
14
15
  button_id = "payola-button-#{sellable.product_class}-#{sellable.permalink}"
15
16
 
@@ -38,6 +39,7 @@
38
39
  <% end %>
39
40
  <script type="text/javascript">
40
41
  Payola.setUpStripeCheckoutButton({
42
+ base_path: "<%= main_app.payola_path %>",
41
43
  form_id: "<%= form_id %>",
42
44
  button_id: "<%= button_id %>",
43
45
  error_div_id: "<%= error_div_id %>",
@@ -47,7 +49,7 @@
47
49
  name: "<%= name %>",
48
50
  description: "<%= description %>",
49
51
  product_image_path: "<%= product_image_path %>",
50
- publishable_key: "<%= Payola.publishable_key %>",
52
+ publishable_key: "<%= Payola.publishable_key_for_sale(sale) %>",
51
53
  panel_label: "<%= panel_label %>",
52
54
  allow_remember_me: <%= allow_remember_me %>,
53
55
  email: "<%= email %>",
@@ -14,7 +14,7 @@ module Payola
14
14
  end
15
15
 
16
16
  def install_route
17
- route "mount Payola::Engine => '/payola'"
17
+ route "mount Payola::Engine => '/payola', as: :payola"
18
18
  end
19
19
  end
20
20
  end
@@ -1,3 +1,3 @@
1
1
  module Payola
2
- VERSION = "1.0.6"
2
+ VERSION = "1.0.7"
3
3
  end
@@ -0,0 +1,21 @@
1
+ module ::ActiveJob
2
+ class Base; end
3
+ end
4
+
5
+ module Payola
6
+ module Worker
7
+ class ActiveJob < ::ActiveJob::Base
8
+ def self.can_run?
9
+ defined?(::ActiveJob::Core)
10
+ end
11
+
12
+ def self.call(sale)
13
+ perform_later(sale.guid)
14
+ end
15
+
16
+ def perform(guid)
17
+ Sale.where(guid: guid).first.process!
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ module Payola
2
+ module Worker
3
+ class BaseWorker
4
+ def perform(guid)
5
+ Sale.where(guid: guid).first.process!
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,20 @@
1
+ begin
2
+ require 'sidekiq'
3
+ rescue LoadError
4
+ end
5
+
6
+ module Payola
7
+ module Worker
8
+ class Sidekiq < BaseWorker
9
+ include ::Sidekiq::Worker if defined? ::Sidekiq::Worker
10
+
11
+ def self.can_run?
12
+ defined?(::Sidekiq::Worker)
13
+ end
14
+
15
+ def self.call(sale)
16
+ perform_async(sale.guid)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ begin
2
+ require 'sucker_punch'
3
+ rescue LoadError
4
+ end
5
+
6
+ module Payola
7
+ module Worker
8
+ class SuckerPunch < BaseWorker
9
+ include ::SuckerPunch::Job if defined? ::SuckerPunch::Job
10
+
11
+ def self.can_run?
12
+ defined?(::SuckerPunch::Job)
13
+ end
14
+
15
+ def self.call(sale)
16
+ new.async.perform(sale.guid)
17
+ end
18
+ end
19
+ end
20
+ end
data/lib/payola/worker.rb CHANGED
@@ -1,12 +1,7 @@
1
- begin
2
- require 'sidekiq'
3
- rescue LoadError
4
- end
5
-
6
- begin
7
- require 'sucker_punch'
8
- rescue LoadError
9
- end
1
+ require 'payola/worker/base'
2
+ require 'payola/worker/active_job'
3
+ require 'payola/worker/sidekiq'
4
+ require 'payola/worker/sucker_punch'
10
5
 
11
6
  module Payola
12
7
  module Worker
@@ -22,6 +17,11 @@ module Payola
22
17
  end
23
18
 
24
19
  def autofind
20
+ # prefer ActiveJob over the other workers
21
+ if Payola::Worker::ActiveJob.can_run?
22
+ return Payola::Worker::ActiveJob
23
+ end
24
+
25
25
  registry.values.each do |worker|
26
26
  if worker.can_run?
27
27
  return worker
@@ -32,39 +32,10 @@ module Payola
32
32
  end
33
33
  end
34
34
 
35
- class BaseWorker
36
- def perform(guid)
37
- Sale.where(guid: guid).first.process!
38
- end
39
- end
40
-
41
- class Sidekiq < BaseWorker
42
- include ::Sidekiq::Worker if defined? ::Sidekiq::Worker
43
-
44
- def self.can_run?
45
- defined?(::Sidekiq::Worker)
46
- end
47
-
48
- def self.call(sale)
49
- perform_async(sale.guid)
50
- end
51
- end
52
-
53
- class SuckerPunch < BaseWorker
54
- include ::SuckerPunch::Job if defined? ::SuckerPunch::Job
55
-
56
- def self.can_run?
57
- defined?(::SuckerPunch::Job)
58
- end
59
-
60
- def self.call(sale)
61
- new.async.perform(sale.guid)
62
- end
63
- end
64
-
65
35
  self.registry = {
66
- sidekiq: Payola::Worker::Sidekiq,
67
- sucker_punch: Payola::Worker::SuckerPunch
36
+ sidekiq: Payola::Worker::Sidekiq,
37
+ sucker_punch: Payola::Worker::SuckerPunch,
38
+ active_job: Payola::Worker::ActiveJob
68
39
  }
69
40
  end
70
41
  end
data/lib/payola.rb CHANGED
@@ -6,6 +6,7 @@ require 'jquery-rails'
6
6
  module Payola
7
7
  class << self
8
8
  attr_accessor :publishable_key,
9
+ :publishable_key_retriever,
9
10
  :secret_key,
10
11
  :secret_key_retriever,
11
12
  :background_worker,
@@ -23,6 +24,10 @@ module Payola
23
24
  return secret_key_retriever.call(sale)
24
25
  end
25
26
 
27
+ def publishable_key_for_sale(sale)
28
+ return publishable_key_retriever.call(sale)
29
+ end
30
+
26
31
  def subscribe(name, callable = Proc.new)
27
32
  StripeEvent.subscribe(name, callable)
28
33
  end
@@ -54,6 +59,7 @@ module Payola
54
59
  self.publishable_key = ENV['STRIPE_PUBLISHABLE_KEY']
55
60
  self.secret_key = ENV['STRIPE_SECRET_KEY']
56
61
  self.secret_key_retriever = lambda { |sale| Payola.secret_key }
62
+ self.publishable_key_retriever = lambda { |sale| Payola.publishable_key }
57
63
  self.support_email = 'sales@example.com'
58
64
  self.sellables = {}
59
65
  end
@@ -1,4 +1,4 @@
1
1
  Rails.application.routes.draw do
2
2
  resources :buy
3
- mount Payola::Engine => "/payola"
3
+ mount Payola::Engine => "/subdir/payola", as: :payola
4
4
  end
Binary file