Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pub struct Connection {
- socket: TcpStream,
- session: rustls::ClientSession,
- }
- impl ::std::io::Write for Connection {
- fn write(&mut self, bytes: &[u8]) -> ::std::io::Result<usize> {
- let mut tls = rustls::Stream::new(&mut self.session, &mut self.socket);
- tls.write(bytes)
- }
- fn flush(&mut self) -> ::std::io::Result<()> {
- let mut tls = rustls::Stream::new(&mut self.session, &mut self.socket);
- tls.flush()
- }
- }
- impl ::std::io::Read for Connection {
- fn read(&mut self, bytes: &mut [u8]) -> ::std::io::Result<usize> {
- let mut tls = rustls::Stream::new(&mut self.session, &mut self.socket);
- tls.read(bytes)
- }
- fn read_to_end(&mut self, bytes: &mut Vec<u8>) -> ::std::io::Result<usize> {
- let mut tls = rustls::Stream::new(&mut self.session, &mut self.socket);
- tls.read_to_end(bytes)
- }
- }
- fn send_http_call(conn: &mut Connection) -> Result<()> {
- let message = format!(concat!("POST /api HTTP/1.1\r\n",
- "Content-Length: 4\r\n",
- "Content-Type: text/plain; charset=utf-8\r\n",
- "Connection: Keep-Alive\r\n",
- "Accept-Encoding: identity\r\n",
- "\r\ntest"));
- if let Err(e) = conn.write(message.as_bytes()) {
- bail!("Could not request to the server: {}", e);
- }
- let mut response = Vec::new();
- loop {
- let mut buffer = [0; 1];
- let size = conn.read(&mut buffer).unwrap_or(0);
- if size == 0 {
- break;
- }
- response.append(&mut buffer.to_vec());
- }
- let response = String::from_utf8_lossy(&response);
- log::warn!("response: {}", response);
- Ok(())
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement