em-net-http 0.1.0 → 0.1.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/Gemfile +5 -1
- data/Rakefile +3 -0
- data/VERSION +1 -1
- data/em-net-http.gemspec +8 -1
- data/lib/em-net-http.rb +37 -10
- data/lib/test.rb +2 -3
- data/lib/test_weary.rb +44 -0
- metadata +29 -2
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -11,6 +11,9 @@ begin
|
|
11
11
|
gem.homepage = "http://github.com/jfairbairn/em-net-http"
|
12
12
|
gem.authors = ["James Fairbairn"]
|
13
13
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
|
+
gem.add_development_dependency "weary"
|
15
|
+
gem.add_development_dependency "right_aws"
|
16
|
+
|
14
17
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
15
18
|
end
|
16
19
|
Jeweler::GemcutterTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/em-net-http.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{em-net-http}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["James Fairbairn"]
|
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
"em-net-http.gemspec",
|
28
28
|
"lib/em-net-http.rb",
|
29
29
|
"lib/test.rb",
|
30
|
+
"lib/test_weary.rb",
|
30
31
|
"spec/em-net-http_spec.rb",
|
31
32
|
"spec/spec.opts",
|
32
33
|
"spec/spec_helper.rb"
|
@@ -47,11 +48,17 @@ Gem::Specification.new do |s|
|
|
47
48
|
|
48
49
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
50
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
51
|
+
s.add_development_dependency(%q<weary>, [">= 0"])
|
52
|
+
s.add_development_dependency(%q<right_aws>, [">= 0"])
|
50
53
|
else
|
51
54
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
55
|
+
s.add_dependency(%q<weary>, [">= 0"])
|
56
|
+
s.add_dependency(%q<right_aws>, [">= 0"])
|
52
57
|
end
|
53
58
|
else
|
54
59
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
60
|
+
s.add_dependency(%q<weary>, [">= 0"])
|
61
|
+
s.add_dependency(%q<right_aws>, [">= 0"])
|
55
62
|
end
|
56
63
|
end
|
57
64
|
|
data/lib/em-net-http.rb
CHANGED
@@ -6,19 +6,21 @@ require 'fiber'
|
|
6
6
|
|
7
7
|
module EventMachine
|
8
8
|
class NetHTTPResponse
|
9
|
-
|
10
|
-
|
11
|
-
@header.each(&blk)
|
12
|
-
end
|
13
|
-
|
14
|
-
attr_reader :code, :body, :header
|
9
|
+
attr_reader :code, :body, :header, :message, :http_version
|
10
|
+
alias_method :msg, :message
|
15
11
|
|
16
12
|
def initialize(res)
|
17
|
-
@code = res.response_header.
|
13
|
+
@code = res.response_header.http_status
|
14
|
+
@message = res.response_header.http_reason
|
15
|
+
@http_version = res.response_header.http_version
|
18
16
|
@header = res.response_header
|
19
17
|
@body = res.response
|
20
18
|
end
|
21
19
|
|
20
|
+
def content_type
|
21
|
+
self['content-type']
|
22
|
+
end
|
23
|
+
|
22
24
|
def [](k)
|
23
25
|
@header[key(k)]
|
24
26
|
end
|
@@ -31,11 +33,28 @@ module EventMachine
|
|
31
33
|
@body
|
32
34
|
end
|
33
35
|
|
36
|
+
def to_hash
|
37
|
+
h={}
|
38
|
+
@header.each do |k, v|
|
39
|
+
h[fromkey(k)] = v
|
40
|
+
end
|
41
|
+
h
|
42
|
+
end
|
43
|
+
|
34
44
|
private
|
35
45
|
def key(k)
|
36
46
|
k.upcase.tr('-','_')
|
37
47
|
end
|
38
48
|
|
49
|
+
def fromkey(k)
|
50
|
+
k.tr('_', '-').split('-').map{|i|i.capitalize}.join('-')
|
51
|
+
end
|
52
|
+
|
53
|
+
include Enumerable
|
54
|
+
def each(&blk)
|
55
|
+
@header.each(&blk)
|
56
|
+
end
|
57
|
+
|
39
58
|
end
|
40
59
|
end
|
41
60
|
|
@@ -43,10 +62,18 @@ end
|
|
43
62
|
module Net
|
44
63
|
class HTTP
|
45
64
|
def request(req, body = nil, &block)
|
46
|
-
uri = Addressable::URI.parse("#{use_ssl? ? 'https://' : 'http://'}#{addr_port}#{req.path}")
|
47
|
-
req = EM::HttpRequest.new(uri).send(req.class::METHOD.downcase.to_sym)
|
48
65
|
f=Fiber.current
|
49
|
-
|
66
|
+
uri = Addressable::URI.parse("#{use_ssl? ? 'https://' : 'http://'}#{addr_port}#{req.path}")
|
67
|
+
opts = body.nil? ? {} : {:body => body}
|
68
|
+
if use_ssl?
|
69
|
+
sslopts = opts[:ssl] = {}
|
70
|
+
sslopts[:verify_peer] = verify_mode == OpenSSL::SSL::VERIFY_PEER
|
71
|
+
sslopts[:private_key_file] = key if key
|
72
|
+
sslopts[:cert_chain_file] = ca_file if ca_file
|
73
|
+
end
|
74
|
+
httpreq = EM::HttpRequest.new(uri).send(req.class::METHOD.downcase.to_sym, opts)
|
75
|
+
httpreq.callback {|res|f.resume(EM::NetHTTPResponse.new(res))}
|
76
|
+
httpreq.errback {|res|f.resume(EM::NetHTTPResponse.new(res))}
|
50
77
|
res = Fiber.yield
|
51
78
|
yield res if block_given?
|
52
79
|
res
|
data/lib/test.rb
CHANGED
@@ -3,10 +3,9 @@ require File.dirname(__FILE__) + '/em-net-http'
|
|
3
3
|
|
4
4
|
EM.run do
|
5
5
|
Fiber.new do
|
6
|
-
|
7
|
-
http.start do |http|
|
6
|
+
Net::HTTP.start('encrypted.google.com', :use_ssl=>true, :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|
|
8
7
|
res = http.get('/search?q=james')
|
9
|
-
|
8
|
+
puts res.body
|
10
9
|
end
|
11
10
|
EM.stop_event_loop
|
12
11
|
end.resume
|
data/lib/test_weary.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
$: << '.'
|
2
|
+
require File.dirname(__FILE__) + '/em-net-http'
|
3
|
+
require 'weary'
|
4
|
+
|
5
|
+
module Weary
|
6
|
+
class Response
|
7
|
+
def content_type ; @content_type.split(';').first ; end
|
8
|
+
|
9
|
+
def value ; self ; end
|
10
|
+
end
|
11
|
+
|
12
|
+
class Request
|
13
|
+
def perform!(&block)
|
14
|
+
@on_complete = block if block_given?
|
15
|
+
before_send.call(self) if before_send
|
16
|
+
req = http.request(request)
|
17
|
+
response = Response.new(req, self)
|
18
|
+
if response.redirected? && follows?
|
19
|
+
response.follow_redirect
|
20
|
+
else
|
21
|
+
on_complete.call(response) if on_complete
|
22
|
+
response
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
EM.run do
|
29
|
+
Fiber.new do
|
30
|
+
class TwitterUser < Weary::Base
|
31
|
+
domain "http://twitter.com/users/"
|
32
|
+
|
33
|
+
get "show" do |resource|
|
34
|
+
resource.with = [:id, :user_id, :screen_name]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
user = TwitterUser.new
|
39
|
+
me = user.show(:id => "jfairbairn").perform
|
40
|
+
puts me['status']['text']
|
41
|
+
|
42
|
+
EM.stop_event_loop
|
43
|
+
end.resume
|
44
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- James Fairbairn
|
@@ -32,6 +32,32 @@ dependencies:
|
|
32
32
|
version: 1.2.9
|
33
33
|
type: :development
|
34
34
|
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: weary
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: right_aws
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
segments:
|
57
|
+
- 0
|
58
|
+
version: "0"
|
59
|
+
type: :development
|
60
|
+
version_requirements: *id003
|
35
61
|
description: Monkeypatching Net::HTTP to use em-http-request under the hood.
|
36
62
|
email: james@netlagoon.com
|
37
63
|
executables: []
|
@@ -52,6 +78,7 @@ files:
|
|
52
78
|
- em-net-http.gemspec
|
53
79
|
- lib/em-net-http.rb
|
54
80
|
- lib/test.rb
|
81
|
+
- lib/test_weary.rb
|
55
82
|
- spec/em-net-http_spec.rb
|
56
83
|
- spec/spec.opts
|
57
84
|
- spec/spec_helper.rb
|