Class: Legion::Auth::OauthCallback

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/auth/oauth_callback.rb

Constant Summary collapse

DEFAULT_TIMEOUT =
120
LOCALHOST =
'127.0.0.1'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(timeout: DEFAULT_TIMEOUT) ⇒ OauthCallback

Returns a new instance of OauthCallback.



15
16
17
18
19
20
# File 'lib/legion/auth/oauth_callback.rb', line 15

def initialize(timeout: DEFAULT_TIMEOUT)
  @timeout  = timeout
  @server   = TCPServer.new(LOCALHOST, 0)
  @port     = @server.addr[1]
  @redirect_uri = "http://#{LOCALHOST}:#{@port}/callback"
end

Instance Attribute Details

#portObject (readonly)

Returns the value of attribute port.



13
14
15
# File 'lib/legion/auth/oauth_callback.rb', line 13

def port
  @port
end

#redirect_uriObject (readonly)

Returns the value of attribute redirect_uri.



13
14
15
# File 'lib/legion/auth/oauth_callback.rb', line 13

def redirect_uri
  @redirect_uri
end

Instance Method Details

#closeObject



32
33
34
# File 'lib/legion/auth/oauth_callback.rb', line 32

def close
  @server.close rescue nil # rubocop:disable Style/RescueModifier
end

#wait_for_callbackObject



22
23
24
25
26
27
28
29
30
# File 'lib/legion/auth/oauth_callback.rb', line 22

def wait_for_callback
  Timeout.timeout(@timeout) do
    client = @server.accept
    request_line = client.gets
    parse_callback(request_line, client)
  end
ensure
  @server.close rescue nil # rubocop:disable Style/RescueModifier
end