1use reqwest::StatusCode;
2
3use crate::api::Version;
4
5pub const SEND_DEFAULT_HOST: &str = "https://send.vis.ee/";
7
8pub const SEND_DEFAULT_EXPIRE_TIME: usize = 24 * 60 * 60;
10
11pub const HTTP_STATUS_EXPIRED: StatusCode = StatusCode::NOT_FOUND;
13
14pub const HTTP_STATUS_UNAUTHORIZED: StatusCode = StatusCode::UNAUTHORIZED;
16
17pub const UPLOAD_SIZE_MAX_RECOMMENDED: u64 = ((1024 * 1024 * 1024) as f64 * 2.5f64) as u64;
19
20#[cfg(feature = "send2")]
22const SEND2_MAX_UPLOAD_SIZE: u64 = 1024 * 1024 * 1024 * 2;
23
24#[cfg(feature = "send3")]
26const SEND3_MAX_UPLOAD_SIZE: u64 = ((1024 * 1024 * 1024) as f64 * 2.5f64) as u64;
27
28#[cfg(feature = "send3")]
30const SEND3_MAX_UPLOAD_SIZE_AUTH: u64 = SEND3_MAX_UPLOAD_SIZE;
31
32#[cfg(feature = "send2")]
34const SEND2_DEFAULT_DOWNLOADS: usize = 20;
35
36#[cfg(feature = "send3")]
38const SEND3_DEFAULT_DOWNLOADS: usize = 1;
39
40#[cfg(feature = "send3")]
42const SEND3_DEFAULT_DOWNLOADS_AUTH: usize = SEND3_DEFAULT_DOWNLOADS;
43
44#[cfg(feature = "send2")]
46const SEND2_MAX_DOWNLOADS: [usize; 6] = [1, 2, 3, 4, 5, 20];
47
48#[cfg(feature = "send3")]
50const SEND3_MAX_DOWNLOADS: [usize; 6] = [1, 2, 3, 4, 5, 20];
51
52#[cfg(feature = "send3")]
54const SEND3_MAX_DOWNLOADS_AUTH: [usize; 8] = [1, 2, 3, 4, 5, 20, 50, 100];
55
56pub const SEND_EXPIRY_DEFAULT: usize = 86_400;
58
59#[cfg(feature = "send2")]
61const SEND2_EXPIRY_MAX: [usize; 1] = [86_400];
62
63#[cfg(feature = "send3")]
66const SEND3_EXPIRY_MAX: [usize; 4] = [300, 3600, 86_400, 604_800];
67
68#[cfg(feature = "send3")]
70const SEND3_EXPIRY_MAX_AUTH: [usize; 4] = SEND3_EXPIRY_MAX;
71
72pub const TAG_LEN: usize = 16;
74
75pub const ECE_RECORD_SIZE: u32 = 1024 * 64;
77
78pub fn upload_size_max(version: Version, _auth: bool) -> u64 {
80 match version {
81 #[cfg(feature = "send2")]
82 Version::V2 => SEND2_MAX_UPLOAD_SIZE,
83 #[cfg(feature = "send3")]
84 Version::V3 => {
85 if _auth {
86 SEND3_MAX_UPLOAD_SIZE_AUTH
87 } else {
88 SEND3_MAX_UPLOAD_SIZE
89 }
90 }
91 }
92}
93
94pub fn downloads_default(version: Version, _auth: bool) -> usize {
98 match version {
99 #[cfg(feature = "send2")]
100 Version::V2 => SEND2_DEFAULT_DOWNLOADS,
101 #[cfg(feature = "send3")]
102 Version::V3 => {
103 if _auth {
104 SEND3_DEFAULT_DOWNLOADS_AUTH
105 } else {
106 SEND3_DEFAULT_DOWNLOADS
107 }
108 }
109 }
110}
111
112pub fn downloads_max(version: Version, _auth: bool) -> &'static [usize] {
116 match version {
117 #[cfg(feature = "send2")]
118 Version::V2 => &SEND2_MAX_DOWNLOADS,
119 #[cfg(feature = "send3")]
120 Version::V3 => {
121 if _auth {
122 &SEND3_MAX_DOWNLOADS_AUTH
123 } else {
124 &SEND3_MAX_DOWNLOADS
125 }
126 }
127 }
128}
129
130pub fn expiry_max(version: Version, _auth: bool) -> &'static [usize] {
134 match version {
135 #[cfg(feature = "send2")]
136 Version::V2 => &SEND2_EXPIRY_MAX,
137 #[cfg(feature = "send3")]
138 Version::V3 => {
139 if _auth {
140 &SEND3_EXPIRY_MAX_AUTH
141 } else {
142 &SEND3_EXPIRY_MAX
143 }
144 }
145 }
146}