webhook 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ .rvmrc
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - jruby-18mode
7
+ - jruby-19mode
8
+ - ree
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', :git => "git@github.com:AbleTech/webhook.git"
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
- rspec
35
+ rake spec
36
+
37
+ [![Build Status](https://secure.travis-ci.org/AbleTech/webhook.png)](http://travis-ci.org/AbleTech/webhook)
33
38
 
34
39
  ## Contributing
35
40
 
data/Rakefile CHANGED
@@ -1 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ # RSpec 2.0
5
+ RSpec::Core::RakeTask.new(:spec) do |spec|
6
+ spec.pattern = 'spec/*_spec.rb'
7
+ spec.rspec_opts = ['--backtrace']
8
+ end
9
+
10
+ task :default => [:spec]
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
@@ -1,3 +1,3 @@
1
1
  module Webhook
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
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 :webmock # or :fakeweb
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
- it 'returns a simple 200 response' do
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
- code.should eq('200')
44
- message.should eq("OK")
45
- body.should match(/ok/)
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
- it 'returns a simple 200 response' do
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
- code.should eq('200')
64
- message.should eq("OK")
65
- body.should match(/ok/)
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 "webmock"
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.1
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-04-06 00:00:00.000000000 Z
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: &70332983852700 !ruby/object:Gem::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: *70332983852700
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: &70332983851960 !ruby/object:Gem::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: *70332983851960
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: &70332983851480 !ruby/object:Gem::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: *70332983851480
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: webmock
49
- requirement: &70332983851060 !ruby/object:Gem::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: *70332983851060
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: -3836839300880113512
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: -3836839300880113512
123
+ hash: -687198169506099036
103
124
  requirements: []
104
125
  rubyforge_project: webhook
105
- rubygems_version: 1.8.11
126
+ rubygems_version: 1.8.24
106
127
  signing_key:
107
128
  specification_version: 3
108
129
  summary: Execute webhook callbacks easily