Class: Pakyow::Processes::Proxy

Inherits:
Object
  • Object
show all
Defined in:
lib/pakyow/processes/proxy.rb

Defined Under Namespace

Classes: Server

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host:, port:, proxy_port:) ⇒ Proxy

Returns a new instance of Proxy.



15
16
17
# File 'lib/pakyow/processes/proxy.rb', line 15

def initialize(host:, port:, proxy_port:)
  @host, @port, @proxy_port = host, port, proxy_port
end

Class Method Details

.find_local_portObject



7
8
9
10
11
12
# File 'lib/pakyow/processes/proxy.rb', line 7

def find_local_port
  server = TCPServer.new("127.0.0.1", 0)
  port = server.addr[1]
  server.close
  port
end

Instance Method Details

#runObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/pakyow/processes/proxy.rb', line 19

def run
  endpoint = Async::HTTP::Endpoint.parse(
    "http://#{@host}:#{@port}"
  )

  server = Server.new(
    host: @host, port: @proxy_port, forwarded: "#{@host}:#{@port}"
  )

  Async::Reactor.run do
    Async::HTTP::Server.new(server, endpoint).run

    if !ENV.key?("PW_RESPAWN")
      Pakyow.logger << Pakyow::Processes::Server.running_text(
        scheme: "http", host: @host, port: @port
      )
    end
  end
end