compensated 0.1.0.pre6 → 0.1.0.pre7
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 +1 -1
- data/compensated.gemspec +9 -9
- data/lib/compensated/apple_iap/event_parser.rb +42 -0
- data/lib/compensated/apple_iap.rb +7 -0
- data/lib/compensated/event_parser.rb +15 -0
- data/lib/compensated/payment_processor_event_request.rb +2 -1
- data/lib/compensated/stripe/event_parser.rb +2 -5
- data/lib/compensated/version.rb +1 -1
- data/lib/compensated.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c19dff720370589fb90015944b4b0ff8520b047f280c7968c91d083216d46e2
|
4
|
+
data.tar.gz: 93390c30dfb4a274be691396e18870132e1a6783cd03f8f443ce6fa344fb5244
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 459cbd3cfd663b13fa2864c6b68614fd89407664859f94f0684cc816314cb150f070302038942c71f302d11c55fc3197552ebb690627e800b3b9da730b07070e
|
7
|
+
data.tar.gz: 8d7d650d1715e8567245358a4b624889e719f7ed98ec4a62cbde3d902c5d9d4784322cd7f89a610e09d9c0b512a9dc292a0b2f150ea24336ea581d939250527a
|
data/Gemfile.lock
CHANGED
data/compensated.gemspec
CHANGED
@@ -3,14 +3,14 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
require "compensated/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name
|
7
|
-
spec.version
|
8
|
-
spec.authors
|
9
|
-
spec.email
|
6
|
+
spec.name = "compensated"
|
7
|
+
spec.version = Compensated::VERSION
|
8
|
+
spec.authors = ["Zee"]
|
9
|
+
spec.email = ["zee@zincma.de"]
|
10
10
|
|
11
|
-
spec.summary
|
12
|
-
spec.description
|
13
|
-
spec.homepage
|
11
|
+
spec.summary = "Provide value (In Ruby!). Get paid."
|
12
|
+
spec.description = "Compensated makes handling transactions slightly less of a nightmare."
|
13
|
+
spec.homepage = "https://github.com/zinc-technology/compensated"
|
14
14
|
|
15
15
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
16
16
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
@@ -30,8 +30,8 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
|
31
31
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|bin|examples)/}) }
|
32
32
|
end
|
33
|
-
spec.bindir
|
34
|
-
spec.executables
|
33
|
+
spec.bindir = "exe"
|
34
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
35
35
|
spec.require_paths = ["lib"]
|
36
36
|
|
37
37
|
spec.add_development_dependency "bundler", "~> 2.0"
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require "compensated/event_parser"
|
2
|
+
module Compensated
|
3
|
+
module AppleIap
|
4
|
+
class EventParser < Compensated::EventParser
|
5
|
+
SUPPORTED_TYPES = ["INTERACTIVE_RENEWAL", "DID_CHANGE_RENEWAL_STATUS"]
|
6
|
+
def parses?(request)
|
7
|
+
return false unless request.data
|
8
|
+
request.data[:notification_type] &&
|
9
|
+
SUPPORTED_TYPES.include?(request.data[:notification_type])
|
10
|
+
end
|
11
|
+
|
12
|
+
def normalize(data)
|
13
|
+
data = Compensated.json_adapter.parse(data) unless data.respond_to?(:key)
|
14
|
+
{
|
15
|
+
raw_body: Compensated.json_adapter.dump(data),
|
16
|
+
raw_event_type: data[:notification_type].to_sym,
|
17
|
+
raw_event_id: receipt_data(data)[:transaction_id],
|
18
|
+
payment_processor: :apple_iap,
|
19
|
+
customer: customer(data),
|
20
|
+
products: products(data),
|
21
|
+
}.compact
|
22
|
+
end
|
23
|
+
|
24
|
+
def receipt_data(data)
|
25
|
+
data[:latest_expired_receipt_info] || data[:latest_receipt_info]
|
26
|
+
end
|
27
|
+
|
28
|
+
def products(data)
|
29
|
+
[
|
30
|
+
{sku: receipt_data(data)[:product_id]},
|
31
|
+
]
|
32
|
+
end
|
33
|
+
|
34
|
+
def customer(data)
|
35
|
+
{
|
36
|
+
id: receipt_data(data)[:original_transaction_id],
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
event_parsers.push(AppleIap::EventParser.new)
|
42
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Compensated
|
2
|
+
class EventParser
|
3
|
+
def parse(request)
|
4
|
+
normalize(request.data)
|
5
|
+
end
|
6
|
+
|
7
|
+
def parses?(request)
|
8
|
+
raise NotImplementedError("Implement in Child")
|
9
|
+
end
|
10
|
+
|
11
|
+
def normalize(data)
|
12
|
+
raise NotImplementedError("Implement in Child")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -4,6 +4,7 @@ module Compensated
|
|
4
4
|
# functionality
|
5
5
|
class PaymentProcessorEventRequest
|
6
6
|
extend Forwardable
|
7
|
+
|
7
8
|
attr_accessor :request
|
8
9
|
# @param request [Rack::Request] A rack-compatible HTTP request triggered
|
9
10
|
# by the payment processor
|
@@ -16,7 +17,7 @@ module Compensated
|
|
16
17
|
|
17
18
|
# @returns Hash
|
18
19
|
def data
|
19
|
-
return @data
|
20
|
+
return @data if defined?(@data) && !@data.nil?
|
20
21
|
if request.form_data?
|
21
22
|
@data = request.params
|
22
23
|
elsif !body.nil?
|
@@ -1,7 +1,8 @@
|
|
1
|
+
require "compensated/event_parser"
|
1
2
|
module Compensated
|
2
3
|
module Stripe
|
3
4
|
SUPPORTED_EVENTS = %w[charge.succeeded invoice.payment_succeeded]
|
4
|
-
class EventParser
|
5
|
+
class EventParser < Compensated::EventParser
|
5
6
|
def parses?(request)
|
6
7
|
return false if request.nil? || request.empty?
|
7
8
|
SUPPORTED_EVENTS.include?(request.data[:type])
|
@@ -19,10 +20,6 @@ module Compensated
|
|
19
20
|
}
|
20
21
|
end
|
21
22
|
|
22
|
-
def parse(request)
|
23
|
-
normalize(request.data)
|
24
|
-
end
|
25
|
-
|
26
23
|
private def customer(data)
|
27
24
|
if invoice?(data)
|
28
25
|
{
|
data/lib/compensated/version.rb
CHANGED
data/lib/compensated.rb
CHANGED
@@ -29,7 +29,7 @@ module Compensated
|
|
29
29
|
# In cases where the default JSON parser is unacceptable, configure
|
30
30
|
# the json engine using `Compensated.json_engine = <Your preferred JSON parser>`
|
31
31
|
def self.json_engine
|
32
|
-
require "json" unless @json_engine
|
32
|
+
require "json" unless defined?(@json_engine)
|
33
33
|
@json_engine ||= JSON
|
34
34
|
end
|
35
35
|
|
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.pre7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zee
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -81,6 +81,9 @@ files:
|
|
81
81
|
- Rakefile
|
82
82
|
- compensated.gemspec
|
83
83
|
- lib/compensated.rb
|
84
|
+
- lib/compensated/apple_iap.rb
|
85
|
+
- lib/compensated/apple_iap/event_parser.rb
|
86
|
+
- lib/compensated/event_parser.rb
|
84
87
|
- lib/compensated/gumroad.rb
|
85
88
|
- lib/compensated/gumroad/csv_emitter.rb
|
86
89
|
- lib/compensated/gumroad/event_parser.rb
|