webhook 0.0.1

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 ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in webhook.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # Webhook
2
+
3
+ Client library for making webhook calls.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'webhook', :git => "git@github.com:AbleTech/webhook.git"
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install webhook
18
+
19
+ ## Usage
20
+
21
+ require 'webhook'
22
+
23
+ code, message, body = Webhook.post('http://requestb.in/yadzsfya', :name => 'Abletech', :age => '6')
24
+ if code == '200'
25
+ puts "Success: #{body}"
26
+ else
27
+ puts "Error (#{code}): {message}\n#{body}"
28
+ end
29
+
30
+ ## Testing
31
+
32
+ rspec
33
+
34
+ ## Contributing
35
+
36
+ 1. Fork it
37
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
38
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
39
+ 4. Push to the branch (`git push origin my-new-feature`)
40
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/lib/webhook.rb ADDED
@@ -0,0 +1,28 @@
1
+ require "webhook/version"
2
+ require 'net/http'
3
+
4
+ module Webhook
5
+ def self.post(url, form_fields={}, request_headers={})
6
+ headers = {
7
+ "User-Agent" => "Abletech WebHook/#{VERSION}"
8
+ }.merge(request_headers)
9
+
10
+ uri = URI.parse(url)
11
+ use_ssl = (uri.scheme.downcase == 'https')
12
+ req = Net::HTTP::Post.new(uri.path, headers)
13
+ req.form_data = form_fields
14
+
15
+ begin
16
+ http_session = Net::HTTP.new(uri.host, uri.port)
17
+ http_session.use_ssl = true if use_ssl
18
+
19
+ response = http_session.start { |http|
20
+ http.request(req)
21
+ }
22
+ rescue => e
23
+ raise "Unable to open stream: #{uri.to_s}; \n#{e.to_s}\n#{e.backtrace.join("\n")}"
24
+ end
25
+
26
+ return response.code, response.message, response.body
27
+ end
28
+ end
@@ -0,0 +1,3 @@
1
+ module Webhook
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,40 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://requestb.in/yadzsfya
6
+ body:
7
+ encoding: US-ASCII
8
+ string: time=to+go
9
+ headers:
10
+ User-Agent:
11
+ - Abletech WebHook/0.0.1
12
+ Referer:
13
+ - http://www.abletech.co.nz
14
+ Initiator:
15
+ - http://www.addressfinder.co.nz
16
+ Accept:
17
+ - ! '*/*'
18
+ Content-Type:
19
+ - application/x-www-form-urlencoded
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Content-Type:
26
+ - text/html; charset=utf-8
27
+ Date:
28
+ - Fri, 06 Apr 2012 03:44:10 GMT
29
+ Content-Length:
30
+ - '3'
31
+ Connection:
32
+ - Keep-Alive
33
+ body:
34
+ encoding: US-ASCII
35
+ string: ! 'ok
36
+
37
+ '
38
+ http_version:
39
+ recorded_at: Fri, 06 Apr 2012 03:44:10 GMT
40
+ recorded_with: VCR 2.0.1
@@ -0,0 +1,36 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://requestb.in/yadzsfya
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Abletech WebHook/0.0.1
12
+ Accept:
13
+ - ! '*/*'
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Content-Type:
22
+ - text/html; charset=utf-8
23
+ Date:
24
+ - Fri, 06 Apr 2012 03:37:32 GMT
25
+ Content-Length:
26
+ - '3'
27
+ Connection:
28
+ - Keep-Alive
29
+ body:
30
+ encoding: US-ASCII
31
+ string: ! 'ok
32
+
33
+ '
34
+ http_version:
35
+ recorded_at: Fri, 06 Apr 2012 03:37:32 GMT
36
+ recorded_with: VCR 2.0.1
@@ -0,0 +1,36 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://requestb.in/yadzsfya
6
+ body:
7
+ encoding: US-ASCII
8
+ string: name=Abletech
9
+ headers:
10
+ User-Agent:
11
+ - Abletech WebHook/0.0.1
12
+ Accept:
13
+ - ! '*/*'
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Content-Type:
22
+ - text/html; charset=utf-8
23
+ Date:
24
+ - Fri, 06 Apr 2012 03:37:31 GMT
25
+ Content-Length:
26
+ - '3'
27
+ Connection:
28
+ - Keep-Alive
29
+ body:
30
+ encoding: US-ASCII
31
+ string: ! 'ok
32
+
33
+ '
34
+ http_version:
35
+ recorded_at: Fri, 06 Apr 2012 03:37:31 GMT
36
+ recorded_with: VCR 2.0.1
@@ -0,0 +1,36 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://requestb.in/yadzsfya
6
+ body:
7
+ encoding: US-ASCII
8
+ string: time=to+go
9
+ headers:
10
+ User-Agent:
11
+ - VCR/Agent 1.0
12
+ Accept:
13
+ - ! '*/*'
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Content-Type:
22
+ - text/html; charset=utf-8
23
+ Date:
24
+ - Fri, 06 Apr 2012 04:04:10 GMT
25
+ Content-Length:
26
+ - '3'
27
+ Connection:
28
+ - Keep-Alive
29
+ body:
30
+ encoding: US-ASCII
31
+ string: ! 'ok
32
+
33
+ '
34
+ http_version:
35
+ recorded_at: Fri, 06 Apr 2012 04:04:11 GMT
36
+ recorded_with: VCR 2.0.1
@@ -0,0 +1,20 @@
1
+ require 'vcr'
2
+
3
+ # This file was generated by the `rspec --init` command. Conventionally, all
4
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
5
+ # Require this file using `require "spec_helper.rb"` to ensure that it is only
6
+ # loaded once.
7
+ #
8
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
9
+ VCR.configure do |c|
10
+ c.cassette_library_dir = 'spec/cassettes'
11
+ c.hook_into :webmock # or :fakeweb
12
+ c.default_cassette_options = { :record => :none }
13
+ end
14
+
15
+ RSpec.configure do |config|
16
+ config.extend VCR::RSpec::Macros
17
+ config.treat_symbols_as_metadata_keys_with_true_values = true
18
+ config.run_all_when_everything_filtered = true
19
+ config.filter_run :focus
20
+ end
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+ require 'webhook'
3
+
4
+ describe Webhook do
5
+ describe :post do
6
+ context 'with good params' do
7
+ use_vcr_cassette 'requestbin/simple_request'
8
+
9
+ it 'returns a simple 200 response' do
10
+ code, message, body = Webhook.post('http://requestb.in/yadzsfya', :name => 'Abletech')
11
+ code.should eq('200')
12
+ message.should eq("OK")
13
+ body.should match(/ok/)
14
+ end
15
+ end
16
+
17
+ context 'with no params' do
18
+ use_vcr_cassette 'requestbin/no_params'
19
+
20
+ it 'returns a simple 200 response' do
21
+ code, message, body = Webhook.post('http://requestb.in/yadzsfya')
22
+ code.should eq('200')
23
+ message.should eq("OK")
24
+ body.should match(/ok/)
25
+ end
26
+ end
27
+
28
+ context 'with two request headers' do
29
+ use_vcr_cassette 'requestbin/extra_headers'
30
+
31
+ it 'returns a simple 200 response' do
32
+ code, message, body = Webhook.post(
33
+ 'http://requestb.in/yadzsfya',
34
+ {
35
+ 'time' => 'to go'
36
+ },
37
+ {
38
+ 'Referer' => 'http://www.abletech.co.nz',
39
+ 'Initiator' => 'http://www.addressfinder.co.nz'
40
+ }
41
+ )
42
+
43
+ code.should eq('200')
44
+ message.should eq("OK")
45
+ body.should match(/ok/)
46
+ end
47
+ end
48
+
49
+ context 'with a new User-Agent header' do
50
+ use_vcr_cassette 'requestbin/user_agent'
51
+
52
+ it 'returns a simple 200 response' do
53
+ code, message, body = Webhook.post(
54
+ 'http://requestb.in/yadzsfya',
55
+ {
56
+ 'time' => 'to go'
57
+ },
58
+ {
59
+ 'User-Agent' => 'VCR/Agent 1.0'
60
+ }
61
+ )
62
+
63
+ code.should eq('200')
64
+ message.should eq("OK")
65
+ body.should match(/ok/)
66
+ end
67
+ end
68
+ end
69
+ end
data/webhook.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "webhook/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "webhook"
7
+ s.version = Webhook::VERSION
8
+ s.authors = ["Nigel Ramsay"]
9
+ s.email = ["nigel.ramsay@abletech.co.nz"]
10
+ s.homepage = ""
11
+ s.summary = %q{Execute webhook callbacks easily}
12
+ s.description = %q{Execute webhook callbacks easily}
13
+
14
+ s.rubyforge_project = "webhook"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency "rake"
23
+ s.add_development_dependency "rspec"
24
+ s.add_development_dependency "vcr"
25
+ s.add_development_dependency "webmock"
26
+ # s.add_runtime_dependency "rest-client"
27
+ end
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: webhook
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Nigel Ramsay
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &70332983852700 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70332983852700
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &70332983851960 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70332983851960
36
+ - !ruby/object:Gem::Dependency
37
+ name: vcr
38
+ requirement: &70332983851480 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70332983851480
47
+ - !ruby/object:Gem::Dependency
48
+ name: webmock
49
+ requirement: &70332983851060 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70332983851060
58
+ description: Execute webhook callbacks easily
59
+ email:
60
+ - nigel.ramsay@abletech.co.nz
61
+ executables: []
62
+ extensions: []
63
+ extra_rdoc_files: []
64
+ files:
65
+ - .gitignore
66
+ - .rspec
67
+ - Gemfile
68
+ - README.md
69
+ - Rakefile
70
+ - lib/webhook.rb
71
+ - lib/webhook/version.rb
72
+ - spec/cassettes/requestbin/extra_headers.yml
73
+ - spec/cassettes/requestbin/no_params.yml
74
+ - spec/cassettes/requestbin/simple_request.yml
75
+ - spec/cassettes/requestbin/user_agent.yml
76
+ - spec/spec_helper.rb
77
+ - spec/webhook_spec.rb
78
+ - webhook.gemspec
79
+ homepage: ''
80
+ licenses: []
81
+ post_install_message:
82
+ rdoc_options: []
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ segments:
92
+ - 0
93
+ hash: -3836839300880113512
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ segments:
101
+ - 0
102
+ hash: -3836839300880113512
103
+ requirements: []
104
+ rubyforge_project: webhook
105
+ rubygems_version: 1.8.11
106
+ signing_key:
107
+ specification_version: 3
108
+ summary: Execute webhook callbacks easily
109
+ test_files:
110
+ - spec/cassettes/requestbin/extra_headers.yml
111
+ - spec/cassettes/requestbin/no_params.yml
112
+ - spec/cassettes/requestbin/simple_request.yml
113
+ - spec/cassettes/requestbin/user_agent.yml
114
+ - spec/spec_helper.rb
115
+ - spec/webhook_spec.rb