webhook_system 1.0.1 → 1.0.2
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/.gitignore +1 -0
- data/CHANGELOG.md +5 -0
- data/lib/faraday_middleware/encoding.rb +21 -0
- data/lib/webhook_system.rb +1 -0
- data/lib/webhook_system/event_log.rb +4 -2
- data/lib/webhook_system/job.rb +15 -1
- data/lib/webhook_system/version.rb +1 -1
- data/webhook_system.gemspec +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1e79d3307cae895f3ea016c4dd81c18c5b6354d
|
4
|
+
data.tar.gz: 3a8cd5f259b506a2fbf305f718b997580dbd5cb4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f64d2e41f827ded493d94c87b2a0ddf8a1bba499111cd34599c006d799c557af9530c4cdbc80d2b7fbdbcb3122f6b0887937f26fffe40b0bb71e57386d278fc2
|
7
|
+
data.tar.gz: 76a400599bfd625ea6fa85dc9e40d1cb3cf22200e8acc25118fb1dd8bcea20a7fe4901fdaa335119ab9ad2ed13b74c0ed263206664143c7c2a1b3bca0b7bf722
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v1.0.1](https://github.com/payrollhero/webhook_system/tree/v1.0.1) (2016-02-16)
|
4
|
+
[Full Changelog](https://github.com/payrollhero/webhook_system/compare/v1.0.0...v1.0.1)
|
5
|
+
|
6
|
+
- Add missing require for Faraday [\#5](https://github.com/payrollhero/webhook_system/pull/5) ([mykola-kyryk](https://github.com/mykola-kyryk))
|
7
|
+
|
3
8
|
## [v1.0.0](https://github.com/payrollhero/webhook_system/tree/v1.0.0) (2016-02-11)
|
4
9
|
[Full Changelog](https://github.com/payrollhero/webhook_system/compare/v0.1.1...v1.0.0)
|
5
10
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# This is taken from https://github.com/ma2gedev/faraday-encoding,
|
2
|
+
# all credits for this goes to Takayuki Matsubara (takayuki.1229+github@gmail.com).
|
3
|
+
# We should be able to switch to the original gem when
|
4
|
+
# this PR (https://github.com/ma2gedev/faraday-encoding/pull/2) is merged.
|
5
|
+
module Faraday
|
6
|
+
class Faraday::Encoding < Faraday::Middleware
|
7
|
+
def call(environment)
|
8
|
+
@app.call(environment).on_complete do |env|
|
9
|
+
@content_charset = nil
|
10
|
+
if /;\s*charset=\s*(.+?)\s*(;|$)/.match(env[:response_headers][:content_type])
|
11
|
+
encoding = $1
|
12
|
+
encoding = 'utf-8' if encoding == 'utf8' # this is the actual fix
|
13
|
+
@content_charset = ::Encoding.find encoding rescue nil
|
14
|
+
end
|
15
|
+
env[:body].force_encoding @content_charset if @content_charset
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
Faraday::Response.register_middleware :encoding => Faraday::Encoding
|
data/lib/webhook_system.rb
CHANGED
@@ -4,6 +4,8 @@ module WebhookSystem
|
|
4
4
|
class EventLog < ActiveRecord::Base
|
5
5
|
self.table_name = 'webhook_event_logs'
|
6
6
|
|
7
|
+
MAX_JSON_ATTRIBUTE_SIZE = 40_000
|
8
|
+
|
7
9
|
belongs_to :subscription, class_name: 'WebhookSystem::Subscription'
|
8
10
|
|
9
11
|
validates :event_id, presence: true
|
@@ -18,12 +20,12 @@ module WebhookSystem
|
|
18
20
|
request_info = {
|
19
21
|
'event' => event,
|
20
22
|
'headers' => request.headers.to_hash,
|
21
|
-
'body' => request.body,
|
23
|
+
'body' => request.body.truncate(MAX_JSON_ATTRIBUTE_SIZE),
|
22
24
|
'url' => request.path,
|
23
25
|
}
|
24
26
|
response_info = {
|
25
27
|
'headers' => response.headers.to_hash,
|
26
|
-
'body' => response.body,
|
28
|
+
'body' => response.body.truncate(MAX_JSON_ATTRIBUTE_SIZE),
|
27
29
|
}
|
28
30
|
|
29
31
|
attributes = {
|
data/lib/webhook_system/job.rb
CHANGED
@@ -40,12 +40,26 @@ module WebhookSystem
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def self.log_response(subscription, event, request, response)
|
43
|
-
EventLog.construct(subscription, event, request, response)
|
43
|
+
event_log = EventLog.construct(subscription, event, request, response)
|
44
|
+
|
45
|
+
# we write log in a separate thread to make sure it is created even if the whole job fails
|
46
|
+
# Usually any background job would be wrapped into transaction,
|
47
|
+
# so if the job fails we would rollback any DB changes, including the even log record.
|
48
|
+
# We want the even log record to always be created, so we check if we are running inside the transaction,
|
49
|
+
# if we are - we create the record in a separate thread. New Thread means a new DB connection and
|
50
|
+
# ActiveRecord transactions are per connection, which gives us the "transaction jailbreak".
|
51
|
+
if ActiveRecord::Base.connection.open_transactions == 0
|
52
|
+
event_log.save!
|
53
|
+
else
|
54
|
+
Thread.new { event_log.save! }.join
|
55
|
+
end
|
44
56
|
end
|
45
57
|
|
46
58
|
def self.build_client
|
47
59
|
Faraday.new do |faraday|
|
48
60
|
faraday.response :logger if ENV['WEBHOOK_DEBUG']
|
61
|
+
# use Faraday::Encoding middleware, libfaraday_middleware/encoding.rb
|
62
|
+
faraday.response :encoding
|
49
63
|
faraday.adapter Faraday.default_adapter
|
50
64
|
end
|
51
65
|
end
|
data/webhook_system.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |gem|
|
|
21
21
|
gem.add_runtime_dependency 'activesupport', '> 3.2'
|
22
22
|
gem.add_runtime_dependency 'activerecord', '> 3.2'
|
23
23
|
gem.add_runtime_dependency 'activejob'
|
24
|
-
gem.add_runtime_dependency 'faraday'
|
24
|
+
gem.add_runtime_dependency 'faraday', '~> 0.9'
|
25
25
|
gem.add_runtime_dependency 'ph_model'
|
26
26
|
gem.add_runtime_dependency 'validate_url', '~> 1.0'
|
27
27
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webhook_system
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Banasik
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-02-
|
12
|
+
date: 2016-02-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -57,16 +57,16 @@ dependencies:
|
|
57
57
|
name: faraday
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - "
|
60
|
+
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
62
|
+
version: '0.9'
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - "
|
67
|
+
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
69
|
+
version: '0.9'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: ph_model
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -268,6 +268,7 @@ files:
|
|
268
268
|
- LICENSE.txt
|
269
269
|
- README.md
|
270
270
|
- Rakefile
|
271
|
+
- lib/faraday_middleware/encoding.rb
|
271
272
|
- lib/webhook_system.rb
|
272
273
|
- lib/webhook_system/base_event.rb
|
273
274
|
- lib/webhook_system/dispatcher.rb
|