-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathmultipart.rs
More file actions
178 lines (169 loc) · 12.7 KB
/
Copy pathmultipart.rs
File metadata and controls
178 lines (169 loc) · 12.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#![allow(unused_imports)]
#[cfg(feature = "multipart")]
use feignhttp::{multipart, post};
use std::fs::File;
use std::path::PathBuf;
#[cfg(feature = "multipart")]
#[post("https://httpbin.org/post")]
async fn upload_file(
#[file("file")] file: PathBuf,
#[part("name")] name: &str,
#[part("desc")] desc: &str,
) -> feignhttp::Result<String> {
}
#[cfg(feature = "multipart")]
#[post("https://httpbin.org/post")]
async fn upload_file_with_content_type(
#[file("file", content_type = "image/png")] file: File,
#[part("name")] name: &str,
#[part("desc")] desc: &str,
) -> feignhttp::Result<String> {
}
#[cfg(feature = "multipart")]
#[cfg(feature = "multipart")]
#[post("https://httpbin.org/post")]
async fn upload_bytes_with_content_type(
#[file("file", filename = "logo.svg", content_type = "image/svg+xml")] file: Vec<u8>,
#[file("data", content_type = "text/plain")] data: Vec<u8>,
#[part("name")] name: &str,
) -> feignhttp::Result<String> {
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
#[cfg(feature = "multipart")]
{
let r = upload_file(
PathBuf::from("examples/crab.png"),
"test.png",
"a test file",
)
.await?;
println!("upload result: {}", r);
let r = upload_file_with_content_type(
File::open("examples/crab.png").unwrap(),
"test.png",
"a test file",
)
.await?;
println!("upload_file_with_content_type result: {}", r);
// The Vec<u8> from https://www.rust-lang.org/static/images/rust-logo-blk.svg.
let file_u8 = vec![
60, 115, 118, 103, 32, 104, 101, 105, 103, 104, 116, 61, 34, 49, 52, 52, 34, 32, 119,
105, 100, 116, 104, 61, 34, 49, 52, 52, 34, 32, 120, 109, 108, 110, 115, 61, 34, 104,
116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 50, 48,
48, 48, 47, 115, 118, 103, 34, 62, 60, 112, 97, 116, 104, 32, 100, 61, 34, 109, 55, 49,
46, 48, 53, 32, 50, 51, 46, 54, 56, 99, 45, 50, 54, 46, 48, 54, 32, 48, 45, 52, 55, 46,
50, 55, 32, 50, 49, 46, 50, 50, 45, 52, 55, 46, 50, 55, 32, 52, 55, 46, 50, 55, 115,
50, 49, 46, 50, 50, 32, 52, 55, 46, 50, 55, 32, 52, 55, 46, 50, 55, 32, 52, 55, 46, 50,
55, 32, 52, 55, 46, 50, 55, 45, 50, 49, 46, 50, 50, 32, 52, 55, 46, 50, 55, 45, 52, 55,
46, 50, 55, 45, 50, 49, 46, 50, 50, 45, 52, 55, 46, 50, 55, 45, 52, 55, 46, 50, 55, 45,
52, 55, 46, 50, 55, 122, 109, 45, 46, 48, 55, 32, 52, 46, 50, 97, 51, 46, 49, 32, 51,
46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 51, 46, 48, 50, 32, 51, 46, 49, 49, 32, 51, 46,
49, 49, 32, 51, 46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 45, 54, 46, 50, 50, 32, 48, 32,
51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 51, 46, 50, 45, 51, 46,
49, 49, 122, 109, 55, 46, 49, 50, 32, 53, 46, 49, 50, 97, 51, 56, 46, 50, 55, 32, 51,
56, 46, 50, 55, 32, 48, 32, 48, 32, 49, 32, 50, 54, 46, 50, 32, 49, 56, 46, 54, 54,
108, 45, 51, 46, 54, 55, 32, 56, 46, 50, 56, 99, 45, 46, 54, 51, 32, 49, 46, 52, 51,
46, 48, 50, 32, 51, 46, 49, 49, 32, 49, 46, 52, 52, 32, 51, 46, 55, 53, 108, 55, 46,
48, 54, 32, 51, 46, 49, 51, 97, 51, 56, 46, 50, 55, 32, 51, 56, 46, 50, 55, 32, 48, 32,
48, 32, 49, 32, 46, 48, 56, 32, 54, 46, 54, 52, 104, 45, 51, 46, 57, 51, 99, 45, 46,
51, 57, 32, 48, 45, 46, 53, 53, 46, 50, 54, 45, 46, 53, 53, 46, 54, 52, 118, 49, 46,
56, 99, 48, 32, 52, 46, 50, 52, 45, 50, 46, 51, 57, 32, 53, 46, 49, 55, 45, 52, 46, 52,
57, 32, 53, 46, 52, 45, 50, 32, 46, 50, 51, 45, 52, 46, 50, 49, 45, 46, 56, 52, 45, 52,
46, 52, 57, 45, 50, 46, 48, 54, 45, 49, 46, 49, 56, 45, 54, 46, 54, 51, 45, 51, 46, 49,
52, 45, 56, 46, 48, 52, 45, 54, 46, 50, 52, 45, 49, 48, 46, 52, 57, 32, 51, 46, 56, 53,
45, 50, 46, 52, 52, 32, 55, 46, 56, 53, 45, 54, 46, 48, 53, 32, 55, 46, 56, 53, 45, 49,
48, 46, 56, 55, 32, 48, 45, 53, 46, 50, 49, 45, 51, 46, 53, 55, 45, 56, 46, 52, 57, 45,
54, 45, 49, 48, 46, 49, 45, 51, 46, 52, 50, 45, 50, 46, 50, 53, 45, 55, 46, 50, 45, 50,
46, 55, 45, 56, 46, 50, 50, 45, 50, 46, 55, 104, 45, 52, 48, 46, 54, 97, 51, 56, 46,
50, 55, 32, 51, 56, 46, 50, 55, 32, 48, 32, 48, 32, 49, 32, 50, 49, 46, 52, 49, 45, 49,
50, 46, 48, 56, 108, 52, 46, 55, 57, 32, 53, 46, 48, 50, 99, 49, 46, 48, 56, 32, 49,
46, 49, 51, 32, 50, 46, 56, 55, 32, 49, 46, 49, 56, 32, 52, 32, 46, 48, 57, 122, 109,
45, 52, 52, 46, 50, 32, 50, 51, 46, 48, 50, 97, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32,
48, 32, 48, 32, 49, 32, 51, 46, 48, 50, 32, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 51,
46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 45, 54, 46, 50, 50, 32, 48, 32, 51, 46, 49, 49,
32, 51, 46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 51, 46, 50, 45, 51, 46, 49, 49, 122,
109, 55, 52, 46, 49, 53, 46, 49, 52, 97, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 48,
32, 48, 32, 49, 32, 51, 46, 48, 50, 32, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 51, 46,
49, 49, 32, 48, 32, 48, 32, 49, 32, 45, 54, 46, 50, 50, 32, 48, 32, 51, 46, 49, 49, 32,
51, 46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 51, 46, 50, 45, 51, 46, 49, 49, 122, 109,
45, 54, 56, 46, 50, 57, 46, 53, 104, 53, 46, 52, 50, 118, 50, 52, 46, 52, 52, 104, 45,
49, 48, 46, 57, 52, 97, 51, 56, 46, 50, 55, 32, 51, 56, 46, 50, 55, 32, 48, 32, 48, 32,
49, 32, 45, 49, 46, 50, 52, 45, 49, 52, 46, 54, 49, 108, 54, 46, 55, 45, 50, 46, 57,
56, 99, 49, 46, 52, 51, 45, 46, 54, 52, 32, 50, 46, 48, 56, 45, 50, 46, 51, 49, 32, 49,
46, 52, 52, 45, 51, 46, 55, 52, 122, 109, 50, 50, 46, 54, 50, 46, 50, 54, 104, 49, 50,
46, 57, 49, 99, 46, 54, 55, 32, 48, 32, 52, 46, 55, 49, 46, 55, 55, 32, 52, 46, 55, 49,
32, 51, 46, 56, 32, 48, 32, 50, 46, 53, 49, 45, 51, 46, 49, 32, 51, 46, 52, 49, 45, 53,
46, 54, 53, 32, 51, 46, 52, 49, 104, 45, 49, 49, 46, 57, 56, 122, 109, 48, 32, 49, 55,
46, 53, 54, 104, 57, 46, 56, 57, 99, 46, 57, 32, 48, 32, 52, 46, 56, 51, 46, 50, 54,
32, 54, 46, 48, 56, 32, 53, 46, 50, 56, 46, 51, 57, 32, 49, 46, 53, 52, 32, 49, 46, 50,
54, 32, 54, 46, 53, 54, 32, 49, 46, 56, 53, 32, 56, 46, 49, 55, 46, 53, 57, 32, 49, 46,
56, 32, 50, 46, 57, 56, 32, 53, 46, 52, 32, 53, 46, 53, 51, 32, 53, 46, 52, 104, 49,
54, 46, 49, 52, 97, 51, 56, 46, 50, 55, 32, 51, 56, 46, 50, 55, 32, 48, 32, 48, 32, 49,
32, 45, 51, 46, 53, 52, 32, 52, 46, 49, 108, 45, 54, 46, 53, 55, 45, 49, 46, 52, 49,
99, 45, 49, 46, 53, 51, 45, 46, 51, 51, 45, 51, 46, 48, 52, 46, 54, 53, 45, 51, 46, 51,
55, 32, 50, 46, 49, 56, 108, 45, 49, 46, 53, 54, 32, 55, 46, 50, 56, 97, 51, 56, 46,
50, 55, 32, 51, 56, 46, 50, 55, 32, 48, 32, 48, 32, 49, 32, 45, 51, 49, 46, 57, 49, 45,
46, 49, 53, 108, 45, 49, 46, 53, 54, 45, 55, 46, 50, 56, 99, 45, 46, 51, 51, 45, 49,
46, 53, 51, 45, 49, 46, 56, 51, 45, 50, 46, 53, 49, 45, 51, 46, 51, 54, 45, 50, 46, 49,
56, 108, 45, 54, 46, 52, 51, 32, 49, 46, 51, 56, 97, 51, 56, 46, 50, 55, 32, 51, 56,
46, 50, 55, 32, 48, 32, 48, 32, 49, 32, 45, 51, 46, 51, 50, 45, 51, 46, 57, 50, 104,
51, 49, 46, 50, 55, 99, 46, 51, 53, 32, 48, 32, 46, 53, 57, 45, 46, 48, 54, 46, 53, 57,
45, 46, 51, 57, 118, 45, 49, 49, 46, 48, 54, 99, 48, 45, 46, 51, 50, 45, 46, 50, 52,
45, 46, 51, 57, 45, 46, 53, 57, 45, 46, 51, 57, 104, 45, 57, 46, 49, 53, 122, 109, 45,
49, 52, 46, 52, 51, 32, 50, 53, 46, 51, 51, 97, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32,
48, 32, 48, 32, 49, 32, 51, 46, 48, 50, 32, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 51,
46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 45, 54, 46, 50, 50, 32, 48, 32, 51, 46, 49, 49,
32, 51, 46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 51, 46, 50, 45, 51, 46, 49, 49, 122,
109, 52, 54, 46, 48, 53, 46, 49, 52, 97, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 48,
32, 48, 32, 49, 32, 51, 46, 48, 50, 32, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 51, 46,
49, 49, 32, 48, 32, 48, 32, 49, 32, 45, 54, 46, 50, 50, 32, 48, 32, 51, 46, 49, 49, 32,
51, 46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 51, 46, 50, 45, 51, 46, 49, 49, 122, 34,
47, 62, 60, 112, 97, 116, 104, 32, 100, 61, 34, 109, 49, 49, 53, 46, 54, 56, 32, 55,
48, 46, 57, 53, 97, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 32, 48, 32, 48, 32, 49,
32, 45, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 32, 52, 52,
46, 54, 51, 32, 48, 32, 48, 32, 49, 32, 45, 52, 52, 46, 54, 51, 45, 52, 52, 46, 54, 51,
32, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 32, 48, 32, 48, 32, 49, 32, 52, 52, 46,
54, 51, 45, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 32, 48,
32, 48, 32, 49, 32, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 122, 109, 45, 46, 56,
52, 45, 52, 46, 51, 49, 32, 54, 46, 57, 54, 32, 52, 46, 51, 49, 45, 54, 46, 57, 54, 32,
52, 46, 51, 49, 32, 53, 46, 57, 56, 32, 53, 46, 53, 57, 45, 55, 46, 54, 54, 32, 50, 46,
56, 55, 32, 52, 46, 55, 56, 32, 54, 46, 54, 53, 45, 56, 46, 48, 57, 32, 49, 46, 51, 50,
32, 51, 46, 52, 32, 55, 46, 52, 54, 45, 56, 46, 49, 57, 45, 46, 50, 57, 32, 49, 46, 56,
56, 32, 55, 46, 57, 56, 45, 55, 46, 57, 56, 45, 49, 46, 56, 56, 46, 50, 57, 32, 56, 46,
49, 57, 45, 55, 46, 52, 54, 45, 51, 46, 52, 45, 49, 46, 51, 50, 32, 56, 46, 48, 57, 45,
54, 46, 54, 53, 45, 52, 46, 55, 56, 45, 50, 46, 56, 55, 32, 55, 46, 54, 54, 45, 53, 46,
53, 57, 45, 53, 46, 57, 56, 45, 52, 46, 51, 49, 32, 54, 46, 57, 54, 45, 52, 46, 51, 49,
45, 54, 46, 57, 54, 45, 53, 46, 53, 57, 32, 53, 46, 57, 56, 45, 50, 46, 56, 55, 45, 55,
46, 54, 54, 45, 54, 46, 54, 53, 32, 52, 46, 55, 56, 45, 49, 46, 51, 50, 45, 56, 46, 48,
57, 45, 55, 46, 52, 54, 32, 51, 46, 52, 46, 50, 57, 45, 56, 46, 49, 57, 45, 55, 46, 57,
56, 32, 49, 46, 56, 56, 32, 49, 46, 56, 56, 45, 55, 46, 57, 56, 45, 56, 46, 49, 57, 46,
50, 57, 32, 51, 46, 52, 45, 55, 46, 52, 54, 45, 56, 46, 48, 57, 45, 49, 46, 51, 50, 32,
52, 46, 55, 56, 45, 54, 46, 54, 53, 45, 55, 46, 54, 54, 45, 50, 46, 56, 55, 32, 53, 46,
57, 56, 45, 53, 46, 53, 57, 45, 54, 46, 57, 54, 45, 52, 46, 51, 49, 32, 54, 46, 57, 54,
45, 52, 46, 51, 49, 45, 53, 46, 57, 56, 45, 53, 46, 53, 57, 32, 55, 46, 54, 54, 45, 50,
46, 56, 55, 45, 52, 46, 55, 56, 45, 54, 46, 54, 53, 32, 56, 46, 48, 57, 45, 49, 46, 51,
50, 45, 51, 46, 52, 45, 55, 46, 52, 54, 32, 56, 46, 49, 57, 46, 50, 57, 45, 49, 46, 56,
56, 45, 55, 46, 57, 56, 32, 55, 46, 57, 56, 32, 49, 46, 56, 56, 45, 46, 50, 57, 45, 56,
46, 49, 57, 32, 55, 46, 52, 54, 32, 51, 46, 52, 32, 49, 46, 51, 50, 45, 56, 46, 48, 57,
32, 54, 46, 54, 53, 32, 52, 46, 55, 56, 32, 50, 46, 56, 55, 45, 55, 46, 54, 54, 32, 53,
46, 53, 57, 32, 53, 46, 57, 56, 32, 52, 46, 51, 49, 45, 54, 46, 57, 54, 32, 52, 46, 51,
49, 32, 54, 46, 57, 54, 32, 53, 46, 53, 57, 45, 53, 46, 57, 56, 32, 50, 46, 56, 55, 32,
55, 46, 54, 54, 32, 54, 46, 54, 53, 45, 52, 46, 55, 56, 32, 49, 46, 51, 50, 32, 56, 46,
48, 57, 32, 55, 46, 52, 54, 45, 51, 46, 52, 45, 46, 50, 57, 32, 56, 46, 49, 57, 32, 55,
46, 57, 56, 45, 49, 46, 56, 56, 45, 49, 46, 56, 56, 32, 55, 46, 57, 56, 32, 56, 46, 49,
57, 45, 46, 50, 57, 45, 51, 46, 52, 32, 55, 46, 52, 54, 32, 56, 46, 48, 57, 32, 49, 46,
51, 50, 45, 52, 46, 55, 56, 32, 54, 46, 54, 53, 32, 55, 46, 54, 54, 32, 50, 46, 56, 55,
122, 34, 32, 102, 105, 108, 108, 45, 114, 117, 108, 101, 61, 34, 101, 118, 101, 110,
111, 100, 100, 34, 32, 115, 116, 114, 111, 107, 101, 61, 34, 35, 48, 48, 48, 34, 32,
115, 116, 114, 111, 107, 101, 45, 108, 105, 110, 101, 99, 97, 112, 61, 34, 114, 111,
117, 110, 100, 34, 32, 115, 116, 114, 111, 107, 101, 45, 108, 105, 110, 101, 106, 111,
105, 110, 61, 34, 114, 111, 117, 110, 100, 34, 32, 115, 116, 114, 111, 107, 101, 45,
119, 105, 100, 116, 104, 61, 34, 51, 34, 47, 62, 60, 47, 115, 118, 103, 62,
];
let text_u8 = vec![97, 97, 97];
let r = upload_bytes_with_content_type(file_u8, text_u8, "u8_data").await?;
println!("upload bytes with content type result: {}", r);
}
Ok(())
}