1 1 | // Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2 2 | /*
|
3 3 | * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
4 4 | * SPDX-License-Identifier: Apache-2.0
|
5 5 | */
|
6 6 |
|
7 7 | #![allow(dead_code)]
|
8 8 |
|
9 9 | use aws_smithy_http::header::set_request_header_if_absent;
|
10 10 | use aws_smithy_types::config_bag::{Storable, StoreReplace};
|
11 - | use http::header::{HeaderName, CONTENT_LENGTH, CONTENT_TYPE};
|
11 + | use http_1x::header::{HeaderName, CONTENT_LENGTH, CONTENT_TYPE};
|
12 12 |
|
13 13 | /// Configuration for how default protocol headers are serialized
|
14 14 | #[derive(Clone, Debug, Default)]
|
15 15 | pub(crate) struct HeaderSerializationSettings {
|
16 16 | omit_default_content_length: bool,
|
17 17 | omit_default_content_type: bool,
|
18 18 | }
|
19 19 |
|
20 20 | impl HeaderSerializationSettings {
|
21 21 | /// Creates new [`HeaderSerializationSettings`]
|
22 22 | pub(crate) fn new() -> Self {
|
23 23 | Default::default()
|
24 24 | }
|
25 25 |
|
26 26 | /// Omit the default `Content-Length` header during serialization
|
27 27 | pub(crate) fn omit_default_content_length(self) -> Self {
|
28 28 | Self {
|
29 29 | omit_default_content_length: true,
|
30 30 | ..self
|
31 31 | }
|
32 32 | }
|
33 33 |
|
34 34 | /// Omit the default `Content-Type` header during serialization
|
35 35 | pub(crate) fn omit_default_content_type(self) -> Self {
|
36 36 | Self {
|
37 37 | omit_default_content_type: true,
|
38 38 | ..self
|
39 39 | }
|
40 40 | }
|
41 41 |
|
42 42 | /// Returns true if the given default header name should be serialized
|
43 43 | fn include_header(&self, header: &HeaderName) -> bool {
|
44 44 | (!self.omit_default_content_length || header != CONTENT_LENGTH) && (!self.omit_default_content_type || header != CONTENT_TYPE)
|
45 45 | }
|
46 46 |
|
47 47 | /// Sets a default header on the given request builder if it should be serialized
|
48 - | pub(crate) fn set_default_header(&self, mut request: http::request::Builder, header_name: HeaderName, value: &str) -> http::request::Builder {
|
48 + | pub(crate) fn set_default_header(
|
49 + | &self,
|
50 + | mut request: http_1x::request::Builder,
|
51 + | header_name: HeaderName,
|
52 + | value: &str,
|
53 + | ) -> http_1x::request::Builder {
|
49 54 | if self.include_header(&header_name) {
|
50 55 | request = set_request_header_if_absent(request, header_name, value);
|
51 56 | }
|
52 57 | request
|
53 58 | }
|
54 59 | }
|
55 60 |
|
56 61 | impl Storable for HeaderSerializationSettings {
|
57 62 | type Storer = StoreReplace<Self>;
|
58 63 | }
|
59 64 |
|
60 65 | #[cfg(test)]
|
61 66 | mod tests {
|
62 67 | use super::*;
|
63 68 |
|
64 69 | #[test]
|
65 70 | fn test_include_header() {
|
66 71 | let settings = HeaderSerializationSettings::default();
|
67 72 | assert!(settings.include_header(&CONTENT_LENGTH));
|
68 73 | assert!(settings.include_header(&CONTENT_TYPE));
|
69 74 |
|
70 75 | let settings = HeaderSerializationSettings::default().omit_default_content_length();
|
71 76 | assert!(!settings.include_header(&CONTENT_LENGTH));
|
72 77 | assert!(settings.include_header(&CONTENT_TYPE));
|
73 78 |
|
74 79 | let settings = HeaderSerializationSettings::default().omit_default_content_type();
|
75 80 | assert!(settings.include_header(&CONTENT_LENGTH));
|
76 81 | assert!(!settings.include_header(&CONTENT_TYPE));
|
77 82 |
|
78 83 | let settings = HeaderSerializationSettings::default()
|