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 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