mirror of
https://github.com/pesde-pkg/pesde.git
synced 2025-01-06 08:09:09 +00:00
fix: overwrite request headers
This commit is contained in:
parent
836870f1ce
commit
83286ff758
3 changed files with 47 additions and 9 deletions
|
@ -20,7 +20,7 @@ pub struct LoginCommand {
|
||||||
/// The index to use. Defaults to `default`, or the configured default index if current directory doesn't have a manifest
|
/// The index to use. Defaults to `default`, or the configured default index if current directory doesn't have a manifest
|
||||||
#[arg(short, long)]
|
#[arg(short, long)]
|
||||||
index: Option<String>,
|
index: Option<String>,
|
||||||
|
|
||||||
/// The token to use for authentication, skipping login
|
/// The token to use for authentication, skipping login
|
||||||
#[arg(short, long, conflicts_with = "index")]
|
#[arg(short, long, conflicts_with = "index")]
|
||||||
token: Option<String>,
|
token: Option<String>,
|
||||||
|
|
|
@ -7,7 +7,7 @@ use std::{
|
||||||
|
|
||||||
use gix::Url;
|
use gix::Url;
|
||||||
use relative_path::RelativePathBuf;
|
use relative_path::RelativePathBuf;
|
||||||
use reqwest::header::ACCEPT;
|
use reqwest::header::{HeaderMap, ACCEPT, AUTHORIZATION};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use pkg_ref::PesdePackageRef;
|
use pkg_ref::PesdePackageRef;
|
||||||
|
@ -275,14 +275,29 @@ impl PackageSource for PesdePackageSource {
|
||||||
.replace("{PACKAGE_VERSION}", &pkg_ref.version.to_string())
|
.replace("{PACKAGE_VERSION}", &pkg_ref.version.to_string())
|
||||||
.replace("{PACKAGE_TARGET}", &pkg_ref.target.to_string());
|
.replace("{PACKAGE_TARGET}", &pkg_ref.target.to_string());
|
||||||
|
|
||||||
let mut response = reqwest.get(url).header(ACCEPT, "application/octet-stream");
|
let mut headers = HeaderMap::new();
|
||||||
|
headers.insert(
|
||||||
|
ACCEPT,
|
||||||
|
"application/octet-stream"
|
||||||
|
.parse()
|
||||||
|
.map_err(|e| errors::DownloadError::InvalidHeaderValue("Accept".to_string(), e))?,
|
||||||
|
);
|
||||||
|
|
||||||
if let Some(token) = project.auth_config.get_token(&self.repo_url) {
|
if let Some(token) = project.auth_config.get_token(&self.repo_url) {
|
||||||
log::debug!("using token for pesde package download");
|
log::debug!("using token for pesde package download");
|
||||||
response = response.header("Authorization", token);
|
headers.insert(
|
||||||
|
AUTHORIZATION,
|
||||||
|
token.parse().map_err(|e| {
|
||||||
|
errors::DownloadError::InvalidHeaderValue("Authorization".to_string(), e)
|
||||||
|
})?,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
let response = response.send()?.error_for_status()?;
|
let response = reqwest
|
||||||
|
.get(url)
|
||||||
|
.headers(headers)
|
||||||
|
.send()?
|
||||||
|
.error_for_status()?;
|
||||||
let bytes = response.bytes()?;
|
let bytes = response.bytes()?;
|
||||||
|
|
||||||
let mut decoder = flate2::read::GzDecoder::new(bytes.as_ref());
|
let mut decoder = flate2::read::GzDecoder::new(bytes.as_ref());
|
||||||
|
@ -506,5 +521,9 @@ pub mod errors {
|
||||||
/// Error writing index file
|
/// Error writing index file
|
||||||
#[error("error reading index file")]
|
#[error("error reading index file")]
|
||||||
ReadIndex(#[source] std::io::Error),
|
ReadIndex(#[source] std::io::Error),
|
||||||
|
|
||||||
|
/// A header value was invalid
|
||||||
|
#[error("invalid header {0} value")]
|
||||||
|
InvalidHeaderValue(String, #[source] reqwest::header::InvalidHeaderValue),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ use std::{
|
||||||
|
|
||||||
use gix::Url;
|
use gix::Url;
|
||||||
use relative_path::RelativePathBuf;
|
use relative_path::RelativePathBuf;
|
||||||
|
use reqwest::header::{HeaderMap, AUTHORIZATION};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use tempfile::tempdir;
|
use tempfile::tempdir;
|
||||||
|
|
||||||
|
@ -177,19 +178,33 @@ impl PackageSource for WallyPackageSource {
|
||||||
pkg_ref.version
|
pkg_ref.version
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut response = reqwest.get(url).header(
|
let mut headers = HeaderMap::new();
|
||||||
|
headers.insert(
|
||||||
"Wally-Version",
|
"Wally-Version",
|
||||||
std::env::var("PESDE_WALLY_VERSION")
|
std::env::var("PESDE_WALLY_VERSION")
|
||||||
.as_deref()
|
.as_deref()
|
||||||
.unwrap_or("0.3.2"),
|
.unwrap_or("0.3.2")
|
||||||
|
.parse()
|
||||||
|
.map_err(|e| {
|
||||||
|
errors::DownloadError::InvalidHeaderValue("Wally-Version".to_string(), e)
|
||||||
|
})?,
|
||||||
);
|
);
|
||||||
|
|
||||||
if let Some(token) = project.auth_config.get_token(&self.repo_url) {
|
if let Some(token) = project.auth_config.get_token(&self.repo_url) {
|
||||||
log::debug!("using token for wally package download");
|
log::debug!("using token for wally package download");
|
||||||
response = response.header("Authorization", token);
|
headers.insert(
|
||||||
|
AUTHORIZATION,
|
||||||
|
token.parse().map_err(|e| {
|
||||||
|
errors::DownloadError::InvalidHeaderValue("Authorization".to_string(), e)
|
||||||
|
})?,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
let response = response.send()?.error_for_status()?;
|
let response = reqwest
|
||||||
|
.get(url)
|
||||||
|
.headers(headers)
|
||||||
|
.send()?
|
||||||
|
.error_for_status()?;
|
||||||
let bytes = response.bytes()?;
|
let bytes = response.bytes()?;
|
||||||
|
|
||||||
let mut archive = zip::ZipArchive::new(std::io::Cursor::new(bytes))?;
|
let mut archive = zip::ZipArchive::new(std::io::Cursor::new(bytes))?;
|
||||||
|
@ -340,5 +355,9 @@ pub mod errors {
|
||||||
/// Error writing index file
|
/// Error writing index file
|
||||||
#[error("error writing index file")]
|
#[error("error writing index file")]
|
||||||
WriteIndex(#[source] std::io::Error),
|
WriteIndex(#[source] std::io::Error),
|
||||||
|
|
||||||
|
/// A header value was invalid
|
||||||
|
#[error("invalid header {0} value")]
|
||||||
|
InvalidHeaderValue(String, #[source] reqwest::header::InvalidHeaderValue),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue