Unverified Commit 6eaae060 authored by Russell Cohen's avatar Russell Cohen Committed by GitHub
Browse files

Fix user agent lang header (#233)

* Fix user agent lang header

The User-Agent and x-amz-user-agent headers were not setting `lang/` before the language section.

* Fix tower deprecation
parent 27fb78ac
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -69,9 +69,7 @@ impl ClassifyResponse for AwsErrorRetryPolicy {
                return RetryKind::Error(ErrorKind::TransientError);
            }
        };
        if TRANSIENT_ERROR_STATUS_CODES
            .contains(&response.status().as_u16())
        {
        if TRANSIENT_ERROR_STATUS_CODES.contains(&response.status().as_u16()) {
            return RetryKind::Error(ErrorKind::TransientError);
        };
        // TODO: is IDPCommunicationError modeled yet?
+7 −3
Original line number Diff line number Diff line
@@ -198,7 +198,8 @@ struct LanguageMetadata {
}
impl Display for LanguageMetadata {
    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
        write!(f, "{}/{}", self.lang, self.version)?;
        // language-metadata    = "lang/" language "/" version *(RWS additional-metadata)
        write!(f, "lang/{}/{}", self.lang, self.version)?;
        for extra in &self.extras {
            write!(f, " md/{}/{}", &extra.key, &extra.value)?;
        }
@@ -281,9 +282,12 @@ mod test {
        ua.os_metadata.version = Some("1.15".to_string());
        assert_eq!(
            ua.aws_ua_header(),
            "aws-sdk-rust/0.1 api/dynamodb/123 os/macos/1.15 rust/1.50.0"
            "aws-sdk-rust/0.1 api/dynamodb/123 os/macos/1.15 lang/rust/1.50.0"
        );
        assert_eq!(
            ua.ua_header(),
            "aws-sdk-rust/0.1 os/macos/1.15 lang/rust/1.50.0"
        );
        assert_eq!(ua.ua_header(), "aws-sdk-rust/0.1 os/macos/1.15 rust/1.50.0");
    }

    #[test]
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ edition = "2018"

[dependencies]
hyper = { version = "0.14.2", features = ["client", "http1", "http2", "tcp", "runtime"] }
tower = { version = "0.4.2", features = ["util"] }
tower = { version = "0.4.6", features = ["util"] }
hyper-tls = "0.5.0"
aws-auth = { path = "../aws-auth" }
aws-sig-auth = { path = "../aws-sig-auth" }
+1 −1
Original line number Diff line number Diff line
@@ -102,7 +102,7 @@ where
            .layer(user_agent)
            .layer(DispatchLayer::new())
            .service(inner);
        svc.ready_and().await?.call(input).await
        svc.ready().await?.call(input).await
    }
}

+6 −6
Original line number Diff line number Diff line
@@ -11,18 +11,18 @@ use aws_hyper::Client;
use aws_sig_auth::signer::OperationSigningConfig;
use aws_types::region::Region;
use bytes::Bytes;
use http::header::{AUTHORIZATION, USER_AGENT, HOST};
use http::header::{AUTHORIZATION, HOST, USER_AGENT};
use http::{Response, Uri};
use smithy_http::body::SdkBody;
use smithy_http::operation;
use smithy_http::operation::Operation;
use smithy_http::response::ParseHttpResponse;
use std::convert::Infallible;
use std::sync::Arc;
use std::time::{Duration, UNIX_EPOCH};
use std::error::Error;
use std::fmt::{Display, Formatter};
use std::fmt;
use std::fmt::{Display, Formatter};
use std::sync::Arc;
use std::time::{Duration, UNIX_EPOCH};

#[derive(Clone)]
struct TestOperationParser;
@@ -76,8 +76,8 @@ fn test_operation() -> Operation<TestOperationParser, ()> {
#[tokio::test]
async fn e2e_test() {
    let expected_req = http::Request::builder()
        .header(USER_AGENT, "aws-sdk-rust/0.123.test os/windows/XPSP3 rust/1.50.0")
        .header("x-amz-user-agent", "aws-sdk-rust/0.123.test api/test-service/0.123 os/windows/XPSP3 rust/1.50.0")
        .header(USER_AGENT, "aws-sdk-rust/0.123.test os/windows/XPSP3 lang/rust/1.50.0")
        .header("x-amz-user-agent", "aws-sdk-rust/0.123.test api/test-service/0.123 os/windows/XPSP3 lang/rust/1.50.0")
        .header(HOST, "test-service.test-region.amazonaws.com")
        .header(AUTHORIZATION, "AWS4-HMAC-SHA256 Credential=access_key/20210215/test-region/test-service/aws4_request, SignedHeaders=host, Signature=b4bccc6f03b22e88b9e52a60314d4629c5d159a7cc2de25b1d687b3e5e480d2c")
        .header("x-amz-date", "20210215T184017Z")