contentful-webhook-listener 0.2.1 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5be0e0cdf9733135b317548fc9924c2bc8bdbf9b
4
- data.tar.gz: 43efe07cf45335ad09e018bb37bb1877b6883bb7
3
+ metadata.gz: 9f6ded8f1bbba252903740a01f7d5ab58bee71e2
4
+ data.tar.gz: c62f6b5fe90567201e1cca0f1a447e76f5377c0d
5
5
  SHA512:
6
- metadata.gz: 1d60327e25d838c1510c637568aca70ef02341871b521321c431503ee11ef71ac1e09e2a4f824e5f40f13200f4c2cb7ca6ebf1c0447d0ed502623804719b3365
7
- data.tar.gz: 51e8ff1d72c967fe88c8c2b3a6cbe263a79f1da28e921d9945ea4f101808db65466acc40418f0dab49b54ac95d03621ee343ae280a1595dc8e176f119ffa6fee
6
+ metadata.gz: 5c1f7fe9ef0c72d0f79f09776cd10e8e839d76bf170549ca6ba232e221acfa349e4d328fa51c96a9c59a5b1920b45130d06c52f2448399c2d519c9b9cb7f539c
7
+ data.tar.gz: dd9b4feedaf0d2e05bfafbf094bcd339be0f9b2978a5ae05b56ba6ad79331e1d68e92597129b3ed64ab91d7a9628a8df6ae3051ac548866aa64e0b1d66452a54
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v0.3.0
6
+ ### Fixed
7
+ * Fix race condition on response [#4](https://github.com/contentful/contentful-webhook-listener.rb/issues/4)
8
+
5
9
  ## v0.2.1
6
10
  ### Fixed
7
11
  * Fixes Headers for case-insensitive retrieval
@@ -18,8 +18,12 @@ module Contentful
18
18
  response.body = ''
19
19
  response.status = 200
20
20
 
21
+ pre_perform(request, response)
22
+
23
+ return if response.status != 200
24
+
21
25
  Thread.new do
22
- perform(request, response)
26
+ perform(request, response)
23
27
  end
24
28
  end
25
29
 
@@ -28,6 +32,11 @@ module Contentful
28
32
 
29
33
  protected
30
34
 
35
+ def pre_perform(_request, _response)
36
+ ensure
37
+ _response
38
+ end
39
+
31
40
  def perform(_request, _response)
32
41
  fail 'must implement'
33
42
  end
@@ -19,6 +19,8 @@ module Contentful
19
19
 
20
20
  def perform(_request, _response)
21
21
  sleep(webhook_timeout)
22
+ ensure
23
+ _response
22
24
  end
23
25
  end
24
26
  end
@@ -34,20 +34,22 @@ module Contentful
34
34
 
35
35
  protected
36
36
 
37
- def perform(request, response)
38
- begin
39
- @webhook = WebhookFactory.new(request).create
40
- rescue Exception => e
41
- logger.error e
42
- response.body = "Not a Webhook"
43
- response.status = 400
44
- return
45
- end
37
+ def pre_perform(request, response)
38
+ @webhook = WebhookFactory.new(request).create
39
+ rescue Exception => e
40
+ logger.error 'Not a Webhook. Stacktrace: '
41
+ logger.error e
42
+ response.body = "Not a Webhook"
43
+ response.status = 400
44
+ end
46
45
 
46
+ def perform(request, response)
47
47
  super(request, response)
48
48
 
49
49
  logger.debug "Webhook Data: {id: #{webhook.id}, space_id: #{webhook.space_id}, kind: #{webhook.kind}, event: #{webhook.event}}"
50
50
  send(webhook.event)
51
+ ensure
52
+ response
51
53
  end
52
54
  end
53
55
  end
@@ -2,7 +2,7 @@ module Contentful
2
2
  module Webhook
3
3
  # Webhook Listener
4
4
  module Listener
5
- VERSION = '0.2.1'
5
+ VERSION = '0.3.0'
6
6
  end
7
7
  end
8
8
  end
@@ -28,6 +28,8 @@ module Contentful
28
28
  def webhook_class_name
29
29
  event_name = @headers[::Contentful::Webhook::Listener::WebhookConstants::WEBHOOK_TOPIC].split('.')[-1].split('_').collect(&:capitalize).join
30
30
  "Contentful::Webhook::Listener::#{event_name}Webhook"
31
+ rescue Exception
32
+ fail 'Could not detect Webhook class'
31
33
  end
32
34
  end
33
35
 
@@ -18,7 +18,7 @@ describe Contentful::Webhook::Listener::Controllers::WebhookAware do
18
18
 
19
19
  it 'returns 400 Bad Request on non-webhook call' do
20
20
  response = MockResponse.new
21
- subject.respond(RequestDummy.new(nil, "foo"), response).join
21
+ subject.respond(RequestDummy.new(nil, "foo"), response)
22
22
 
23
23
  expect(response.status).to eq(400)
24
24
  expect(response.body).to eq('Not a Webhook')
@@ -44,6 +44,12 @@ describe Contentful::Webhook::Listener::WebhookFactory do
44
44
  expect(webhook).to be_a Contentful::Webhook::Listener::DeleteWebhook
45
45
  end
46
46
  end
47
+
48
+ describe 'errors' do
49
+ it 'raises an error when it cant detect webhook' do
50
+ expect { described_class.new(RequestDummy.new({}, body)).create }.to raise_error "Could not detect Webhook class"
51
+ end
52
+ end
47
53
  end
48
54
  end
49
55
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contentful-webhook-listener
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Contentful GmbH (David Litvak Bruno)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-26 00:00:00.000000000 Z
11
+ date: 2016-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  version: '0'
151
151
  requirements: []
152
152
  rubyforge_project:
153
- rubygems_version: 2.5.0
153
+ rubygems_version: 2.5.1
154
154
  signing_key:
155
155
  specification_version: 4
156
156
  summary: A Simple HTTP Webserver with pluggable behavior for listening to Contentful