enables http2 crate feature, replaces http1 protocol with http2 on co… (#305)
This commit is contained in:
parent
9aea9c90a2
commit
a96894c743
@ -24,7 +24,7 @@ serde = { version = "1.0.193", features = ["derive"] }
|
|||||||
cookie = "0.18.0"
|
cookie = "0.18.0"
|
||||||
futures-lite = "2.2.0"
|
futures-lite = "2.2.0"
|
||||||
hyper = { version = "0.14.28", features = ["full"] }
|
hyper = { version = "0.14.28", features = ["full"] }
|
||||||
hyper-rustls = "0.24.2"
|
hyper-rustls = { version = "0.24.2", features = [ "http2" ] }
|
||||||
percent-encoding = "2.3.1"
|
percent-encoding = "2.3.1"
|
||||||
route-recognizer = "0.3.1"
|
route-recognizer = "0.3.1"
|
||||||
serde_json = "1.0.108"
|
serde_json = "1.0.108"
|
||||||
@ -65,4 +65,4 @@ path = "src/main.rs"
|
|||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "scraper"
|
name = "scraper"
|
||||||
path = "src/scraper/main.rs"
|
path = "src/scraper/main.rs"
|
||||||
|
@ -4,7 +4,7 @@ use futures_lite::future::block_on;
|
|||||||
use futures_lite::{future::Boxed, FutureExt};
|
use futures_lite::{future::Boxed, FutureExt};
|
||||||
use hyper::client::HttpConnector;
|
use hyper::client::HttpConnector;
|
||||||
use hyper::header::HeaderValue;
|
use hyper::header::HeaderValue;
|
||||||
use hyper::{body, body::Buf, client, header, Body, Client, Method, Request, Response, Uri};
|
use hyper::{body, body::Buf, header, Body, Client, Method, Request, Response, Uri};
|
||||||
use hyper_rustls::HttpsConnector;
|
use hyper_rustls::HttpsConnector;
|
||||||
use libflate::gzip;
|
use libflate::gzip;
|
||||||
use log::{error, trace, warn};
|
use log::{error, trace, warn};
|
||||||
@ -30,9 +30,12 @@ const REDDIT_SHORT_URL_BASE_HOST: &str = "redd.it";
|
|||||||
const ALTERNATIVE_REDDIT_URL_BASE: &str = "https://www.reddit.com";
|
const ALTERNATIVE_REDDIT_URL_BASE: &str = "https://www.reddit.com";
|
||||||
const ALTERNATIVE_REDDIT_URL_BASE_HOST: &str = "www.reddit.com";
|
const ALTERNATIVE_REDDIT_URL_BASE_HOST: &str = "www.reddit.com";
|
||||||
|
|
||||||
|
pub static HTTPS_CONNECTOR: Lazy<HttpsConnector<HttpConnector>> = Lazy::new(|| {
|
||||||
|
hyper_rustls::HttpsConnectorBuilder::new().with_native_roots().https_only().enable_http2().build()
|
||||||
|
});
|
||||||
|
|
||||||
pub static CLIENT: Lazy<Client<HttpsConnector<HttpConnector>>> = Lazy::new(|| {
|
pub static CLIENT: Lazy<Client<HttpsConnector<HttpConnector>>> = Lazy::new(|| {
|
||||||
let https = hyper_rustls::HttpsConnectorBuilder::new().with_native_roots().https_only().enable_http1().build();
|
Client::builder().build::<_, Body>(HTTPS_CONNECTOR.clone())
|
||||||
client::Client::builder().build(https)
|
|
||||||
});
|
});
|
||||||
|
|
||||||
pub static OAUTH_CLIENT: Lazy<ArcSwap<Oauth>> = Lazy::new(|| {
|
pub static OAUTH_CLIENT: Lazy<ArcSwap<Oauth>> = Lazy::new(|| {
|
||||||
@ -154,10 +157,7 @@ async fn stream(url: &str, req: &Request<Body>) -> Result<Response<Body>, String
|
|||||||
let parsed_uri = url.parse::<Uri>().map_err(|_| "Couldn't parse URL".to_string())?;
|
let parsed_uri = url.parse::<Uri>().map_err(|_| "Couldn't parse URL".to_string())?;
|
||||||
|
|
||||||
// Build the hyper client from the HTTPS connector.
|
// Build the hyper client from the HTTPS connector.
|
||||||
let client: Client<_, Body> = {
|
let client: &Lazy<Client<_, Body>> = &CLIENT;
|
||||||
let https = hyper_rustls::HttpsConnectorBuilder::new().with_native_roots().https_only().enable_http1().build();
|
|
||||||
client::Client::builder().build(https)
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut builder = Request::get(parsed_uri);
|
let mut builder = Request::get(parsed_uri);
|
||||||
|
|
||||||
@ -219,10 +219,7 @@ fn request(method: &'static Method, path: String, redirect: bool, quarantine: bo
|
|||||||
let url = format!("{base_path}{path}");
|
let url = format!("{base_path}{path}");
|
||||||
|
|
||||||
// Construct the hyper client from the HTTPS connector.
|
// Construct the hyper client from the HTTPS connector.
|
||||||
let client: Client<_, Body> = {
|
let client: &Lazy<Client<_, Body>> = &CLIENT;
|
||||||
let https = hyper_rustls::HttpsConnectorBuilder::new().with_native_roots().https_only().enable_http1().build();
|
|
||||||
client::Client::builder().build(https)
|
|
||||||
};
|
|
||||||
|
|
||||||
let (token, vendor_id, device_id, user_agent, loid) = {
|
let (token, vendor_id, device_id, user_agent, loid) = {
|
||||||
let client = OAUTH_CLIENT.load_full();
|
let client = OAUTH_CLIENT.load_full();
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use std::{collections::HashMap, sync::atomic::Ordering, time::Duration};
|
use std::{collections::HashMap, sync::atomic::Ordering, time::Duration};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
client::{OAUTH_CLIENT, OAUTH_IS_ROLLING_OVER, OAUTH_RATELIMIT_REMAINING},
|
client::{CLIENT, OAUTH_CLIENT, OAUTH_IS_ROLLING_OVER, OAUTH_RATELIMIT_REMAINING},
|
||||||
oauth_resources::ANDROID_APP_VERSION_LIST,
|
oauth_resources::ANDROID_APP_VERSION_LIST,
|
||||||
};
|
};
|
||||||
use base64::{engine::general_purpose, Engine as _};
|
use base64::{engine::general_purpose, Engine as _};
|
||||||
@ -94,10 +94,7 @@ impl Oauth {
|
|||||||
trace!("Sending token request...");
|
trace!("Sending token request...");
|
||||||
|
|
||||||
// Send request
|
// Send request
|
||||||
let client: client::Client<_, Body> = {
|
let client: &once_cell::sync::Lazy<client::Client<_, Body>> = &CLIENT;
|
||||||
let https = hyper_rustls::HttpsConnectorBuilder::new().with_native_roots().https_only().enable_http1().build();
|
|
||||||
client::Client::builder().build(https)
|
|
||||||
};
|
|
||||||
let resp = client.request(request).await.ok()?;
|
let resp = client.request(request).await.ok()?;
|
||||||
|
|
||||||
trace!("Received response with status {} and length {:?}", resp.status(), resp.headers().get("content-length"));
|
trace!("Received response with status {} and length {:?}", resp.status(), resp.headers().get("content-length"));
|
||||||
|
Loading…
Reference in New Issue
Block a user