diff --git a/build.sh b/build.sh
index c2334b040..4af5aaedd 100755
--- a/build.sh
+++ b/build.sh
@@ -22,29 +22,35 @@ root=$(pwd)
[ ! -d uploads ] && mkdir uploads
# Separate arrays for target architectures and Docker images
-target_architectures=("x86_64-unknown-linux-musl" "aarch64-unknown-linux-musl" "armv7-unknown-linux-musleabi" "armv7-unknown-linux-musleabihf" "arm-unknown-linux-musleabi" "arm-unknown-linux-musleabihf" "armv5te-unknown-linux-musleabi" "i686-unknown-linux-gnu" "i586-unknown-linux-gnu" "x86_64-pc-windows-msvc")
-docker_images=("ghcr.io/gngpp/rust-musl-cross:x86_64-musl" "ghcr.io/gngpp/rust-musl-cross:aarch64-musl" "ghcr.io/gngpp/rust-musl-cross:armv7-musleabi" "ghcr.io/gngpp/rust-musl-cross:armv7-musleabihf" "ghcr.io/gngpp/rust-musl-cross:arm-musleabi" "ghcr.io/gngpp/rust-musl-cross:arm-musleabihf" "ghcr.io/gngpp/rust-musl-cross:armv5te-musleabi" "ghcr.io/gngpp/rust-musl-cross:i686-musl" "ghcr.io/gngpp/rust-musl-cross:i586-musl" "ghcr.io/gngpp/cargo-xwin:latest")
-
-get_docker_image() {
- local target_arch="$1"
- local index
- for ((index = 0; index < ${#target_architectures[@]}; ++index)); do
- if [ "${target_architectures[index]}" == "$target_arch" ]; then
- echo "${docker_images[index]}"
- return 0
- fi
- done
-
- echo "Architecture not found"
- return 1
+target_architectures=(
+ "x86_64-unknown-linux-musl"
+ "aarch64-unknown-linux-musl"
+ "armv7-unknown-linux-musleabi"
+ "armv7-unknown-linux-musleabihf"
+ "arm-unknown-linux-musleabi"
+ "arm-unknown-linux-musleabihf"
+ "armv5te-unknown-linux-musleabi"
+ "i686-unknown-linux-gnu"
+ "i586-unknown-linux-gnu"
+ "x86_64-pc-windows-msvc"
+)
+
+pull_docker_image() {
+ image="ghcr.io/gngpp/rust-musl-cross:$1"
+ echo "Pulling $image"
+ docker pull $image
}
rmi_docker_image() {
- echo "Removing $1"
- docker rmi $1
+ image="ghcr.io/gngpp/rust-musl-cross:$1"
+ echo "Removing $image docker image"
+ if [ "$rmi" = "true" ]; then
+ docker rmi $image
+ fi
}
build_macos_target() {
+ echo "Building $1"
cargo build --release --target $1 --features mimalloc
sudo chmod -R 777 target
cd target/$1/release
@@ -56,6 +62,8 @@ build_macos_target() {
}
build_linux_target() {
+ docker_image="ghcr.io/gngpp/rust-musl-cross:$1"
+
features=""
if [ "$1" = "armv5te-unknown-linux-musleabi" ] || [ "$1" = "arm-unknown-linux-musleabi" ] || [ "$1" = "arm-unknown-linux-musleabihf" ]; then
features="--features rpmalloc"
@@ -67,8 +75,7 @@ build_linux_target() {
fi
fi
- docker_image=$(get_docker_image "$1")
-
+ echo "Building $1"
docker run --rm -t --user=$UID:$(id -g $USER) \
-v $(pwd):/home/rust/src \
-v $HOME/.cargo/registry:/root/.cargo/registry \
@@ -90,8 +97,9 @@ build_linux_target() {
}
build_windows_target() {
- docker_image=$(get_docker_image "$1")
+ docker_image="ghcr.io/gngpp/rust-musl-cross:$1"
+ echo "Building $1"
docker run --rm -t \
-v $(pwd):/home/rust/src \
-v $HOME/.cargo/registry:/usr/local/cargo/registry \
@@ -109,48 +117,40 @@ build_windows_target() {
}
if [ "$os" = "windows" ]; then
- target_list=(x86_64-pc-windows-msvc)
- for target in "${target_list[@]}"; do
- echo "Building $target"
-
- docker_image=$(get_docker_image "$target")
-
- build_windows_target "$target"
-
- if [ "$rmi" = "true" ]; then
- rmi_docker_image "$docker_image"
- fi
- done
+ target="x86_64-pc-windows-msvc"
+ pull_docker_image "$target"
+ build_windows_target "$target"
+ rmi_docker_image "$target"
fi
if [ "$os" = "linux" ]; then
- target_list=(x86_64-unknown-linux-musl aarch64-unknown-linux-musl armv7-unknown-linux-musleabi armv7-unknown-linux-musleabihf armv5te-unknown-linux-musleabi arm-unknown-linux-musleabi arm-unknown-linux-musleabihf i686-unknown-linux-gnu i586-unknown-linux-gnu)
+ target_list=(
+ "x86_64-unknown-linux-musl"
+ "aarch64-unknown-linux-musl"
+ "armv7-unknown-linux-musleabi"
+ "armv7-unknown-linux-musleabihf"
+ "armv5te-unknown-linux-musleabi"
+ "arm-unknown-linux-musleabi"
+ "arm-unknown-linux-musleabihf"
+ "i686-unknown-linux-gnu"
+ "i586-unknown-linux-gnu"
+ )
for target in "${target_list[@]}"; do
- echo "Building $target"
-
- docker_image=$(get_docker_image "$target")
-
- if [ "$target" = "x86_64-pc-windows-msvc" ]; then
- build_windows_target "$target"
- else
- build_linux_target "$target"
- fi
-
- if [ "$rmi" = "true" ]; then
- rmi_docker_image "$docker_image"
- fi
+ pull_docker_image "$target"
+ build_linux_target "$target"
+ rmi_docker_image "$target"
done
fi
if [ "$os" = "macos" ]; then
- if ! which upx &>/dev/null; then
- brew install upx
- fi
- rustup target add x86_64-apple-darwin aarch64-apple-darwin
- target_list=(x86_64-apple-darwin aarch64-apple-darwin)
+ target_list=(
+ "x86_64-apple-darwin"
+ "aarch64-apple-darwin"
+ )
for target in "${target_list[@]}"; do
- echo "Building $target"
+ echo "Adding $target to the build queue"
+ rustup target add "$target"
build_macos_target "$target"
done
fi
diff --git a/crates/mitm/Cargo.toml b/crates/mitm/Cargo.toml
index 7797f3b3a..791a4b6ac 100644
--- a/crates/mitm/Cargo.toml
+++ b/crates/mitm/Cargo.toml
@@ -9,7 +9,6 @@ edition = "2021"
log = "0.4.20"
anyhow = "1.0.75"
thiserror = "1.0.48"
-async-trait = "0.1.73"
reqwest = { package = "reqwest-impersonate", version ="0.11.49", default-features = false, features = [
"boring-tls", "impersonate", "stream", "socks"
] }
diff --git a/crates/mitm/src/proxy/handler.rs b/crates/mitm/src/proxy/handler.rs
index 7057094f4..29d9a32e5 100644
--- a/crates/mitm/src/proxy/handler.rs
+++ b/crates/mitm/src/proxy/handler.rs
@@ -1,17 +1,15 @@
-use async_trait::async_trait;
use hyper::{Body, Request, Response};
use std::sync::{Arc, RwLock};
use wildmatch::WildMatch;
use super::mitm::RequestOrResponse;
-#[async_trait]
pub trait HttpHandler: Clone + Send + Sync + 'static {
- async fn handle_request(&self, req: Request
) -> RequestOrResponse {
+ fn handle_request(&self, req: Request) -> RequestOrResponse {
RequestOrResponse::Request(req)
}
- async fn handle_response(&self, res: Response) -> Response {
+ fn handle_response(&self, res: Response) -> Response {
res
}
}
diff --git a/crates/mitm/src/proxy/mitm.rs b/crates/mitm/src/proxy/mitm.rs
index b036dd05f..25ea4a54b 100644
--- a/crates/mitm/src/proxy/mitm.rs
+++ b/crates/mitm/src/proxy/mitm.rs
@@ -93,7 +93,7 @@ where
};
// Proxy request
- let mut req = match self.http_handler.handle_request(req).await {
+ let mut req = match self.http_handler.handle_request(req) {
RequestOrResponse::Request(req) => req,
RequestOrResponse::Response(res) => return Ok(res),
};
@@ -116,7 +116,7 @@ where
}
};
- let mut res = self.http_handler.handle_response(res).await;
+ let mut res = self.http_handler.handle_response(res);
let length = res.size_hint().lower();
{
diff --git a/crates/openai/Cargo.toml b/crates/openai/Cargo.toml
index 81939a0f6..b153ef1c3 100644
--- a/crates/openai/Cargo.toml
+++ b/crates/openai/Cargo.toml
@@ -2,6 +2,7 @@
name = "openai"
version = "0.9.26"
edition = "2021"
+rust-version = "1.75.0"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -19,11 +20,9 @@ tokio = { version = "1.35.1", features = ["fs", "sync", "signal", "rt-multi-thre
serde_json = "1.0.107"
serde = {version = "1.0.188", features = ["derive"] }
regex = "1.9.5"
-async-recursion = "1.0.5"
url = { version = "2.5.0", features = ["serde"] }
base64 = "0.21.4"
rand = "0.8.5"
-async-trait = "0.1.73"
typed-builder = "0.18.0"
jsonwebtokens = "1.2.0"
sha2 = "0.10.7"
diff --git a/crates/openai/src/auth/mod.rs b/crates/openai/src/auth/mod.rs
index 68865667f..5d7ff6459 100644
--- a/crates/openai/src/auth/mod.rs
+++ b/crates/openai/src/auth/mod.rs
@@ -18,7 +18,7 @@ use serde::de::DeserializeOwned;
use base64::{engine::general_purpose, Engine as _};
use rand::Rng;
-use reqwest::{Client, Proxy, StatusCode, Url};
+use reqwest::{Client, ClientBuilder, Proxy, StatusCode, Url};
use sha2::{Digest, Sha256};
use tokio::sync::OnceCell;
@@ -30,6 +30,7 @@ use error::AuthError;
use self::model::{ApiKeyData, AuthStrategy};
#[cfg(feature = "preauth")]
use self::provide::apple::AppleAuthProvider;
+use self::provide::apple::PreAuthProvider;
use self::provide::platform::PlatformAuthProvider;
use self::provide::web::WebAuthProvider;
use self::provide::{AuthProvider, AuthResult};
@@ -48,7 +49,7 @@ static EMAIL_REGEX: OnceCell = OnceCell::const_new();
#[derive(Clone)]
pub struct AuthClient {
inner: Client,
- providers: Arc>>,
+ providers: Vec,
}
impl AuthClient {
@@ -265,7 +266,6 @@ impl AuthClient {
}
}
-#[async_trait::async_trait]
impl AuthProvider for AuthClient {
fn supports(&self, t: &AuthStrategy) -> bool {
self.providers.iter().any(|strategy| strategy.supports(t))
@@ -338,19 +338,17 @@ impl AuthProvider for AuthClient {
}
}
-pub struct AuthClientBuilder {
- inner: reqwest::ClientBuilder,
-}
+pub struct AuthClientBuilder(ClientBuilder);
impl AuthClientBuilder {
// Proxy options
pub fn proxy(mut self, proxy: Option) -> Self {
if let Some(url) = proxy {
- self.inner = self
- .inner
+ self.0 = self
+ .0
.proxy(Proxy::all(url).expect("reqwest: invalid proxy url"));
} else {
- self.inner = self.inner.no_proxy();
+ self.0 = self.0.no_proxy();
}
self
}
@@ -364,7 +362,7 @@ impl AuthClientBuilder {
///
/// Default is no timeout.
pub fn timeout(mut self, timeout: Duration) -> Self {
- self.inner = self.inner.timeout(timeout);
+ self.0 = self.0.timeout(timeout);
self
}
@@ -377,7 +375,7 @@ impl AuthClientBuilder {
/// This **requires** the futures be executed in a tokio runtime with
/// a tokio timer enabled.
pub fn connect_timeout(mut self, timeout: Duration) -> Self {
- self.inner = self.inner.connect_timeout(timeout);
+ self.0 = self.0.connect_timeout(timeout);
self
}
@@ -392,13 +390,13 @@ impl AuthClientBuilder {
where
D: Into