ethon 0.5.9 → 0.5.10

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/CHANGELOG.md CHANGED
@@ -2,11 +2,26 @@
2
2
 
3
3
  ## Master
4
4
 
5
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.5.8...master)
5
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.5.10...master)
6
+
7
+ ## 0.5.10
8
+
9
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.5.9...v0.5.10)
10
+
11
+ Enhancements:
12
+
13
+ * Allow custom requests.
14
+ ([nate](https://github.com/nate), [\#36](https://github.com/typhoeus/ethon/pull/36))
15
+ * Use updated version of FFI.
16
+
17
+ Bugfixes:
18
+
19
+ * Fix windows install issue.
20
+ ([brainsucker](https://github.com/brainsucker), [\#38](https://github.com/typhoeus/ethon/pull/38))
6
21
 
7
22
  ## 0.5.9
8
23
 
9
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.5.8...v0.5.9)
24
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.5.8...v0.5.9)
10
25
 
11
26
  Enhancements:
12
27
 
@@ -14,7 +29,7 @@ Enhancements:
14
29
 
15
30
  ## 0.5.8
16
31
 
17
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.5.7...v0.5.8)
32
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.5.7...v0.5.8)
18
33
 
19
34
  Enhancements:
20
35
 
@@ -24,7 +39,7 @@ Enhancements:
24
39
 
25
40
  ## 0.5.7
26
41
 
27
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.5.6...v0.5.7)
42
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.5.6...v0.5.7)
28
43
 
29
44
  Enhancements:
30
45
 
@@ -32,7 +47,7 @@ Enhancements:
32
47
 
33
48
  ## 0.5.6
34
49
 
35
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.5.4...v0.5.6)
50
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.5.4...v0.5.6)
36
51
 
37
52
  Bugfixes:
38
53
 
@@ -40,7 +55,7 @@ Bugfixes:
40
55
 
41
56
  ## 0.5.4
42
57
 
43
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.5.3...v0.5.4)
58
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.5.3...v0.5.4)
44
59
 
45
60
  Enhancements:
46
61
 
@@ -50,7 +65,7 @@ Enhancements:
50
65
 
51
66
  ## 0.5.3
52
67
 
53
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.5.2...v0.5.3)
68
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.5.2...v0.5.3)
54
69
 
55
70
  Enhancements:
56
71
 
@@ -65,7 +80,7 @@ Bugfixes:
65
80
 
66
81
  ## 0.5.2
67
82
 
68
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.5.1...v0.5.2)
83
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.5.1...v0.5.2)
69
84
 
70
85
  Enhancements:
71
86
 
@@ -78,7 +93,7 @@ Bugfixes:
78
93
 
79
94
  ## 0.5.1
80
95
 
81
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.5.0...v0.5.1)
96
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.5.0...v0.5.1)
82
97
 
83
98
  Bugfixes:
84
99
 
@@ -87,7 +102,7 @@ Bugfixes:
87
102
 
88
103
  ## 0.5.0
89
104
 
90
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.4.4...v0.5.0)
105
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.4.4...v0.5.0)
91
106
 
92
107
  Enhancements:
93
108
 
@@ -101,7 +116,7 @@ Bugfixes:
101
116
 
102
117
  ## 0.4.4
103
118
 
104
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.4.3...v0.4.4)
119
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.4.3...v0.4.4)
105
120
 
106
121
  Enhancements:
107
122
 
@@ -109,7 +124,7 @@ Enhancements:
109
124
 
110
125
  ## 0.4.3
111
126
 
112
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.4.2...v0.4.3)
127
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.4.2...v0.4.3)
113
128
 
114
129
  Enhancements:
115
130
 
@@ -124,7 +139,7 @@ Bugfixes:
124
139
 
125
140
  ## 0.4.2
126
141
 
127
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.4.1...v0.4.2)
142
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.4.1...v0.4.2)
128
143
 
129
144
  Enhancements:
130
145
 
@@ -133,7 +148,7 @@ Enhancements:
133
148
 
134
149
  ## 0.4.1
135
150
 
136
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.4.0...v0.4.1)
151
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.4.0...v0.4.1)
137
152
 
138
153
  Bugfixes:
139
154
 
@@ -142,7 +157,7 @@ Bugfixes:
142
157
 
143
158
  ## 0.4.0
144
159
 
145
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.3.0...v0.4.0)
160
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.3.0...v0.4.0)
146
161
 
147
162
  Enhancements:
148
163
 
@@ -157,7 +172,7 @@ Bugfixes:
157
172
 
158
173
  ## 0.3.0
159
174
 
160
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.2.0...v0.3.0)
175
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.2.0...v0.3.0)
161
176
 
162
177
  Enhancements:
163
178
 
@@ -170,7 +185,7 @@ Bugfixes:
170
185
 
171
186
  ## 0.2.0
172
187
 
173
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.1.0...v0.2.0)
188
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.1.0...v0.2.0)
174
189
 
175
190
  Enhancements:
176
191
 
@@ -182,7 +197,7 @@ Enhancements:
182
197
 
183
198
  ## 0.1.0
184
199
 
185
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.0.2...v0.1.0)
200
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.0.2...v0.1.0)
186
201
 
187
202
  Enhancements:
188
203
 
@@ -198,7 +213,7 @@ Bugfixes:
198
213
 
199
214
  ## 0.0.2
200
215
 
