webhook 0.0.2 → 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 32a93cff9850d21751f4eca676e3e57c69f7620c
4
+ data.tar.gz: 84f65543bf73073d0eaadd9621702ee60f20d845
5
+ SHA512:
6
+ metadata.gz: 50c96282c69021f9054d4545eaf3d3f95a86ee12c0df3ef9d89fa046cacd0d93cabf928bb7ea5d0393f57ff7d63ba50979d9729c7ba719503450980286ec7357
7
+ data.tar.gz: 8cc3a8f7f973411747cdfd3bbb35af6076f6395b1570d5dc4658b75ad5cc7199a431a160aa5b417c158988b3129f1e40e04a7d86f70978180e2daa94bb393a70
@@ -3,6 +3,7 @@ rvm:
3
3
  - 1.8.7
4
4
  - 1.9.2
5
5
  - 1.9.3
6
+ - 2.0.0
6
7
  - jruby-18mode
7
8
  - jruby-19mode
8
- - ree
9
+ - ree
data/README.md CHANGED
@@ -1,14 +1,17 @@
1
1
  # Webhook
2
2
 
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.
3
+ [![Code Climate](https://codeclimate.com/github/AbleTech/webhook.png)](https://codeclimate.com/github/AbleTech/webhook)
4
+ [![Build Status](https://secure.travis-ci.org/AbleTech/webhook.png)](http://travis-ci.org/AbleTech/webhook)
5
+
6
+ Client library for making webhook calls. Compatible with Ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0, REE, JRuby 1.8 and 1.9.
4
7
 
5
- There are no runtime dependencies.
8
+ There are no runtime dependencies.
6
9
 
7
10
  ## Installation
8
11
 
9
12
  Add this line to your application's Gemfile:
10
13
 
11
- gem 'webhook', '~> 0.0.1'
14
+ gem 'webhook', '~> 0.1.0'
12
15
 
13
16
  And then execute:
14
17
 
@@ -34,12 +37,10 @@ Or install it yourself as:
34
37
 
35
38
  rake spec
36
39
 
37
- [![Build Status](https://secure.travis-ci.org/AbleTech/webhook.png)](http://travis-ci.org/AbleTech/webhook)
38
-
39
40
  ## Contributing
40
41
 
41
42
  1. Fork it
42
43
  2. Create your feature branch (`git checkout -b my-new-feature`)
43
44
  3. Commit your changes (`git commit -am 'Added some feature'`)
44
45
  4. Push to the branch (`git push origin my-new-feature`)
45
- 5. Create new Pull Request
46
+ 5. Create new Pull Request
@@ -1,28 +1,54 @@
1
1
  require "webhook/version"
2
+ require "webhook/configuration"
2
3
  require 'net/http'
3
4
 
4
5
  module Webhook
5
- def self.post(url, form_fields={}, request_headers={}, proxy_settings={})
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::Proxy(proxy_settings[:host], proxy_settings[:port]).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")}"
6
+
7
+ class << self
8
+
9
+ # A Webhook configuration object. Must act like a hash and return sensible
10
+ # values for all Webhook configuration options.
11
+ # @see Webhook::Configuration.
12
+ attr_writer :configuration
13
+
14
+ # The configuration object.
15
+ # @see Webhook.configure
16
+ def configuration
17
+ @configuration ||= Configuration.new
18
+ end
19
+
20
+ # Call this method to modify defaults in your initializers.
21
+ #
22
+ # @example
23
+ # Webhook.configure do |config|
24
+ # config.user_agent = "Webhook"
25
+ # end
26
+ def configure
27
+ yield(configuration)
24
28
  end
25
29
 
26
- return response.code, response.message, response.body
30
+ def post(url, form_fields={}, request_headers={}, proxy_settings={})
31
+ headers = {
32
+ "User-Agent" => configuration.user_agent
33
+ }.merge(request_headers)
34
+
35
+ uri = URI.parse(url)
36
+ use_ssl = (uri.scheme.downcase == 'https')
37
+ req = Net::HTTP::Post.new(uri.path, headers)
38
+ req.form_data = form_fields
39
+
40
+ begin
41
+ http_session = Net::HTTP::Proxy(proxy_settings[:host], proxy_settings[:port]).new(uri.host, uri.port)
42
+ http_session.use_ssl = true if use_ssl
43
+
44
+ response = http_session.start { |http|
45
+ http.request(req)
46
+ }
47
+ rescue => e
48
+ raise "Unable to open stream: #{uri.to_s}; \n#{e.to_s}\n#{e.backtrace.join("\n")}"
49
+ end
50
+
51
+ return response.code, response.message, response.body
52
+ end
27
53
  end
28
54
  end
@@ -0,0 +1,33 @@
1
+ module Webhook
2
+ class Configuration
3
+ OPTIONS = [:user_agent]
4
+
5
+ attr_accessor :user_agent
6
+
7
+ def initialize
8
+ @user_agent = "Webhook"
9
+ end
10
+
11
+ # Allows config options to be read like a hash
12
+ #
13
+ # @param [Symbol] option Key for a given attribute
14
+ def [](option)
15
+ send(option)
16
+ end
17
+
18
+ # Returns a hash of all configurable options
19
+ def to_hash
20
+ OPTIONS.inject({}) do |hash, option|
21
+ hash[option.to_sym] = self.send(option)
22
+ hash
23
+ end
24
+ end
25
+
26
+ # Returns a hash of all configurable options merged with +hash+
27
+ #
28
+ # @param [Hash] hash A set of configuration options that will take precedence over the defaults
29
+ def merge(hash)
30
+ to_hash.merge(hash)
31
+ end
32
+ end
33
+ end
@@ -1,3 +1,3 @@
1
1
  module Webhook
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+ require 'webhook'
3
+
4
+ describe Webhook::Configuration do
5
+
6
+ it "provides default values" do
7
+ assert_config_default :user_agent, "Webhook"
8
+ end
9
+
10
+ it "allows values to be overwritten" do
11
+ assert_config_overridable :user_agent
12
+ end
13
+
14
+ it "acts like a hash" do
15
+ config = Webhook::Configuration.new
16
+ hash = config.to_hash
17
+ Webhook::Configuration::OPTIONS.each do |option|
18
+ config[option].should eq(hash[option])
19
+ end
20
+ end
21
+
22
+ it "is mergable" do
23
+ config = Webhook::Configuration.new
24
+ hash = config.to_hash
25
+ config.merge(:key => 'value').should eq(hash.merge(:key => 'value'))
26
+ end
27
+
28
+ it "gives a new instance if non defined" do
29
+ Webhook.configuration = nil
30
+ Webhook.configuration.should be_a_kind_of(Webhook::Configuration)
31
+ end
32
+
33
+ def assert_config_default(option, default_value, config = nil)
34
+ config ||= Webhook::Configuration.new
35
+ config.send(option).should eq(default_value)
36
+ end
37
+
38
+ def assert_config_overridable(option, value = 'a value')
39
+ config = Webhook::Configuration.new
40
+ config.send(:"#{option}=", value)
41
+ config.send(option).should eq(value)
42
+ end
43
+ end
metadata CHANGED
@@ -1,78 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webhook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nigel Ramsay
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-09-18 00:00:00.000000000 Z
11
+ date: 2013-06-14 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: vcr
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: fakeweb
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  description: Execute webhook callbacks easily
@@ -89,43 +80,38 @@ files:
89
80
  - README.md
90
81
  - Rakefile
91
82
  - lib/webhook.rb
83
+ - lib/webhook/configuration.rb
92
84
  - lib/webhook/version.rb
93
85
  - spec/cassettes/requestbin/extra_headers.yml
94
86
  - spec/cassettes/requestbin/no_params.yml
95
87
  - spec/cassettes/requestbin/simple_request.yml
96
88
  - spec/cassettes/requestbin/user_agent.yml
97
89
  - spec/spec_helper.rb
90
+ - spec/webhook/configuration_spec.rb
98
91
  - spec/webhook_spec.rb
99
92
  - webhook.gemspec
100
93
  homepage: ''
101
94
  licenses: []
95
+ metadata: {}
102
96
  post_install_message:
103
97
  rdoc_options: []
104
98
  require_paths:
105
99
  - lib
106
100
  required_ruby_version: !ruby/object:Gem::Requirement
107
- none: false
108
101
  requirements:
109
- - - ! '>='
102
+ - - '>='
110
103
  - !ruby/object:Gem::Version
111
104
  version: '0'
112
- segments:
113
- - 0
114
- hash: -687198169506099036
115
105
  required_rubygems_version: !ruby/object:Gem::Requirement
116
- none: false
117
106
  requirements:
118
- - - ! '>='
107
+ - - '>='
119
108
  - !ruby/object:Gem::Version
120
109
  version: '0'
121
- segments:
122
- - 0
123
- hash: -687198169506099036
124
110
  requirements: []
125
111
  rubyforge_project: webhook
126
- rubygems_version: 1.8.24
112
+ rubygems_version: 2.0.3
127
113
  signing_key:
128
- specification_version: 3
114
+ specification_version: 4
129
115
  summary: Execute webhook callbacks easily
130
116
  test_files:
131
117
  - spec/cassettes/requestbin/extra_headers.yml
@@ -133,4 +119,6 @@ test_files:
133
119
  - spec/cassettes/requestbin/simple_request.yml
134
120
  - spec/cassettes/requestbin/user_agent.yml
135
121
  - spec/spec_helper.rb
122
+ - spec/webhook/configuration_spec.rb
136
123
  - spec/webhook_spec.rb
124
+ has_rdoc: