embulk-input-stripe 0.1.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0aff836b6c0954949a87020f23110c9d3eeceb2f
4
+ data.tar.gz: c7526f57d26570220fed99a33e4ab9003600a7af
5
+ SHA512:
6
+ metadata.gz: 1f4333f9ee53eb65c4ef0137711ae4e251da9f1d03846a729dfdd28e2a7a995517da8f5a76fd8dfbf11d830fc8a0708a358d6cd6c912bee0f13669cc82bc5250
7
+ data.tar.gz: 1326ef0c452bd0a2df0af8531612a3bb6ce353e412c5f5e5f2cd30573e95e18dcfe6011516aaf3fb97c40e0660a3818cd3026019fd77393be9c9f942a3daaceb
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'stripe'
4
+ require_relative 'stripe/customers'
5
+ require_relative 'stripe/invoices'
6
+ require_relative 'stripe/subscriptions'
7
+
8
+ module Embulk
9
+ module Input
10
+ class Stripe < InputPlugin
11
+ Plugin.register_input('stripe', self)
12
+
13
+ def self.transaction(config, &control)
14
+ ::Stripe.api_key = config.param('api_key', :string)
15
+ resource_type = config.param('resource_type', :string)
16
+ fields = config.param('fields', :array)
17
+
18
+ task = {
19
+ 'resource_type' => resource_type,
20
+ 'fields' => fields
21
+ }
22
+ columns = fields.map.with_index do |field, index|
23
+ field_name = field['name']
24
+ field_type = field['type'].to_sym
25
+ Column.new(index, field_name.gsub('.', '_'), field_type)
26
+ end
27
+
28
+ resume(task, columns, 1, &control)
29
+ end
30
+
31
+ def self.resume(task, columns, count, &control)
32
+ puts "Input started."
33
+ task_reports = yield(task, columns, count)
34
+ puts "Input finished. Commit reports = #{task_reports.to_json}"
35
+
36
+ {} # next_config_diff
37
+ end
38
+
39
+ def init
40
+ resource_type = task['resource_type']
41
+ fields = task['fields']
42
+
43
+ case resource_type
44
+ when 'customers'
45
+ @customers = Customers.new(fields)
46
+ when 'invoices'
47
+ @invoices = Invoices.new(fields)
48
+ when 'subscriptions'
49
+ @subscriptions = Subscriptions.new(fields)
50
+ else
51
+ raise StandardError, "Resource type #{resource_type} is not supported."
52
+ end
53
+ end
54
+
55
+ def run
56
+ target_items = case task['resource_type']
57
+ when 'customers'
58
+ @customers
59
+ when 'invoices'
60
+ @invoices
61
+ when 'subscriptions'
62
+ @subscriptions
63
+ end
64
+
65
+ target_items.get.each do |item|
66
+ page_builder.add(item)
67
+ end
68
+
69
+ page_builder.finish
70
+
71
+ {} # task_report
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'stripe'
4
+ require_relative './stripe_items'
5
+
6
+ class Customers < StripeItems
7
+ def items
8
+ Stripe::Customer.list
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'stripe'
4
+ require_relative './stripe_items'
5
+
6
+ class Invoices < StripeItems
7
+ def items
8
+ Stripe::Invoice.list
9
+ end
10
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'embulk/column'
4
+
5
+ class StripeItems
6
+ def initialize(fields)
7
+ @fields = fields
8
+ end
9
+
10
+ def get
11
+ result = []
12
+
13
+ items.auto_paging_each do |sub|
14
+ result.push(to_row(sub))
15
+ end
16
+ result
17
+ end
18
+
19
+ private
20
+
21
+ def items
22
+ raise 'Please override this method and return the items.'
23
+ end
24
+
25
+ def to_row(sub)
26
+ @fields.map do |field|
27
+ # Drill down into sub items (assumes fields are delimited with '.').
28
+ sub_fields = field['name'].split('.')
29
+ sub_fields.reduce(sub) do |memo, sub_field|
30
+ memo[sub_field]
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'stripe'
4
+ require_relative './stripe_items'
5
+
6
+ class Subscriptions < StripeItems
7
+ def items
8
+ Stripe::Subscription.list(status: 'all')
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,77 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: embulk-input-stripe
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Daisuke Shimamoto
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-04-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 5.32.1
19
+ name: stripe
20
+ prerelease: false
21
+ type: :runtime
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 5.32.1
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 13.0.3
33
+ name: rake
34
+ prerelease: false
35
+ type: :development
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 13.0.3
41
+ description: Loads data from Stripe.
42
+ email:
43
+ - diskshima@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/embulk/input/stripe.rb
49
+ - lib/embulk/input/stripe/customers.rb
50
+ - lib/embulk/input/stripe/invoices.rb
51
+ - lib/embulk/input/stripe/stripe_items.rb
52
+ - lib/embulk/input/stripe/subscriptions.rb
53
+ homepage: https://github.com/diskshima/embulk-input-stripe
54
+ licenses:
55
+ - MIT
56
+ metadata: {}
57
+ post_install_message:
58
+ rdoc_options: []
59
+ require_paths:
60
+ - lib
61
+ required_ruby_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ requirements: []
72
+ rubyforge_project:
73
+ rubygems_version: 2.6.14
74
+ signing_key:
75
+ specification_version: 4
76
+ summary: Embulk input plugin for Stripe
77
+ test_files: []