Skip to content

Commit

Permalink
reimplement http message component mod
Browse files Browse the repository at this point in the history
  • Loading branch information
junkurihara committed Jan 26, 2024
1 parent d8ce19b commit fb4bf51
Show file tree
Hide file tree
Showing 5 changed files with 272 additions and 237 deletions.
20 changes: 10 additions & 10 deletions src/ext/hyper_http.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use super::{ContentDigestType, CONTENT_DIGEST_HEADER};
use crate::{
message_component::{
DerivedComponentName, HttpMessageComponent, HttpMessageComponentIdentifier, HttpMessageComponentParam,
DerivedComponentName, HttpMessageComponent, HttpMessageComponentName, HttpMessageComponentParam,
HttpMessageComponentValue,
},
signature_base::SignatureBase,
Expand Down Expand Up @@ -178,7 +178,7 @@ where
.covered_components
.iter()
.map(|component_id_str| {
let component_id = HttpMessageComponentIdentifier::from(component_id_str.as_str());
let component_id = HttpMessageComponentName::from(component_id_str.as_str());

extract_component_from_request(self, &component_id)
})
Expand All @@ -199,19 +199,19 @@ where
/// Extract http message component from hyper http request
fn extract_component_from_request<B>(
req: &Request<B>,
target_component_id: &HttpMessageComponentIdentifier,
target_component_id: &HttpMessageComponentName,
) -> Result<HttpMessageComponent, anyhow::Error> {
let params = match &target_component_id {
HttpMessageComponentIdentifier::HttpField(field_id) => &field_id.params,
HttpMessageComponentIdentifier::Derived(derived_id) => &derived_id.params,
HttpMessageComponentName::HttpField(field_id) => &field_id.params,
HttpMessageComponentName::Derived(derived_id) => &derived_id.params,
};
anyhow::ensure!(
!params.0.contains(&HttpMessageComponentParam::Req),
"`req` is not allowed in request"
);

let field_values = match &target_component_id {
HttpMessageComponentIdentifier::HttpField(field_id) => {
HttpMessageComponentName::HttpField(field_id) => {
let field_values = req
.headers()
.get_all(&field_id.filed_name)
Expand All @@ -220,7 +220,7 @@ fn extract_component_from_request<B>(
.collect::<Vec<_>>();
field_values
}
HttpMessageComponentIdentifier::Derived(derived_id) => {
HttpMessageComponentName::Derived(derived_id) => {
let url = url::Url::parse(&req.uri().to_string())?;
let field_value = match derived_id.component_name {
DerivedComponentName::Method => req.method().to_string(),
Expand Down Expand Up @@ -253,7 +253,7 @@ fn extract_component_from_request<B>(
};

let component = HttpMessageComponent {
id: target_component_id.clone(),
name: target_component_id.clone(),
value: HttpMessageComponentValue::from(""),
};
Ok(component)
Expand All @@ -274,11 +274,11 @@ mod tests {
.body(())
.unwrap();

let component_id_method = HttpMessageComponentIdentifier::from("\"@method\"");
let component_id_method = HttpMessageComponentName::from("\"@method\"");
let component = extract_component_from_request(&req, &component_id_method).unwrap();
println!("{:?}", component);

let component_id_query_param = HttpMessageComponentIdentifier::from("\"@query-param\"");
let component_id_query_param = HttpMessageComponentName::from("\"@query-param\"");
let component = extract_component_from_request(&req, &component_id_query_param).unwrap();
println!("{:?}", component);
// let component = extract_component_from_request(&req, &component_id).unwrap();
Expand Down
14 changes: 7 additions & 7 deletions src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
mod crypto;
mod ext;
// mod ext;
mod message_component;
mod signature_base;
mod signature_params;
// mod signature_base;
// mod signature_params;
mod trace;
mod util;
// mod util;

use crate::{
crypto::{PublicKey, SecretKey, SigningKey, VerifyingKey},
signature_params::{HttpSignatureParams, HttpSignatureParamsBuilder},
// signature_params::{HttpSignatureParams, HttpSignatureParamsBuilder},
};

#[cfg(test)]
Expand Down Expand Up @@ -65,7 +65,7 @@ Signature: sig-b26=:wqcAqbmYJ2ji2glfAMaRy4gruYYnx2nEFN2HN6jrnDnQCK1\
#[test]
fn test_http_signature_params() {
let signature_params_str = r##"("date" "@method" "@path" "@authority" "content-type" "content-length");created=1618884473;keyid="test-key-ed25519""##;
let signature_params = HttpSignatureParams::try_from(signature_params_str).unwrap();
assert_eq!(signature_params.to_string(), signature_params_str);
// let signature_params = HttpSignatureParams::try_from(signature_params_str).unwrap();
// assert_eq!(signature_params.to_string(), signature_params_str);
}
}
Loading

0 comments on commit fb4bf51

Please sign in to comment.