bullet_train-integrations-stripe 1.0.0 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 601ccfba8cfe6ad2c8291a15d288076eae7936ac68184672cac9bc141652f181
4
- data.tar.gz: 3b2e87456e3693a997a93f549bbb834341a4d8eabaf21367b5ec2d4e75ca80d8
3
+ metadata.gz: d551423739ff79d107af342581c998d3ce4a535f5dfc73bd6526cd3e16a72f3f
4
+ data.tar.gz: a175914574e7da1ee6f51ebf633633b233161fa68b28c3c89377654e6cb8ecdf
5
5
  SHA512:
6
- metadata.gz: b7098328420c44ed0eedd22dc400fdc29663c149d9b59131965e397a8f4cb27efba901b0e6f7433bce515abb2a8f9aa596e4b984ebdecd6418ed26b03f9ffa01
7
- data.tar.gz: ea5411f17822836316a664c21db3ff6e170fb96747536a42617c759909d8e299762721796caa1fc233670effd5e1000f213784f406d6e1d2217728d52e4f749a
6
+ metadata.gz: 1525401dcf27fd7ba5d51f62cb7da99b12557ab9b8f4dbd6844254ef1dcb4e17eb5c8d5be1d9471ea0cc59020b66716a95641c6a93b27f0eb60273e4aff402dc
7
+ data.tar.gz: bbb42ebddcc49c0291fa85a7a1bdde9a43af58b8a518aca52cd4ea3b6223c6b6aaadc2dac5434269b1abd5a5059a3908d015216b54bbaf281a32decec47f536f
@@ -0,0 +1,25 @@
1
+ module Integrations::StripeInstallations::Base
2
+ extend ActiveSupport::Concern
3
+ # 🚅 add concerns above.
4
+
5
+ included do
6
+ belongs_to :team
7
+ belongs_to :oauth_stripe_account, class_name: "Oauth::StripeAccount"
8
+ # 🚅 add belongs_to associations above.
9
+
10
+ # 🚅 add has_many associations above.
11
+
12
+ # 🚅 add has_one associations above.
13
+
14
+ # 🚅 add scopes above.
15
+
16
+ validates :name, presence: true
17
+ # 🚅 add validations above.
18
+
19
+ # 🚅 add callbacks above.
20
+
21
+ # 🚅 add delegations above.
22
+ end
23
+
24
+ # 🚅 add methods above.
25
+ end
@@ -0,0 +1,48 @@
1
+ module Oauth::StripeAccounts::Base
2
+ extend ActiveSupport::Concern
3
+ # 🚅 add concerns above.
4
+
5
+ included do
6
+ belongs_to :user, optional: true
7
+ # 🚅 add belongs_to associations above.
8
+
9
+ has_many :webhooks_incoming_oauth_stripe_account_webhooks, class_name: "Webhooks::Incoming::Oauth::StripeAccountWebhook", foreign_key: "oauth_stripe_account_id"
10
+ has_many :integrations_stripe_installations, class_name: "Integrations::StripeInstallation", foreign_key: "oauth_stripe_account_id"
11
+ # 🚅 add has_many associations above.
12
+
13
+ # 🚅 add has_one associations above.
14
+
15
+ # 🚅 add scopes above.
16
+
17
+ validates :uid, presence: true
18
+ # 🚅 add validations above.
19
+
20
+ # 🚅 add callbacks above.
21
+
22
+ # 🚅 add delegations above.
23
+ end
24
+
25
+ def label_string
26
+ name
27
+ end
28
+
29
+ # TODO You should update this with an implementation appropriate for the provider you're integrating with.
30
+ # This must return _something_, otherwise new installations won't save.
31
+ def name
32
+ data.dig("info", "name").presence || "Stripe Account"
33
+ rescue
34
+ "Stripe Account"
35
+ end
36
+
37
+ def name_was
38
+ name
39
+ end
40
+
41
+ def update_from_oauth(auth)
42
+ self.uid = auth.uid
43
+ self.data = auth
44
+ save
45
+ end
46
+
47
+ # 🚅 add methods above.
48
+ end
@@ -0,0 +1,37 @@
1
+ module Webhooks::Incoming::Oauth::StripeAccountWebhooks::Base
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ include Webhooks::Incoming::Webhook
6
+
7
+ belongs_to :oauth_stripe_account, class_name: "Oauth::StripeAccount", optional: true
8
+ end
9
+
10
+ def process
11
+ # if this is a stripe connect webhook ..
12
+ if data["account"]
13
+
14
+ # if we're able to find an account in our system that this webhook should be routed to ..
15
+ if (self.oauth_stripe_account = Oauth::StripeAccount.find_by(uid: data["account"]))
16
+
17
+ # save the reference to the account.
18
+ save
19
+
20
+ # delegate processing to that account.
21
+ oauth_stripe_account.process_webhook(self)
22
+
23
+ end
24
+
25
+ # if we didn't find an account for the webhook, they've probably deleted their account. we'll just ignore it for
26
+ # now, but it's still in our database for debugging purposes. we'll probably want to send a request to stripe
27
+ # in order to disconnect their account from our application so we stop receiving webhooks.
28
+
29
+ else
30
+
31
+ # it's possible we're receiving a general webhook that isn't specific to an account.
32
+ # however, we want to know about these, so raise an error.
33
+ raise "received a webhook we weren't expecting"
34
+
35
+ end
36
+ end
37
+ end
@@ -1,29 +1,7 @@
1
1
  class Integrations::StripeInstallation < ApplicationRecord
