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 CHANGED
@@ -1,4 +1,8 @@
1
1
  source :rubygems
2
2
 
3
3
  gem 'em-http-request'
4
- gem 'right_aws'
4
+ group :development do
5
+ gem 'rspec', '>= 1.2.9'
6
+ gem 'weary'
7
+ gem 'right_aws'
8
+ end
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.0
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.0"
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
- include Enumerable
10
- def each(&blk)
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.status.to_s
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
- req.callback {|res|f.resume(EM::NetHTTPResponse.new(res))}
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
- http = Net::HTTP.new('www.google.com')
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
- p res['transfer-encoding']
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
- - 0
9
- version: 0.1.0
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