Class: Mournmail::GoogleAuthCallbackServer
- Inherits:
-
Object
- Object
- Mournmail::GoogleAuthCallbackServer
- Defined in:
- lib/mournmail/utils.rb
Instance Method Summary collapse
-
#initialize ⇒ GoogleAuthCallbackServer
constructor
A new instance of GoogleAuthCallbackServer.
- #port ⇒ Object
- #receive_code ⇒ Object
Constructor Details
#initialize ⇒ GoogleAuthCallbackServer
Returns a new instance of GoogleAuthCallbackServer.
230 231 232 |
# File 'lib/mournmail/utils.rb', line 230 def initialize @servers = Socket.tcp_server_sockets("127.0.0.1", 0) end |
Instance Method Details
#port ⇒ Object
234 235 236 |
# File 'lib/mournmail/utils.rb', line 234 def port @servers.first.local_address.ip_port end |
#receive_code ⇒ Object
238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 |
# File 'lib/mournmail/utils.rb', line 238 def receive_code Socket.accept_loop(@servers) do |sock, addr| line = sock.gets query_string = line.slice(%r'\AGET [^?]*\?(.*) HTTP/1.1\r\n', 1) params = CGI.parse(query_string) code = params["code"][0] while line = sock.gets break if line == "\r\n" end sock.print("HTTP/1.1 200 OK\r\n") sock.print("Content-Type: text/plain\r\n") sock.print("\r\n") if code sock.print("Authenticated!") else sock.print("Authentication failed!") end return code ensure sock.close end ensure @servers.each(&:close) end |