2
- # 🚅 add concerns above.
3
-
4
- belongs_to :team
5
- belongs_to :oauth_stripe_account, class_name: "Oauth::StripeAccount"
6
- # 🚅 add belongs_to associations above.
7
-
8
- # 🚅 add has_many associations above.
9
-
10
- # 🚅 add has_one associations above.
11
-
12
- # 🚅 add scopes above.
13
-
14
- validates :name, presence: true
15
- # 🚅 add validations above.
16
-
17
- # 🚅 add callbacks above.
18
-
19
- # 🚅 add delegations above.
2
+ include Integrations::StripeInstallations::Base
20
3
 
21
4
  def process_webhook(webhook)
22
- # consider using transactions here. if an error occurs in the processing of a webhook, it's not like user-facing
23
- # errors on the web where they see a red screen of death. instead, sidekiq will reattempt the processing of the
24
- # entire webhook, which means that earlier portions of your logic will be run more than once unless you're careful
25
- # to avoid it.
5
+ raise "You should implement a `Integrations::StripeInstallation` model in your application that has `include Integrations::StripeInstallations::Base` and implements a `def process_webhook(webhook)` method."
26
6
  end
27
-
28
- # 🚅 add methods above.
29
7
  end
@@ -0,0 +1,5 @@
1
+ module Integrations
2
+ def self.table_name_prefix
3
+ "integrations_"
4
+ end
5
+ end
@@ -1,53 +1,3 @@
1
1
  class Oauth::StripeAccount < ApplicationRecord
2
- # 🚅 add concerns above.
3
-
4
- belongs_to :user, optional: true
5
- # 🚅 add belongs_to associations above.
6
-
7
- has_many :webhooks_incoming_oauth_stripe_account_webhooks, class_name: "Webhooks::Incoming::Oauth::StripeAccountWebhook", foreign_key: "oauth_stripe_account_id"
8
- has_many :integrations_stripe_installations, class_name: "Integrations::StripeInstallation", foreign_key: "oauth_stripe_account_id"
9
- # 🚅 add has_many associations above.
10
-
11
- # 🚅 add has_one associations above.
12
-
13
- # 🚅 add scopes above.
14
-
15
- validates :uid, presence: true
16
- # 🚅 add validations above.
17
-
18
- # 🚅 add callbacks above.
19
-
20
- # 🚅 add delegations above.
21
-
22
- def label_string
23
- name
24
- end
25
-
26
- # TODO You should update this with an implementation appropriate for the provider you're integrating with.
27
- # This must return _something_, otherwise new installations won't save.
28
- def name
29
- data.dig("info", "name").presence || "Stripe Account"
30
- rescue
31
- "Stripe Account"
32
- end
33
-
34
- def name_was
35
- name
36
- end
37
-
38
- def update_from_oauth(auth)
39
- self.uid = auth.uid
40
- self.data = auth
41
- save
42
- end
43
-
44
- # webhooks received for this account will be routed here asynchronously for processing on a worker.
45
- def process_webhook(webhook)
46
- # we delegate processing to any active installations.
47
- integrations_stripe_installations.order(:id).each do |installation|
48
- installation.process_webhook(webhook)
49
- end
50
- end
51
-
52
- # 🚅 add methods above.
2
+ include Oauth::StripeAccounts::Base
53
3
  end
