minhttp 0.0.3 → 0.0.5

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/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.