1#![cfg_attr(docsrs, feature(doc_auto_cfg))]
8#![allow(clippy::derive_partial_eq_without_eq)]
13#![warn(
14 missing_docs,
15 rustdoc::missing_crate_level_docs,
16 missing_debug_implementations,
17 rust_2018_idioms,
18 unreachable_pub
19)]
20
21use std::fmt;
22
23pub mod sign;
24
25mod date_time;
26
27#[cfg(feature = "sign-eventstream")]
28pub mod event_stream;
29
30#[cfg(feature = "sign-http")]
31pub mod http_request;
32
33#[derive(Debug, Eq, PartialEq, Copy, Clone)]
35#[non_exhaustive]
36pub enum SignatureVersion {
37 V4,
39 V4a,
41}
42
43impl fmt::Display for SignatureVersion {
44 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
45 match self {
46 SignatureVersion::V4 => write!(f, "SigV4"),
47 SignatureVersion::V4a => write!(f, "SigV4a"),
48 }
49 }
50}
51
52#[derive(Debug)]
58pub struct SigningOutput<T> {
59 output: T,
60 signature: String,
61}
62
63impl<T> SigningOutput<T> {
64 pub fn new(output: T, signature: String) -> Self {
66 Self { output, signature }
67 }
68
69 pub fn output(&self) -> &T {
71 &self.output
72 }
73
74 pub fn signature(&self) -> &str {
76 &self.signature
77 }
78
79 pub fn into_parts(self) -> (T, String) {
81 (self.output, self.signature)
82 }
83}