37 lines
1012 B
Julia
37 lines
1012 B
Julia
|
import Base.get
|
||
|
function get(request::Request)
|
||
|
ctx = OpenSSL.SSLContext(mode = OpenSSL.ClientMode)
|
||
|
io = Sockets.connect(request.host, request.port)
|
||
|
|
||
|
client = SSLClient(ctx, io)
|
||
|
isreadable(io)
|
||
|
|
||
|
status = OpenSSL.do_ssl_handshake(client)
|
||
|
|
||
|
while true
|
||
|
if isreadable(io) && length(client.write_buf) == 0
|
||
|
# verbose && println("do_read")
|
||
|
if OpenSSL.do_sock_read(client) == -1
|
||
|
break
|
||
|
end
|
||
|
end
|
||
|
if iswritable(io) && length(client.write_buf) > 0
|
||
|
# verbose && println("do_write")
|
||
|
if OpenSSL.do_sock_write(client) == -1
|
||
|
break
|
||
|
end
|
||
|
end
|
||
|
# verbose && println("end loop")
|
||
|
if OpenSSL.ssl_init_finished(client)
|
||
|
write(client, string(request, "\r\n"))
|
||
|
while isopen(io)
|
||
|
# println("HERE")
|
||
|
OpenSSL.do_sock_read(client)
|
||
|
end
|
||
|
return String(client.context.data)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|