@@ -0,0 +1,5 @@
1
+ module Oauth
2
+ def self.table_name_prefix
3
+ "oauth_"
4
+ end
5
+ end
@@ -1,33 +1,3 @@
1
1
  class Webhooks::Incoming::Oauth::StripeAccountWebhook < ApplicationRecord
2
- include Webhooks::Incoming::Webhook
3
-
4
- belongs_to :oauth_stripe_account, class_name: "Oauth::StripeAccount", optional: true
5
-
6
- def process
7
- # if this is a stripe connect webhook ..
8
- if data["account"]
9
-
10
- # if we're able to find an account in our system that this webhook should be routed to ..
11
- if (self.oauth_stripe_account = Oauth::StripeAccount.find_by(uid: data["account"]))
12
-
13
- # save the reference to the account.
14
- save
15
-
16
- # delegate processing to that account.
17
- oauth_stripe_account.process_webhook(self)
18
-
19
- end
20
-
21
- # if we didn't find an account for the webhook, they've probably deleted their account. we'll just ignore it for
22
- # now, but it's still in our database for debugging purposes. we'll probably want to send a request to stripe
23
- # in order to disconnect their account from our application so we stop receiving webhooks.
24
-
25
- else
26
-
27
- # it's possible we're receiving a general webhook that isn't specific to an account.
28
- # however, we want to know about these, so raise an error.
29
- raise "received a webhook we weren't expecting"
30
-
31
- end
32
- end
2
+ include Webhooks::Incoming::Oauth::StripeAccountWebhooks::Base
33
3
  end
@@ -0,0 +1,5 @@
1
+ module Webhooks::Incoming::Oauth
2
+ def self.table_name_prefix
3
+ "webhooks_incoming_oauth_"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Webhooks::Incoming
2
+ def self.table_name_prefix
3
+ "webhooks_incoming_"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Webhooks
2
+ def self.table_name_prefix
3
+ "webhooks_"
4
+ end
5
+ end
@@ -1,7 +1,7 @@
1
1
  module BulletTrain
2
2
  module Integrations
3
3
  module Stripe
4
- VERSION = "1.0.0"
4
+ VERSION = "1.0.3"
5
5
  end
6
6
  end
7
7
  end
@@ -1,6 +1,14 @@
1
1
  require "bullet_train/integrations/stripe/version"
2
2
  require "bullet_train/integrations/stripe/engine"
3
3
 
4
+ require "stripe"
5
+ require "omniauth"
6
+ require "omniauth-stripe-connect"
7
+
8
+ # TODO Remove when we're able to properly upgrade Omniauth.
9
+ # https://github.com/omniauth/omniauth/wiki/Resolving-CVE-2015-9284
10
+ require "omniauth/rails_csrf_protection"
11
+
4
12
  module BulletTrain
5
13
  module Integrations
6
14
  module Stripe
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet_train-integrations-stripe
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Culver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-22 00:00:00.000000000 Z
11
+ date: 2022-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,70 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 7.0.0
19
+ version: 6.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 7.0.0
26
+ version: 6.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: stripe
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: omniauth
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: omniauth-stripe-connect
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: omniauth-rails_csrf_protection
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
27
83
  description: Example Stripe platform integration for Bullet Train applications.
28
84
  email:
29
85
  - andrew.culver@gmail.com
@@ -38,8 +94,16 @@ files:
38
94
  - app/controllers/account/integrations/stripe_installations_controller.rb
39
95
  - app/controllers/account/oauth/stripe_accounts_controller.rb
40
96
  - app/controllers/webhooks/incoming/oauth/stripe_account_webhooks_controller.rb
97
+ - app/models/concerns/integrations/stripe_installations/base.rb
98
+ - app/models/concerns/oauth/stripe_accounts/base.rb
99
+ - app/models/concerns/webhooks/incoming/oauth/stripe_account_webhooks/base.rb
100
+ - app/models/integrations.rb
41
101
  - app/models/integrations/stripe_installation.rb
102
+ - app/models/oauth.rb
42
103
  - app/models/oauth/stripe_account.rb
104
+ - app/models/webhooks.rb
105
+ - app/models/webhooks/incoming.rb
106
+ - app/models/webhooks/incoming/oauth.rb
43
107
  - app/models/webhooks/incoming/oauth/stripe_account_webhook.rb
44
108
  - app/views/account/integrations/stripe_installations/_breadcrumbs.html.erb
45
109
  - app/views/account/integrations/stripe_installations/_form.html.erb