compensated 0.1.0.pre1 → 0.1.0.pre2
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 +4 -4
- data/Gemfile.lock +3 -1
- data/compensated.gemspec +1 -0
- data/lib/compensated/gumroad/csv_emitter.rb +15 -0
- data/lib/compensated/gumroad/event_parser.rb +23 -0
- data/lib/compensated/gumroad.rb +6 -0
- data/lib/compensated/payment_processor_event_request.rb +31 -0
- data/lib/compensated/payment_processor_event_request_handler.rb +5 -13
- data/lib/compensated/stripe/event_parser.rb +7 -7
- data/lib/compensated/version.rb +1 -1
- metadata +20 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b33e091cd8f3e8e3b36393b3088ab4bb861e99107d2c325432ffa54503df59a9
|
4
|
+
data.tar.gz: 9edef7647ce0e9877dd2596a44c027bd8769745086fa390106353ddf014b3ad1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4f58665f50a4d98011780bebbd8facebfbcbd409ade95c4f042a0dbbaa2b22e7e2af40168038316ffc8d24012fa2c47dea6a83d35b0e8155562cf1cec747aeb
|
7
|
+
data.tar.gz: 94886732c8a725f838c8e9b899146057eff3181f762ac7269c75cd9e87736cb2110080f37dd52e33504edb8789020547d52d8b5e9f805e428ffdd415cef417b0
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
compensated (0.1.0.
|
4
|
+
compensated (0.1.0.pre2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
9
|
diff-lcs (1.3)
|
10
|
+
rack (2.0.7)
|
10
11
|
rake (10.5.0)
|
11
12
|
rspec (3.8.0)
|
12
13
|
rspec-core (~> 3.8.0)
|
@@ -28,6 +29,7 @@ PLATFORMS
|
|
28
29
|
DEPENDENCIES
|
29
30
|
bundler (~> 2.0)
|
30
31
|
compensated!
|
32
|
+
rack
|
31
33
|
rake (~> 10.0)
|
32
34
|
rspec (~> 3.0)
|
33
35
|
|
data/compensated.gemspec
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
require "csv"
|
2
|
+
module Compensated
|
3
|
+
module Gumroad
|
4
|
+
class CSVEmitter
|
5
|
+
def parse(io)
|
6
|
+
CSV.new(io, headers: true).map do |row|
|
7
|
+
{payment_processor: :gumroad,
|
8
|
+
raw_event_type: :"csv.purchase_entry",
|
9
|
+
raw_event_id: row["Purchase ID"],
|
10
|
+
raw_body: row.to_s.strip,}
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Compensated
|
2
|
+
module Gumroad
|
3
|
+
class EventParser
|
4
|
+
def parses?(request)
|
5
|
+
# Gumroad pings are always form data
|
6
|
+
return false unless request.form_data?
|
7
|
+
keys = request.data.keys.map(&:to_sym)
|
8
|
+
keys.include?(:seller_id) && keys.include?(:product_id) && keys.include?(:product_permalink) && request.data["product_permalink"].include?("gum.co")
|
9
|
+
end
|
10
|
+
|
11
|
+
def parse(request)
|
12
|
+
{
|
13
|
+
raw_body: request.body,
|
14
|
+
raw_event_type: request.data["resource_name"].to_sym,
|
15
|
+
raw_event_id: nil,
|
16
|
+
payment_processor: :gumroad,
|
17
|
+
|
18
|
+
}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
Compensated.event_parsers.push(EventParser)
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "forwardable"
|
2
|
+
module Compensated
|
3
|
+
# Decorator for the Rack::Request to provide Compensated specific
|
4
|
+
# functionality
|
5
|
+
class PaymentProcessorEventRequest
|
6
|
+
extend Forwardable
|
7
|
+
attr_accessor :request
|
8
|
+
# @param request [Rack::Request] A rack-compatible HTTP request triggered
|
9
|
+
# by the payment processor
|
10
|
+
def initialize(request)
|
11
|
+
self.request = request
|
12
|
+
end
|
13
|
+
|
14
|
+
def_delegator :request, :form_data?
|
15
|
+
def_delegator :request, :body
|
16
|
+
|
17
|
+
# @returns Hash
|
18
|
+
def data
|
19
|
+
return @data unless @data.nil?
|
20
|
+
if request.form_data?
|
21
|
+
@data = request.params
|
22
|
+
elsif !body.nil?
|
23
|
+
@data = Compensated.json_adapter.parse(body)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def empty?
|
28
|
+
body.nil? || body.respond_to?(:empty?) && body.empty?
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require_relative "payment_processor_event_request"
|
1
2
|
module Compensated
|
2
3
|
# Normalizes events by passing them to an EventParser
|
3
4
|
# Which transforms them into a hash that can be
|
@@ -7,28 +8,19 @@ module Compensated
|
|
7
8
|
# @param event_request [Request] A rack-compatible HTTP request triggered
|
8
9
|
# by the payment processor
|
9
10
|
def initialize(event_request)
|
10
|
-
self.event_request = event_request
|
11
|
+
self.event_request = PaymentProcessorEventRequest.new(event_request)
|
11
12
|
end
|
12
13
|
|
13
14
|
# @return Hash
|
14
15
|
def normalized_event_data
|
15
|
-
event_parser.parse(
|
16
|
+
event_parser.parse(event_request)
|
16
17
|
end
|
17
18
|
|
18
19
|
protected def event_parser
|
19
20
|
return @event_parser unless @event_parser.nil?
|
20
|
-
@event_parser = Compensated.event_parsers.find { |parser| parser.parses?(
|
21
|
-
raise NoParserForEventError,
|
21
|
+
@event_parser = Compensated.event_parsers.find { |parser| parser.parses?(event_request) }
|
22
|
+
raise NoParserForEventError, event_request.data if @event_parser.nil?
|
22
23
|
@event_parser
|
23
24
|
end
|
24
|
-
|
25
|
-
protected def event_request_body_data
|
26
|
-
@event_request_body_data ||= Compensated.json_adapter.parse(event_request_body)
|
27
|
-
end
|
28
|
-
|
29
|
-
protected def event_request_body
|
30
|
-
return @event_request_body unless @event_request_body.nil?
|
31
|
-
@event_request_body = event_request.body
|
32
|
-
end
|
33
25
|
end
|
34
26
|
end
|
@@ -2,16 +2,16 @@ module Compensated
|
|
2
2
|
module Stripe
|
3
3
|
SUPPORTED_EVENTS = %w[charge.succeeded invoice.payment_succeeded]
|
4
4
|
class EventParser
|
5
|
-
def parses?(
|
6
|
-
return false if
|
7
|
-
SUPPORTED_EVENTS.include?(
|
5
|
+
def parses?(request)
|
6
|
+
return false if request.nil? || request.empty?
|
7
|
+
SUPPORTED_EVENTS.include?(request.data[:type])
|
8
8
|
end
|
9
9
|
|
10
|
-
def parse(
|
10
|
+
def parse(request)
|
11
11
|
{
|
12
|
-
raw_body: Compensated.json_adapter.dump(
|
13
|
-
raw_event_type:
|
14
|
-
raw_event_id:
|
12
|
+
raw_body: Compensated.json_adapter.dump(request.data),
|
13
|
+
raw_event_type: request.data[:type].to_sym,
|
14
|
+
raw_event_id: request.data[:id],
|
15
15
|
payment_processor: :stripe,
|
16
16
|
}
|
17
17
|
end
|
data/lib/compensated/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: compensated
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zee
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rack
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: Compensated makes handling transactions slightly less of a nightmare.
|
56
70
|
email:
|
57
71
|
- zee@zincma.de
|
@@ -72,6 +86,10 @@ files:
|
|
72
86
|
- compensated.gemspec
|
73
87
|
- examples/compensated-rails-5/Gemfile
|
74
88
|
- lib/compensated.rb
|
89
|
+
- lib/compensated/gumroad.rb
|
90
|
+
- lib/compensated/gumroad/csv_emitter.rb
|
91
|
+
- lib/compensated/gumroad/event_parser.rb
|
92
|
+
- lib/compensated/payment_processor_event_request.rb
|
75
93
|
- lib/compensated/payment_processor_event_request_handler.rb
|
76
94
|
- lib/compensated/stripe.rb
|
77
95
|
- lib/compensated/stripe/event_parser.rb
|