minhttp 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -14,7 +14,7 @@ Example:
14
14
  HTTP
15
15
 
16
16
  EventMachine::run do
17
- Http::Min.connect("www.yahoo.com", data) do |raw_response, parsed_response|
17
+ Http::Min.connect("www.google.com", data) do |raw_response, parsed_response|
18
18
  puts "Received #{parsed_response.status_code} status from Google"
19
19
  puts "First 100 characters of raw HTTP response:"
20
20
  puts raw_response[0..100]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.5
@@ -0,0 +1,22 @@
1
+ require_relative '../lib/minhttp'
2
+ require 'em-synchrony'
3
+
4
+ data = <<-HTTP
5
+ GET / HTTP/1.0\r
6
+ Host: www.google.com\r
7
+
8
+ HTTP
9
+
10
+ raw_response, parsed_response = [nil, nil]
11
+ EM.synchrony do
12
+ f = Fiber.current
13
+ Http::Min.connect("www.google.com", data) do |raw_response, parsed_response|
14
+ f.resume([raw_response, parsed_response])
15
+ end
16
+ raw_response, parsed_response = Fiber.yield
17
+ EventMachine.stop
18
+ end
19
+
20
+ puts "Received #{parsed_response.status_code} status from Google"
21
+ puts "First 100 characters of raw HTTP response:"
22
+ puts raw_response[0..100]
@@ -0,0 +1,20 @@
1
+ require_relative '../lib/minhttp'
2
+ require 'em-synchrony'
3
+
4
+ data = <<-HTTP
5
+ GET / HTTP/1.0\r
6
+ Host: www.google.com\r
7
+
8
+ HTTP
9
+
10
+ EventMachine::run do
11
+ Http::Min.connect("www.google.com", data) do |raw_response, parsed_response|
12
+ puts "Received #{parsed_response.status_code} status from Google"
13
+ puts "First 100 characters of raw HTTP response:"
14
+ puts raw_response[0..100]
15
+ # EM::stop
16
+ Fiber.yield
17
+ end
18
+ end
19
+
20
+ fiber.resume
data/lib/minhttp.rb CHANGED
@@ -45,6 +45,11 @@ module Http
45
45
  begin
46
46
  @@connections += 1
47
47
  @parser = Http::Parser.new
48
+ @headers_complete = false
49
+ @parser.on_headers_complete = proc do
50
+ @headers_complete = true
51
+ :stop
52
+ end
48
53
  @response_data = ""
49
54
  rescue Exception => e
50
55
  @@logger.error("Error in post_init: #{e}")
@@ -57,14 +62,15 @@ module Http
57
62
  start_tls(:verify_peer => true) if @ssl
58
63
  send_data @request_data
59
64
  rescue Exception => e
60
- puts "Error in connection_completed: #{e}"
65
+ @@logger.error "Error in connection_completed: #{e}"
66
+ raise e
61
67
  end
62
68
  end
63
69
 
64
70
  def receive_data(data)
65
71
  @response_data << data
66
72
  begin
67
- @parser << data
73
+ @parser << data unless @headers_complete
68
74
  rescue HTTP::Parser::Error => e
69
75
  @@logger.warn "Failed to parse: #{data}"
70
76
  raise e
data/lib/minparser.rb~ ADDED
@@ -0,0 +1,20 @@
1
+ require 'http/parser'
2
+ require 'eventmachine'
3
+ require 'logger'
4
+ require_relative "ssl_validator"
5
+
6
+ #
7
+ # The minimal HTTP client
8
+ # Sends a raw http request (bytes)
9
+ # Parses the response and provides both the parsed and the raw response
10
+ # Supports ssl
11
+ #
12
+ module Http
13
+ class MinParser
14
+
15
+
16
+ parser = Http::Parser.new
17
+ parser.on_headers_complete = proc{ :stop }
18
+
19
+ offset = parser << request_data
20
+ body = request_data[offset..-1]
data/lib/rawparser.rb~ ADDED
@@ -0,0 +1,23 @@
1
+ require 'http/parser'
2
+ require 'eventmachine'
3
+ require 'logger'
4
+ require_relative "ssl_validator"
5
+
6
+ #
7
+ # The minimal HTTP parser
8
+ # Simple wrapper around http_parser.rb that supplies access to the raw
9
+ #
10
+ module Http
11
+ class RawParser
12
+ def initialize
13
+
14
+ end
15
+
16
+ def <<
17
+
18
+
19
+ parser = Http::Parser.new
20
+ parser.on_headers_complete = proc{ :stop }
21
+
22
+ offset = parser << request_data
23
+ body = request_data[offset..-1]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minhttp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-05-10 00:00:00.000000000Z
12
+ date: 2011-05-23 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: http_parser.rb
16
- requirement: &14564580 !ruby/object:Gem::Requirement
16
+ requirement: &7850840 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *14564580
24
+ version_requirements: *7850840
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: eventmachine
27
- requirement: &14563700 !ruby/object:Gem::Requirement
27
+ requirement: &7850200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *14563700
35
+ version_requirements: *7850200
36
36
  description: MinHTTP allows one to send and receive raw HTTP requests. It's a very
37
37
  thin wrapper around EventMachine's connect method with some SSL validation added.
38
38
  email:
@@ -46,9 +46,13 @@ files:
46
46
  - Gemfile
47
47
  - Rakefile
48
48
  - cacert.pem
49
+ - examples/synchronous_example.rb
50
+ - examples/synchronous_example.rb~
49
51
  - examples/readme_example.rb
50
52
  - lib/ssl_validator.rb
53
+ - lib/minparser.rb~
51
54
  - lib/minhttp.rb
55
+ - lib/rawparser.rb~
52
56
  - test/simple_test.rb~
53
57
  - test/simple_test.rb
54
58
  homepage: http://github.com/ahfarmer/minhttp
@@ -71,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
75
  version: '0'
72
76
  requirements: []
73
77
  rubyforge_project: minhttp
74
- rubygems_version: 1.8.1
78
+ rubygems_version: 1.8.3
75
79
  signing_key:
76
80
  specification_version: 3
77
81
  summary: An HTTP library for the minimalist.