Changeset 153

Show
Ignore:
Timestamp:
05/26/06 22:21:54 (2 years ago)
Author:
blackhedd
Message:

partial HTTP parser for protocol experiments

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • experiments/machine/test/pro.rb

    r150 r153  
    1414    add_handler :read, self, :parse_lines 
    1515    add_handler :read_line, self, :parse_headers 
    16     @headers = {} 
     16    add_handler :http_request, self, :handle_http 
     17    @http_request = "" 
     18    @http_headers = {} 
    1719  end 
    1820 
     
    3133 
    3234  def parse_headers evt 
    33     puts "LINE: #{evt.data}" 
     35    if evt.data.length == 0 
     36      if @http_headers.length > 0 or @http_request.length > 0 
     37        os = OpenStruct.new 
     38        os.request = @http_request 
     39        os.headers = @http_headers 
     40        send_event DataEvent.new( :http_request, os ) 
     41 
     42        @http_request = "" 
     43        @http_headers = {} 
     44      else 
     45        p "discarding leading blank" 
     46      end 
     47    else 
     48      if evt.data =~ /([^:]+):[\s]*/ 
     49        @http_headers[$1] ||= [] 
     50        @http_headers[$1] << $' 
     51      else 
     52        @http_request = evt.data 
     53      end 
     54    end 
     55  end 
     56 
     57  def handle_http evt 
     58    puts evt.data 
     59    send_data "HTTP/1.0 200 ...\r\nContent-type: text/plain\r\nContent-length: 7\r\nConnection: close\r\n\r\nNothing" 
     60    send_close_after_writing 
    3461  end 
    3562