make codebase smaller

This commit is contained in:
C0D3 M4513R
2024-05-25 21:16:22 +02:00
parent c055e61afa
commit e0b8be0eee
2 changed files with 64 additions and 0 deletions

View File

@ -73,5 +73,23 @@ cat patches/2FA_Current_User.rs >> src/models/current_user.rs
sed -i 's/pub use self::current_user::CurrentUser;/pub use self::current_user::{EitherUserOrTwoFactor, CurrentUser};/g' src/models/mod.rs
sed -i 's/Result<crate::models::CurrentUser, Error<GetCurrentUserError>>/Result<crate::models::EitherUserOrTwoFactor, Error<GetCurrentUserError>>/g' src/apis/authentication_api.rs
#Massively reduce the amount of code generated, by using a function for all the requests
sed -i "s/use crate::apis::ResponseContent;/#[allow(unused_imports)] use crate::apis::ResponseContent;/g" src/apis/*.rs
cat patches/minimise-code.rs >> src/lib.rs
/usr/bin/env sh -c '
#swap basic_auth and USER_AGENT
sed -Ezi "s/\s+if\s+let\s+Some\(ref\s+local_var_user_agent\)\s+=\s+local_var_configuration.user_agent\s+\{\s+local_var_req_builder\s+=\s+local_var_req_builder.header\(reqwest::header::USER_AGENT,\s+local_var_user_agent.clone\(\)\);\s+\}\s+if\s+let\s+Some\(ref\s+local_var_auth_conf\)\s+=\s+local_var_configuration.basic_auth\s+\{\s+local_var_req_builder\s+=\s+local_var_req_builder.basic_auth\(local_var_auth_conf.0.to_owned\(\),\s+local_var_auth_conf.1.to_owned\(\)\);\s+\};/\n if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {\n local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());\n };\n if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {\n local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());\n }\n/g" src/apis/*.rs
#pull out common request code into seperate function
sed -Ezi "s/\s+if\s+let\s+Some\(ref\s+local_var_user_agent\)\s+=\s+local_var_configuration.user_agent\s+\{\s+local_var_req_builder\s+=\s+local_var_req_builder.header\(reqwest::header::USER_AGENT,\s+local_var_user_agent.clone\(\)\);\s+\}\s+let\s+local_var_req\s+=\s+local_var_req_builder.build\(\)\?;\s+let\s+local_var_resp\s+=\s+local_var_client.execute\(local_var_req\).await\?;\s+let\s+local_var_status\s+=\s+local_var_resp.status\(\);\s+let\s+local_var_content\s+=\s+local_var_resp.text\(\).await\?;\s+if\s+!local_var_status.is_client_error\(\)\s+&&\s+!local_var_status.is_server_error\(\)\s+\{\s+Ok\(\(\)\)\s+\}\s+else\s+\{\s+let\s+local_var_entity:\s+Option<\S+>\s+=\s+serde_json::from_str\(&local_var_content\).ok\(\);\s+let\s+local_var_error\s+=\s+ResponseContent\s+\{\s+status:\s+local_var_status,\s+content:\s+local_var_content,\s+entity:\s+local_var_entity\s+\};\s+Err\(Error::ResponseError\(local_var_error\)\)\s+\}/\n crate::request_ok(local_var_configuration, local_var_req_builder, None::<()>).await/g" src/apis/*.rs
sed -Ezi "s/\s+if\s+let\s+Some\(ref\s+local_var_user_agent\)\s+=\s+local_var_configuration.user_agent\s+\{\s+local_var_req_builder\s+=\s+local_var_req_builder.header\(reqwest::header::USER_AGENT,\s+local_var_user_agent.clone\(\)\);\s+\}\s+local_var_req_builder\s+=\s+local_var_req_builder.json\(&(\S+)\);\s+let\s+local_var_req\s+=\s+local_var_req_builder.build\(\)\?;\s+let\s+local_var_resp\s+=\s+local_var_client.execute\(local_var_req\).await\?;\s+let\s+local_var_status\s+=\s+local_var_resp.status\(\);\s+let\s+local_var_content\s+=\s+local_var_resp.text\(\).await\?;\s+if\s+!local_var_status.is_client_error\(\)\s+&&\s+!local_var_status.is_server_error\(\)\s+\{\s+Ok\(\(\)\)\s+\}\s+else\s+\{\s+let\s+local_var_entity:\s+Option<\S+>\s+=\s+serde_json::from_str\(&local_var_content\).ok\(\);\s+let\s+local_var_error\s+=\s+ResponseContent\s+\{\s+status:\s+local_var_status,\s+content:\s+local_var_content,\s+entity:\s+local_var_entity\s+\};\s+Err\(Error::ResponseError\(local_var_error\)\)\s+\}/\n crate::request_ok(local_var_configuration, local_var_req_builder, Some(\1)).await/g" src/apis/*.rs
sed -Ezi "s/\s+if\s+let\s+Some\(ref\s+local_var_user_agent\)\s+=\s+local_var_configuration\.user_agent\s+\{\s+local_var_req_builder\s+=\s+local_var_req_builder\.header\(reqwest::header::USER_AGENT,\s+local_var_user_agent\.clone\(\)\);\s+\}\s+let\s+local_var_req\s+=\s+local_var_req_builder\.build\(\)\?;\s+let\s+local_var_resp\s+=\s+local_var_client\.execute\(local_var_req\)\.await\?;\s+let\s+local_var_status\s+=\s+local_var_resp\.status\(\);\s+let\s+local_var_content\s+=\s+local_var_resp\.text\(\)\.await\?;\s+if\s+!local_var_status\.is_client_error\(\)\s+&&\s+!local_var_status\.is_server_error\(\)\s+\{\s+serde_json::from_str\(&local_var_content\)\.map_err\(Error::from\)\s+\}\s+else\s+\{\s+let\s+local_var_entity:\s+Option<\S+>\s+=\s+serde_json::from_str\(&local_var_content\)\.ok\(\);\s+let\s+local_var_error\s+=\s+ResponseContent\s+\{\s+status:\s+local_var_status,\s+content:\s+local_var_content,\s+entity:\s+local_var_entity\s+\};\s+Err\(Error::ResponseError\(local_var_error\)\)\s+\}/\n crate::request(local_var_configuration, local_var_req_builder, None::<()>).await/g" src/apis/*.rs
sed -Ezi "s/\s+if\s+let\s+Some\(ref\s+local_var_user_agent\)\s+=\s+local_var_configuration\.user_agent\s+\{\s+local_var_req_builder\s+=\s+local_var_req_builder\.header\(reqwest::header::USER_AGENT,\s+local_var_user_agent\.clone\(\)\);\s+\}\s+local_var_req_builder\s+=\s+local_var_req_builder\.json\(&([0-9a-zA-Z_\-]+)\);\s+let\s+local_var_req\s+=\s+local_var_req_builder\.build\(\)\?;\s+let\s+local_var_resp\s+=\s+local_var_client\.execute\(local_var_req\)\.await\?;\s+let\s+local_var_status\s+=\s+local_var_resp\.status\(\);\s+let\s+local_var_content\s+=\s+local_var_resp\.text\(\)\.await\?;\s+if\s+!local_var_status\.is_client_error\(\)\s+&&\s+!local_var_status\.is_server_error\(\)\s+\{\s+serde_json::from_str\(&local_var_content\)\.map_err\(Error::from\)\s+\}\s+else\s+\{\s+let\s+local_var_entity:\s+Option<\S+>\s+=\s+serde_json::from_str\(&local_var_content\)\.ok\(\);\s+let\s+local_var_error\s+=\s+ResponseContent\s+\{\s+status:\s+local_var_status,\s+content:\s+local_var_content,\s+entity:\s+local_var_entity\s+\};\s+Err\(Error::ResponseError\(local_var_error\)\)\s+\}/\n crate::request(local_var_configuration, local_var_req_builder, Some(\1)).await/g" src/apis/*.rs
'
sed -Ezi "s/let local_var_configuration = configuration;\s+/\n /g" src/apis/*.rs
sed -Ezi "s/\s+let local_var_client = &local_var_configuration.client;\s+/\n /g" src/apis/*.rs
sed -i "s/local_var_client/local_var_configuration.client/g" src/apis/*.rs
sed -i "s/local_var_configuration/configuration/g" src/apis/*.rs
sed -i "s/let mut local_var_req_builder/#[allow(unused_mut)] let mut local_var_req_builder/g" src/apis/*.rs
cargo build

46
patches/minimise-code.rs Normal file
View File

@ -0,0 +1,46 @@
use serde::de::DeserializeOwned;
use reqwest::RequestBuilder;
use serde::Serialize;
use reqwest::StatusCode;
use crate::apis::{configuration, Error, ResponseContent};
async fn request<T: Serialize, R:DeserializeOwned, E:DeserializeOwned>(
configuration: &configuration::Configuration<impl std::ops::Deref<Target = reqwest::Client> + Clone + core::fmt::Debug>,
request: RequestBuilder,
data: Option<T>,
) -> Result<R, Error<E>> {
request_int(configuration, request, data, |_, content| serde_json::from_str(&content).map_err(Error::from)).await
}
async fn request_ok<T: Serialize, E:DeserializeOwned>(
configuration: &configuration::Configuration<impl std::ops::Deref<Target = reqwest::Client> + Clone + core::fmt::Debug>,
request: RequestBuilder,
data: Option<T>,
) -> Result<(), Error<E>> {
request_int(configuration, request, data, |_,_| Ok(())).await
}
async fn request_int<T:Serialize, R, E:DeserializeOwned>(
configuration: &configuration::Configuration<impl std::ops::Deref<Target = reqwest::Client> + Clone + core::fmt::Debug>,
mut request: RequestBuilder,
data: Option<T>,
output: impl FnOnce(StatusCode, String) -> Result<R, Error<E>>
) -> Result<R, Error<E>> {
if let Some(ref local_var_user_agent) = configuration.user_agent {
request = request.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
}
if let Some(data) = data{
request = request.json(&data);
}
let resp = configuration.client.execute(request.build()?).await?;
let status = resp.status();
let content = resp.text().await?;
if !status.is_client_error() && !status.is_server_error() {
output(status, content)
} else {
let local_var_entity: Option<E> = serde_json::from_str(&content).ok();
let local_var_error = ResponseContent { status, content, entity: local_var_entity };
Err(Error::ResponseError(local_var_error))
}
}