musdk_common/
common_http.rs1pub mod header;
2pub mod status;
3
4use core::fmt;
5use std::borrow::Cow;
6
7use borsh::{BorshDeserialize, BorshSerialize};
8
9pub use header::Header;
10pub use status::Status;
11
12pub type Url = String;
14pub type Body<'a> = Cow<'a, [u8]>;
15
16#[derive(PartialEq, PartialOrd, Copy, Clone, Eq, Ord, Hash, BorshSerialize, BorshDeserialize)]
18pub struct Version(Http);
19
20impl Version {
21 pub const HTTP_09: Version = Version(Http::Http09);
23
24 pub const HTTP_10: Version = Version(Http::Http10);
26
27 pub const HTTP_11: Version = Version(Http::Http11);
29
30 pub const HTTP_2: Version = Version(Http::H2);
32
33 pub const HTTP_3: Version = Version(Http::H3);
35}
36
37#[derive(PartialEq, PartialOrd, Copy, Clone, Eq, Ord, Hash, BorshSerialize, BorshDeserialize)]
38enum Http {
39 Http09,
40 Http10,
41 Http11,
42 H2,
43 H3,
44}
45
46impl Default for Version {
47 #[inline]
48 fn default() -> Version {
49 Version::HTTP_11
50 }
51}
52
53impl fmt::Debug for Version {
54 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
55 use self::Http::*;
56
57 f.write_str(match self.0 {
58 Http09 => "HTTP/0.9",
59 Http10 => "HTTP/1.0",
60 Http11 => "HTTP/1.1",
61 H2 => "HTTP/2.0",
62 H3 => "HTTP/3.0",
63 })
64 }
65}
66
67#[derive(Debug, BorshSerialize, BorshDeserialize, Clone)]
68pub enum HttpMethod {
69 Get,
70 Head,
71 Post,
72 Put,
73 Patch,
74 Delete,
75 Options,
76}