Skip to content

Commit 0fca605

Browse files
committed
Fix some functionalities
1 parent 8ce52ff commit 0fca605

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

src/builder.rs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
extern crate reqwest;
2+
13
use reqwest::{
24
header::{HeaderMap, HeaderValue},
35
Client, Error, Method, Response,
@@ -20,13 +22,17 @@ pub struct Builder {
2022
// TODO: Embedded resources
2123
impl Builder {
2224
pub fn new(url: &str, schema: Option<String>) -> Self {
23-
Builder {
25+
let mut builder = Builder {
2426
method: Method::GET,
2527
url: url.to_string(),
2628
schema,
2729
headers: HeaderMap::new(),
2830
..Default::default()
29-
}
31+
};
32+
builder
33+
.headers
34+
.insert("Accept", HeaderValue::from_static("application/json"));
35+
builder
3036
}
3137

3238
pub fn auth(mut self, token: &str) -> Self {
@@ -60,16 +66,20 @@ impl Builder {
6066
}
6167

6268
pub fn limit(mut self, count: usize) -> Self {
63-
self.headers.append(
64-
"Content-Range",
69+
self.headers
70+
.insert("Range-Unit", HeaderValue::from_static("items"));
71+
self.headers.insert(
72+
"Range",
6573
HeaderValue::from_str(&format!("0-{}", count - 1)).unwrap(),
6674
);
6775
self
6876
}
6977

7078
pub fn range(mut self, low: usize, high: usize) -> Self {
71-
self.headers.append(
72-
"Content-Range",
79+
self.headers
80+
.insert("Range-Unit", HeaderValue::from_static("items"));
81+
self.headers.insert(
82+
"Range",
7383
HeaderValue::from_str(&format!("{}-{}", low, high)).unwrap(),
7484
);
7585
self
@@ -89,14 +99,14 @@ impl Builder {
8999
pub fn insert(mut self, body: &str) -> Self {
90100
self.method = Method::POST;
91101
self.headers
92-
.append("Prefer", HeaderValue::from_static("return=representation"));
102+
.insert("Prefer", HeaderValue::from_static("return=representation"));
93103
self.body = Some(body.to_string());
94104
self
95105
}
96106

97107
pub fn insert_csv(mut self, body: &str) -> Self {
98108
self.headers
99-
.append("Content-Type", HeaderValue::from_static("text/csv"));
109+
.insert("Content-Type", HeaderValue::from_static("text/csv"));
100110
self.insert(body)
101111
}
102112

@@ -148,9 +158,7 @@ impl Builder {
148158
pub async fn execute(mut self) -> Result<Response, Error> {
149159
let mut req = Client::new().request(self.method.clone(), &self.url);
150160
if let Some(schema) = self.schema {
151-
// NOTE: Upstream bug: RPC only works with Accept-Profile
152-
// Will change when upstream is fixed
153-
let key = if !self.is_rpc || self.method == Method::GET || self.method == Method::HEAD {
161+
let key = if self.method == Method::GET || self.method == Method::HEAD {
154162
"Accept-Profile"
155163
} else {
156164
"Content-Profile"
@@ -163,8 +171,9 @@ impl Builder {
163171
req = req.body(body);
164172
}
165173

166-
let resp = req.send().await?;
174+
req.send().await
175+
}
176+
}
167177

168-
Ok(resp)
169178
}
170179
}

0 commit comments

Comments
 (0)