webhook 0.0.1 → 0.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.
- data/.gitignore +1 -0
- data/.travis.yml +8 -0
- data/README.md +8 -3
- data/Rakefile +9 -0
- data/lib/webhook.rb +7 -7
- data/lib/webhook/version.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/webhook_spec.rb +25 -10
- data/webhook.gemspec +1 -3
- metadata +35 -14
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/README.md
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# Webhook
|
|
2
2
|
|
|
3
|
-
Client library for making webhook calls.
|
|
3
|
+
Client library for making webhook calls. Compatible with Ruby 1.8.7, 1.9.2, 1.9.3, REE, JRuby 1.8 and 1.9.
|
|
4
|
+
|
|
5
|
+
There are no runtime dependencies.
|
|
4
6
|
|
|
5
7
|
## Installation
|
|
6
8
|
|
|
7
9
|
Add this line to your application's Gemfile:
|
|
8
10
|
|
|
9
|
-
gem 'webhook',
|
|
11
|
+
gem 'webhook', '~> 0.0.1'
|
|
10
12
|
|
|
11
13
|
And then execute:
|
|
12
14
|
|
|
@@ -21,6 +23,7 @@ Or install it yourself as:
|
|
|
21
23
|
require 'webhook'
|
|
22
24
|
|
|
23
25
|
code, message, body = Webhook.post('http://requestb.in/yadzsfya', :name => 'Abletech', :age => '6')
|
|
26
|
+
|
|
24
27
|
if code == '200'
|
|
25
28
|
puts "Success: #{body}"
|
|
26
29
|
else
|
|
@@ -29,7 +32,9 @@ Or install it yourself as:
|
|
|
29
32
|
|
|
30
33
|
## Testing
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
rake spec
|
|
36
|
+
|
|
37
|
+
[](http://travis-ci.org/AbleTech/webhook)
|
|
33
38
|
|
|
34
39
|
## Contributing
|
|
35
40
|
|
data/Rakefile
CHANGED
data/lib/webhook.rb
CHANGED
|
@@ -2,27 +2,27 @@ require "webhook/version"
|
|
|
2
2
|
require 'net/http'
|
|
3
3
|
|
|
4
4
|
module Webhook
|
|
5
|
-
def self.post(url, form_fields={}, request_headers={})
|
|
5
|
+
def self.post(url, form_fields={}, request_headers={}, proxy_settings={})
|
|
6
6
|
headers = {
|
|
7
7
|
"User-Agent" => "Abletech WebHook/#{VERSION}"
|
|
8
8
|
}.merge(request_headers)
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
uri = URI.parse(url)
|
|
11
11
|
use_ssl = (uri.scheme.downcase == 'https')
|
|
12
12
|
req = Net::HTTP::Post.new(uri.path, headers)
|
|
13
13
|
req.form_data = form_fields
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
begin
|
|
16
|
-
http_session = Net::HTTP.new(uri.host, uri.port)
|
|
16
|
+
http_session = Net::HTTP::Proxy(proxy_settings[:host], proxy_settings[:port]).new(uri.host, uri.port)
|
|
17
17
|
http_session.use_ssl = true if use_ssl
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
response = http_session.start { |http|
|
|
20
20
|
http.request(req)
|
|
21
21
|
}
|
|
22
22
|
rescue => e
|
|
23
23
|
raise "Unable to open stream: #{uri.to_s}; \n#{e.to_s}\n#{e.backtrace.join("\n")}"
|
|
24
24
|
end
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
return response.code, response.message, response.body
|
|
27
27
|
end
|
|
28
|
-
end
|
|
28
|
+
end
|
data/lib/webhook/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
|
@@ -8,7 +8,7 @@ require 'vcr'
|
|
|
8
8
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
|
9
9
|
VCR.configure do |c|
|
|
10
10
|
c.cassette_library_dir = 'spec/cassettes'
|
|
11
|
-
c.hook_into :
|
|
11
|
+
c.hook_into :fakeweb # or :webmock
|
|
12
12
|
c.default_cassette_options = { :record => :none }
|
|
13
13
|
end
|
|
14
14
|
|
data/spec/webhook_spec.rb
CHANGED
|
@@ -28,8 +28,8 @@ describe Webhook do
|
|
|
28
28
|
context 'with two request headers' do
|
|
29
29
|
use_vcr_cassette 'requestbin/extra_headers'
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
code, message, body = Webhook.post(
|
|
31
|
+
before(:each) do
|
|
32
|
+
@code, @message, @body = Webhook.post(
|
|
33
33
|
'http://requestb.in/yadzsfya',
|
|
34
34
|
{
|
|
35
35
|
'time' => 'to go'
|
|
@@ -39,18 +39,26 @@ describe Webhook do
|
|
|
39
39
|
'Initiator' => 'http://www.addressfinder.co.nz'
|
|
40
40
|
}
|
|
41
41
|
)
|
|
42
|
+
end
|
|
42
43
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
it 'returns a simple 200 response' do
|
|
45
|
+
@code.should eq('200')
|
|
46
|
+
@message.should eq("OK")
|
|
47
|
+
@body.should match(/ok/)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it 'sets the request headers correctly' do
|
|
51
|
+
headers = VCR::current_cassette.serializable_hash['http_interactions'].first['request']['headers']
|
|
52
|
+
headers['Referer'].should == ['http://www.abletech.co.nz']
|
|
53
|
+
headers['Initiator'].should == ['http://www.addressfinder.co.nz']
|
|
46
54
|
end
|
|
47
55
|
end
|
|
48
56
|
|
|
49
57
|
context 'with a new User-Agent header' do
|
|
50
58
|
use_vcr_cassette 'requestbin/user_agent'
|
|
51
59
|
|
|
52
|
-
|
|
53
|
-
code, message, body = Webhook.post(
|
|
60
|
+
before(:each) do
|
|
61
|
+
@code, @message, @body = Webhook.post(
|
|
54
62
|
'http://requestb.in/yadzsfya',
|
|
55
63
|
{
|
|
56
64
|
'time' => 'to go'
|
|
@@ -59,10 +67,17 @@ describe Webhook do
|
|
|
59
67
|
'User-Agent' => 'VCR/Agent 1.0'
|
|
60
68
|
}
|
|
61
69
|
)
|
|
70
|
+
end
|
|
62
71
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
72
|
+
it 'returns a simple 200 response' do
|
|
73
|
+
@code.should eq('200')
|
|
74
|
+
@message.should eq("OK")
|
|
75
|
+
@body.should match(/ok/)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it 'sets the request headers correctly' do
|
|
79
|
+
headers = VCR::current_cassette.serializable_hash['http_interactions'].first['request']['headers']
|
|
80
|
+
headers['User-Agent'].should == ['VCR/Agent 1.0']
|
|
66
81
|
end
|
|
67
82
|
end
|
|
68
83
|
end
|
data/webhook.gemspec
CHANGED
|
@@ -18,10 +18,8 @@ Gem::Specification.new do |s|
|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
19
19
|
s.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
-
# specify any dependencies here; for example:
|
|
22
21
|
s.add_development_dependency "rake"
|
|
23
22
|
s.add_development_dependency "rspec"
|
|
24
23
|
s.add_development_dependency "vcr"
|
|
25
|
-
s.add_development_dependency "
|
|
26
|
-
# s.add_runtime_dependency "rest-client"
|
|
24
|
+
s.add_development_dependency "fakeweb"
|
|
27
25
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: webhook
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-
|
|
12
|
+
date: 2012-09-18 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rake
|
|
16
|
-
requirement:
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,10 +21,15 @@ dependencies:
|
|
|
21
21
|
version: '0'
|
|
22
22
|
type: :development
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements:
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0'
|
|
25
30
|
- !ruby/object:Gem::Dependency
|
|
26
31
|
name: rspec
|
|
27
|
-
requirement:
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
28
33
|
none: false
|
|
29
34
|
requirements:
|
|
30
35
|
- - ! '>='
|
|
@@ -32,10 +37,15 @@ dependencies:
|
|
|
32
37
|
version: '0'
|
|
33
38
|
type: :development
|
|
34
39
|
prerelease: false
|
|
35
|
-
version_requirements:
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ! '>='
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '0'
|
|
36
46
|
- !ruby/object:Gem::Dependency
|
|
37
47
|
name: vcr
|
|
38
|
-
requirement:
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
39
49
|
none: false
|
|
40
50
|
requirements:
|
|
41
51
|
- - ! '>='
|
|
@@ -43,10 +53,15 @@ dependencies:
|
|
|
43
53
|
version: '0'
|
|
44
54
|
type: :development
|
|
45
55
|
prerelease: false
|
|
46
|
-
version_requirements:
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
58
|
+
requirements:
|
|
59
|
+
- - ! '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
47
62
|
- !ruby/object:Gem::Dependency
|
|
48
|
-
name:
|
|
49
|
-
requirement:
|
|
63
|
+
name: fakeweb
|
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
|
50
65
|
none: false
|
|
51
66
|
requirements:
|
|
52
67
|
- - ! '>='
|
|
@@ -54,7 +69,12 @@ dependencies:
|
|
|
54
69
|
version: '0'
|
|
55
70
|
type: :development
|
|
56
71
|
prerelease: false
|
|
57
|
-
version_requirements:
|
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
+
none: false
|
|
74
|
+
requirements:
|
|
75
|
+
- - ! '>='
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: '0'
|
|
58
78
|
description: Execute webhook callbacks easily
|
|
59
79
|
email:
|
|
60
80
|
- nigel.ramsay@abletech.co.nz
|
|
@@ -64,6 +84,7 @@ extra_rdoc_files: []
|
|
|
64
84
|
files:
|
|
65
85
|
- .gitignore
|
|
66
86
|
- .rspec
|
|
87
|
+
- .travis.yml
|
|
67
88
|
- Gemfile
|
|
68
89
|
- README.md
|
|
69
90
|
- Rakefile
|
|
@@ -90,7 +111,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
90
111
|
version: '0'
|
|
91
112
|
segments:
|
|
92
113
|
- 0
|
|
93
|
-
hash: -
|
|
114
|
+
hash: -687198169506099036
|
|
94
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
116
|
none: false
|
|
96
117
|
requirements:
|
|
@@ -99,10 +120,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
99
120
|
version: '0'
|
|
100
121
|
segments:
|
|
101
122
|
- 0
|
|
102
|
-
hash: -
|
|
123
|
+
hash: -687198169506099036
|
|
103
124
|
requirements: []
|
|
104
125
|
rubyforge_project: webhook
|
|
105
|
-
rubygems_version: 1.8.
|
|
126
|
+
rubygems_version: 1.8.24
|
|
106
127
|
signing_key:
|
|
107
128
|
specification_version: 3
|
|
108
129
|
summary: Execute webhook callbacks easily
|