1mod common;
15mod request;
16mod response;
17mod utils;
18
19pub use {request::*, response::*};
20
21pub use {
22 http_type::{HashMapXxHash3_64, RequestError, hash_map_xx_hash3_64},
23 serde_json::{
24 Deserializer, Error, Map, Number, StreamDeserializer, Value, from_reader, from_slice,
25 from_str, from_value, to_string, to_string_pretty, to_value, to_vec, to_vec_pretty,
26 to_writer, to_writer_pretty, value,
27 },
28};
29
30use {common::*, utils::*};
31
32use std::{
33 borrow::Cow,
34 collections::{HashSet, VecDeque},
35 fmt::{self, Debug, Display, Formatter},
36 io::{Error as IoError, Read, Write},
37 net::{Ipv4Addr, Ipv6Addr, TcpStream},
38 pin::Pin,
39 str::from_utf8,
40 string::FromUtf8Error,
41 sync::{
42 Arc, RwLock, RwLockReadGuard,
43 atomic::{AtomicBool, Ordering},
44 },
45 task::{Context, Poll},
46 time::{Duration, SystemTime, UNIX_EPOCH},
47 vec::IntoIter,
48};
49
50use {
51 futures::{Future, Sink, SinkExt, Stream, StreamExt},
52 http_type::{
53 ACCEPT, ACCEPT_ANY, BR_BYTES, COLON_U8, CONNECTION, CONTENT_LENGTH, CONTENT_TYPE, Compress,
54 ContentType, DEFAULT_BUFFER_SIZE, DEFAULT_HIGH_SECURITY_READ_TIMEOUT_MS, DEFAULT_HTTP_PATH,
55 DEFAULT_MAX_REDIRECT_TIMES, EMPTY_STR, HOST, HTTP_BR_BYTES, HttpStatus, HttpUrlComponents,
56 HttpVersion, LOCATION, Method, Protocol, QUERY, RequestBody, RequestBodyString,
57 RequestHeaders, ResponseHeaders, ResponseStatusCode, SEC_WEBSOCKET_KEY,
58 SEC_WEBSOCKET_VERSION, SPACE_U8, TAB_U8, UPGRADE, USER_AGENT,
59 tokio::{
60 io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt, ReadBuf},
61 net::TcpStream as AsyncTcpStream,
62 runtime::Runtime,
63 sync::{Mutex as AsyncMutex, MutexGuard as AsyncMutexGuard},
64 time::timeout,
65 },
66 },
67 rustls::{
68 ClientConfig, ClientConnection, Error as RustlsError, RootCertStore, StreamOwned,
69 pki_types::{InvalidDnsNameError, ServerName},
70 },
71 serde::{Serialize, Serializer},
72 tokio_rustls::{TlsConnector, client::TlsStream},
73 tokio_tungstenite::{
74 MaybeTlsStream, WebSocketStream, client_async_with_config, connect_async_with_config,
75 tungstenite::Message, tungstenite::handshake::client::Request,
76 },
77 webpki_roots::TLS_SERVER_ROOTS,
78};
79
80use tungstenite::Error as TungsteniteError;