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
269 270 271 |
# File 'lib/mournmail/utils.rb', line 269 def initialize @servers = Socket.tcp_server_sockets("127.0.0.1", 0) end |
Instance Method Details
#port ⇒ Object
273 274 275 |
# File 'lib/mournmail/utils.rb', line 273 def port @servers.first.local_address.ip_port end |
#receive_code ⇒ Object
277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 |
# File 'lib/mournmail/utils.rb', line 277 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 |