Class: Intervention::Client

Inherits:
EventMachine::Connection
  • Object
show all
Defined in:
lib/intervention/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#parserObject (readonly)

Returns the value of attribute parser.



3
4
5
# File 'lib/intervention/client.rb', line 3

def parser
  @parser
end

#serverObject (readonly)

Returns the value of attribute server.



3
4
5
# File 'lib/intervention/client.rb', line 3

def server
  @server
end

Instance Method Details

#inspectObject



5
6
7
# File 'lib/intervention/client.rb', line 5

def inspect
  "#<Client:%s listen:%s>" % [(object_id << 1).to_s(16), Intervention.config.listen_port]
end

#on_message_complete(parser) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/intervention/client.rb', line 18

def on_message_complete parser
  callback :request

  if Intervention.requests_to_block.include?(@parser.path)
    self.close_connection
    Intervention.clients.delete self
    return
  end

  host = @parser.headers['host'][/([^\:]*)(?:\:|$)/,1]
  port = (@parser.headers['host'][/(?:\:)(\d+)/,1] || 80)

  @server = EventMachine.connect host, port, Intervention::Server, client: self

  @server.send_data @parser.raw_data
  Intervention.clients.delete self
end

#post_initObject



9
10
11
12
# File 'lib/intervention/client.rb', line 9

def post_init
  Intervention.clients << self
  @parser = Segregate.new(self, debug: true)
end

#receive_data(data) ⇒ Object



14
15
16
# File 'lib/intervention/client.rb', line 14

def receive_data data
  @parser.parse_data data
end

#unbindObject



36
37
38
39
# File 'lib/intervention/client.rb', line 36

def unbind
  @server.close_connection_after_writing if @server
  self.close_connection
end