201
- [Full Changelog](http://github.com/typhoeus/ethon/compare/v0.0.1...v0.0.2)
216
+ [Full Changelog](https://github.com/typhoeus/ethon/compare/v0.0.1...v0.0.2)
202
217
 
203
218
  Bugfixes:
204
219
 
data/lib/ethon/curl.rb CHANGED
@@ -28,18 +28,22 @@ module Ethon
28
28
  extend Ethon::Curls::Messages
29
29
  extend Ethon::Curls::Protocols
30
30
 
31
+ # :nodoc:
32
+ def self.windows?
33
+ !(RbConfig::CONFIG['host_os'] !~ /mingw|mswin|bccwin/)
34
+ end
31
35
 
32
- require 'ethon/curls/constants'
33
- require 'ethon/curls/settings'
34
- require 'ethon/curls/classes'
35
- extend Ethon::Curls::Functions
36
-
37
- if windows?
36
+ if Curl.windows?
38
37
  ffi_lib 'ws2_32'
39
38
  else
40
39
  ffi_lib ::FFI::Library::LIBC
41
40
  end
42
41
 
42
+ require 'ethon/curls/constants'
43
+ require 'ethon/curls/settings'
44
+ require 'ethon/curls/classes'
45
+ extend Ethon::Curls::Functions
46
+
43
47
  @blocking = true
44
48
 
45
49
  @@initialized = false
@@ -10,11 +10,6 @@ module Ethon
10
10
  layout :code, :msg_code, :easy_handle, :pointer, :data, MsgData
11
11
  end
12
12
 
13
- # :nodoc:
14
- def Curl.windows?
15
- !(RbConfig::CONFIG['host_os'] !~ /mingw|mswin|bccwin/)
16
- end
17
-
18
13
  # :nodoc:
19
14
  class FDSet < ::FFI::Struct
20
15
  if Curl.windows?
@@ -49,6 +49,7 @@ module Ethon
49
49
  base.attach_function :slist_append, :curl_slist_append, [:pointer, :string], :pointer
50
50
  base.attach_function :slist_free_all, :curl_slist_free_all, [:pointer], :void
51
51
  base.instance_variable_set(:@blocking, true)
52
+
52
53
  base.attach_function :select, [:int, Curl::FDSet.ptr, Curl::FDSet.ptr, Curl::FDSet.ptr, Curl::Timeval.ptr], :int
53
54
  end
54
55
  end
@@ -6,6 +6,7 @@ require 'ethon/easy/http/put'
6
6
  require 'ethon/easy/http/delete'
7
7
  require 'ethon/easy/http/patch'
8
8
  require 'ethon/easy/http/options'
9
+ require 'ethon/easy/http/custom'
9
10
 
10
11
  module Ethon
11
12
  class Easy
@@ -35,7 +36,7 @@ module Ethon
35
36
  #
36
37
  # @see Ethon::Easy::Options
37
38
  def http_request(url, action_name, options = {})
38
- fabricate(action_name).new(url, options).setup(self)
39
+ fabricate(url, action_name, options).setup(self)
39
40
  end
40
41
 
41
42
  private
@@ -44,13 +45,23 @@ module Ethon
44
45
  #
45
46
  # @example Return the action.
46
47
  # Action.fabricate(:get)
48
+ # Action.fabricate(:smash)
47
49
  #
48
- # @param [ String ] action_name The action name.
50
+ # @param [ String ] url The url.
51
+ # @param [ String ] action_name The http action name.
52
+ # @param [ Hash ] options The option hash.
49
53
  #
50
- # @return [ Class ] The action class.
51
- def fabricate(action_name)
52
- Ethon::Easy::Http.const_get(action_name.to_s.capitalize)
54
+ # @return [ Easy::Ethon::Actionable ] The request instance.
55
+ def fabricate(url, action_name, options)
56
+ constant_name = action_name.to_s.capitalize
57
+
58
+ if Ethon::Easy::Http.const_defined?(constant_name)
59
+ Ethon::Easy::Http.const_get(constant_name).new(url, options)
60
+ else
61
+ Ethon::Easy::Http::Custom.new(constant_name.upcase, url, options)
62
+ end
53
63
  end
64
+
54
65
  end
55
66
  end
56
67
  end
@@ -0,0 +1,28 @@
1
+ module Ethon
2
+ class Easy
3
+ module Http
4
+
5
+ # This class knows everything about making requests for custom HTTP verbs.
6
+ class Custom
7
+ include Ethon::Easy::Http::Actionable
8
+ include Ethon::Easy::Http::Postable
9
+
10
+ def initialize(verb, url, options)
11
+ @verb = verb
12
+ super(url, options)
13
+ end
14
+
15
+ # Setup easy to make a request.
16
+ #
17
+ # @example Setup.
18
+ # custom.set_params(easy)
19
+ #
20
+ # @param [ Easy ] easy The easy to setup.
21
+ def setup(easy)
22
+ super
23
+ easy.customrequest = @verb
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
data/lib/ethon/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Ethon
2
2
 
3
3
  # Ethon version.
4
- VERSION = '0.5.9'
4
+ VERSION = '0.5.10'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ethon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.9
4
+ version: 0.5.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-11 00:00:00.000000000 Z
12
+ date: 2013-03-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 1.2.0
21
+ version: 1.3.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 1.2.0
29
+ version: 1.3.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: mime-types
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -69,6 +69,7 @@ files:
69
69
  - lib/ethon/easy/form.rb
70
70
  - lib/ethon/easy/header.rb
71
71
  - lib/ethon/easy/http/actionable.rb
72
+ - lib/ethon/easy/http/custom.rb
72
73
  - lib/ethon/easy/http/delete.rb
73
74
  - lib/ethon/easy/http/get.rb
74
75
  - lib/ethon/easy/http/head.rb
@@ -124,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
124
125
  version: '0'
125
126
  segments:
126
127
  - 0
127
- hash: 1438762772824718681
128
+ hash: -82910396977477483
128
129
  required_rubygems_version: !ruby/object:Gem::Requirement
129
130
  none: false
130
131
  requirements: