Skip to content

Commit 4d6c2bd

Browse files
committed
stops sending the api key everywhere since it's stored in the client
1 parent ce373f0 commit 4d6c2bd

File tree

7 files changed

+13
-145
lines changed

7 files changed

+13
-145
lines changed

examples/cli-app-with-reqwest/src/main.rs

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ impl HttpClient for ReqwestClient {
2424
async fn request<Query, Body, Output>(
2525
&self,
2626
url: &str,
27-
apikey: Option<&str>,
2827
method: Method<Query, Body>,
2928
expected_status_code: u16,
3029
) -> Result<Output, Error>
@@ -39,21 +38,13 @@ impl HttpClient for ReqwestClient {
3938
let client = reqwest::Client::new();
4039
let mut builder = client.request(reqwest::Method::GET, url.as_str());
4140
builder = builder.header(reqwest::header::USER_AGENT, qualified_version());
42-
if let Some(apikey) = apikey {
43-
builder =
44-
builder.header(reqwest::header::AUTHORIZATION, format!("Bearer {apikey}"));
45-
}
4641
let req = builder.build().unwrap();
4742
client.execute(req).await.unwrap()
4843
}
4944
Method::Post { query, body } => {
5045
let url = add_query_parameters(url, query)?;
5146
let client = reqwest::Client::new();
5247
let mut builder = client.request(reqwest::Method::POST, url.as_str());
53-
if let Some(apikey) = apikey {
54-
builder =
55-
builder.header(reqwest::header::AUTHORIZATION, format!("Bearer {apikey}"));
56-
}
5748
builder = builder.header(reqwest::header::CONTENT_TYPE, "application/json");
5849
let req = builder.body(to_string(body).unwrap()).build().unwrap();
5950
client.execute(req).await.unwrap()
@@ -62,10 +53,6 @@ impl HttpClient for ReqwestClient {
6253
let url = add_query_parameters(url, query)?;
6354
let client = reqwest::Client::new();
6455
let mut builder = client.request(reqwest::Method::PATCH, url.as_str());
65-
if let Some(apikey) = apikey {
66-
builder =
67-
builder.header(reqwest::header::AUTHORIZATION, format!("Bearer {apikey}"));
68-
}
6956
builder = builder.header(reqwest::header::CONTENT_TYPE, "application/json");
7057
let req = builder.body(to_string(body).unwrap()).build().unwrap();
7158
client.execute(req).await.unwrap()
@@ -74,10 +61,6 @@ impl HttpClient for ReqwestClient {
7461
let url = add_query_parameters(url, query)?;
7562
let client = reqwest::Client::new();
7663
let mut builder = client.request(reqwest::Method::PUT, url.as_str());
77-
if let Some(apikey) = apikey {
78-
builder =
79-
builder.header(reqwest::header::AUTHORIZATION, format!("Bearer {apikey}"));
80-
}
8164
builder = builder.header(reqwest::header::CONTENT_TYPE, "application/json");
8265
let req = builder.body(to_string(body).unwrap()).build().unwrap();
8366
client.execute(req).await.unwrap()
@@ -86,10 +69,6 @@ impl HttpClient for ReqwestClient {
8669
let url = add_query_parameters(url, query)?;
8770
let client = reqwest::Client::new();
8871
let mut builder = client.request(reqwest::Method::DELETE, url.as_str());
89-
if let Some(apikey) = apikey {
90-
builder =
91-
builder.header(reqwest::header::AUTHORIZATION, format!("Bearer {apikey}"));
92-
}
9372
builder = builder.header(reqwest::header::CONTENT_TYPE, "application/json");
9473
let req = builder.build().unwrap();
9574
client.execute(req).await.unwrap()
@@ -115,7 +94,6 @@ impl HttpClient for ReqwestClient {
11594
>(
11695
&self,
11796
_url: &str,
118-
_apikey: Option<&str>,
11997
_method: Method<Query, Body>,
12098
_content_type: &str,
12199
_expected_status_code: u16,

src/client.rs

Lines changed: 11 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use crate::{
2020
pub struct Client<Http: HttpClient = DefaultHttpClient> {
2121
pub(crate) host: String,
2222
pub(crate) api_key: Option<String>,
23-
pub http_client: Http,
23+
pub(crate) http_client: Http,
2424
}
2525

2626
#[derive(Debug, Clone, Serialize, Deserialize)]
@@ -98,7 +98,6 @@ impl<Http: HttpClient> Client<Http> {
9898
self.http_client
9999
.request::<(), &MultiSearchQuery<Http>, MultiSearchResponse<T>>(
100100
&format!("{}/multi-search", &self.host),
101-
self.get_api_key(),
102101
Method::Post { body, query: () },
103102
200,
104103
)
@@ -260,7 +259,6 @@ impl<Http: HttpClient> Client<Http> {
260259
.http_client
261260
.request::<(), (), Value>(
262261
&format!("{}/indexes", self.host),
263-
self.get_api_key(),
264262
Method::Get { query: () },
265263
200,
266264
)
@@ -297,7 +295,6 @@ impl<Http: HttpClient> Client<Http> {
297295
.http_client
298296
.request::<&IndexesQuery<Http>, (), Value>(
299297
&format!("{}/indexes", self.host),
300-
self.get_api_key(),
301298
Method::Get {
302299
query: indexes_query,
303300
},
@@ -358,7 +355,6 @@ impl<Http: HttpClient> Client<Http> {
358355
self.http_client
359356
.request::<(), (), Value>(
360357
&format!("{}/indexes/{}", self.host, uid.as_ref()),
361-
self.get_api_key(),
362358
Method::Get { query: () },
363359
200,
364360
)
@@ -406,7 +402,6 @@ impl<Http: HttpClient> Client<Http> {
406402
self.http_client
407403
.request::<(), Value, TaskInfo>(
408404
&format!("{}/indexes", self.host),
409-
self.get_api_key(),
410405
Method::Post {
411406
query: (),
412407
body: json!({
@@ -426,7 +421,6 @@ impl<Http: HttpClient> Client<Http> {
426421
self.http_client
427422
.request::<(), (), TaskInfo>(
428423
&format!("{}/indexes/{}", self.host, uid.as_ref()),
429-
self.get_api_key(),
430424
Method::Delete { query: () },
431425
202,
432426
)
@@ -498,7 +492,6 @@ impl<Http: HttpClient> Client<Http> {
498492
self.http_client
499493
.request::<(), Vec<&SwapIndexes>, TaskInfo>(
500494
&format!("{}/swap-indexes", self.host),
501-
self.get_api_key(),
502495
Method::Post {
503496
query: (),
504497
body: indexes.into_iter().collect(),
@@ -527,7 +520,6 @@ impl<Http: HttpClient> Client<Http> {
527520
self.http_client
528521
.request::<(), (), ClientStats>(
529522
&format!("{}/stats", self.host),
530-
self.get_api_key(),
531523
Method::Get { query: () },
532524
200,
533525
)
@@ -555,7 +547,6 @@ impl<Http: HttpClient> Client<Http> {
555547
self.http_client
556548
.request::<(), (), Health>(
557549
&format!("{}/health", self.host),
558-
self.get_api_key(),
559550
Method::Get { query: () },
560551
200,
561552
)
@@ -614,7 +605,6 @@ impl<Http: HttpClient> Client<Http> {
614605
.http_client
615606
.request::<&KeysQuery, (), KeysResults>(
616607
&format!("{}/keys", self.host),
617-
self.get_api_key(),
618608
Method::Get { query: keys_query },
619609
200,
620610
)
@@ -647,7 +637,6 @@ impl<Http: HttpClient> Client<Http> {
647637
.http_client
648638
.request::<(), (), KeysResults>(
649639
&format!("{}/keys", self.host),
650-
self.get_api_key(),
651640
Method::Get { query: () },
652641
200,
653642
)
@@ -682,7 +671,6 @@ impl<Http: HttpClient> Client<Http> {
682671
self.http_client
683672
.request::<(), (), Key>(
684673
&format!("{}/keys/{}", self.host, key.as_ref()),
685-
self.get_api_key(),
686674
Method::Get { query: () },
687675
200,
688676
)
@@ -718,7 +706,6 @@ impl<Http: HttpClient> Client<Http> {
718706
self.http_client
719707
.request::<(), (), ()>(
720708
&format!("{}/keys/{}", self.host, key.as_ref()),
721-
self.get_api_key(),
722709
Method::Delete { query: () },
723710
204,
724711
)
@@ -753,7 +740,6 @@ impl<Http: HttpClient> Client<Http> {
753740
self.http_client
754741
.request::<(), &KeyBuilder, Key>(
755742
&format!("{}/keys", self.host),
756-
self.get_api_key(),
757743
Method::Post {
758744
query: (),
759745
body: key.as_ref(),
@@ -794,7 +780,6 @@ impl<Http: HttpClient> Client<Http> {
794780
self.http_client
795781
.request::<(), &KeyUpdater, Key>(
796782
&format!("{}/keys/{}", self.host, key.as_ref().key),
797-
self.get_api_key(),
798783
Method::Patch {
799784
body: key.as_ref(),
800785
query: (),
@@ -823,7 +808,6 @@ impl<Http: HttpClient> Client<Http> {
823808
self.http_client
824809
.request::<(), (), Version>(
825810
&format!("{}/version", self.host),
826-
self.get_api_key(),
827811
Method::Get { query: () },
828812
200,
829813
)
@@ -927,7 +911,6 @@ impl<Http: HttpClient> Client<Http> {
927911
self.http_client
928912
.request::<(), (), Task>(
929913
&format!("{}/tasks/{}", self.host, task_id.as_ref()),
930-
self.get_api_key(),
931914
Method::Get { query: () },
932915
200,
933916
)
@@ -960,7 +943,6 @@ impl<Http: HttpClient> Client<Http> {
960943
.http_client
961944
.request::<&TasksSearchQuery<Http>, (), TasksResults>(
962945
&format!("{}/tasks", self.host),
963-
self.get_api_key(),
964946
Method::Get { query: tasks_query },
965947
200,
966948
)
@@ -995,7 +977,6 @@ impl<Http: HttpClient> Client<Http> {
995977
.http_client
996978
.request::<&TasksCancelQuery<Http>, (), TaskInfo>(
997979
&format!("{}/tasks/cancel", self.host),
998-
self.get_api_key(),
999980
Method::Post {
1000981
query: filters,
1001982
body: (),
@@ -1033,7 +1014,6 @@ impl<Http: HttpClient> Client<Http> {
10331014
.http_client
10341015
.request::<&TasksDeleteQuery<Http>, (), TaskInfo>(
10351016
&format!("{}/tasks", self.host),
1036-
self.get_api_key(),
10371017
Method::Delete { query: filters },
10381018
200,
10391019
)
@@ -1064,7 +1044,6 @@ impl<Http: HttpClient> Client<Http> {
10641044
.http_client
10651045
.request::<(), (), TasksResults>(
10661046
&format!("{}/tasks", self.host),
1067-
self.get_api_key(),
10681047
Method::Get { query: () },
10691048
200,
10701049
)
@@ -1233,12 +1212,9 @@ mod tests {
12331212
.match_header("User-Agent", user_agent)
12341213
.create_async()
12351214
.await,
1236-
client.http_client.request::<(), (), ()>(
1237-
address,
1238-
None,
1239-
Method::Get { query: () },
1240-
200,
1241-
),
1215+
client
1216+
.http_client
1217+
.request::<(), (), ()>(address, Method::Get { query: () }, 200),
12421218
),
12431219
(
12441220
s.mock("POST", path)
@@ -1247,7 +1223,6 @@ mod tests {
12471223
.await,
12481224
client.http_client.request::<(), (), ()>(
12491225
address,
1250-
None,
12511226
Method::Post {
12521227
query: (),
12531228
body: {},
@@ -1262,7 +1237,6 @@ mod tests {
12621237
.await,
12631238
client.http_client.request::<(), (), ()>(
12641239
address,
1265-
None,
12661240
Method::Delete { query: () },
12671241
200,
12681242
),
@@ -1274,7 +1248,6 @@ mod tests {
12741248
.await,
12751249
client.http_client.request::<(), (), ()>(
12761250
address,
1277-
None,
12781251
Method::Put {
12791252
query: (),
12801253
body: (),
@@ -1289,7 +1262,6 @@ mod tests {
12891262
.await,
12901263
client.http_client.request::<(), (), ()>(
12911264
address,
1292-
None,
12931265
Method::Patch {
12941266
query: (),
12951267
body: (),
@@ -1344,7 +1316,7 @@ mod tests {
13441316
}
13451317

13461318
#[meilisearch_test]
1347-
async fn test_error_delete_key(mut client: Client, name: String) {
1319+
async fn test_error_delete_key(client: Client, name: String) {
13481320
// ==> accessing a key that does not exist
13491321
let error = client.delete_key("invalid_key").await.unwrap_err();
13501322
insta::assert_snapshot!(error, @"Meilisearch invalid_request: api_key_not_found: API key `invalid_key` not found.. https://docs.meilisearch.com/errors#api_key_not_found");
@@ -1355,8 +1327,9 @@ mod tests {
13551327
key.with_name(&name);
13561328
let key = client.create_key(key).await.unwrap();
13571329
let master_key = client.api_key.clone();
1358-
// this key has no right
1359-
client.api_key = Some(key.key.clone());
1330+
1331+
// create a new client with no right
1332+
let client = Client::new(client.host, Some(key.key.clone()));
13601333
// with a wrong key
13611334
let error = client.delete_key("invalid_key").await.unwrap_err();
13621335
insta::assert_snapshot!(error, @"Meilisearch auth: invalid_api_key: The provided API key is invalid.. https://docs.meilisearch.com/errors#invalid_api_key");
@@ -1381,7 +1354,7 @@ mod tests {
13811354
));
13821355

13831356
// cleanup
1384-
client.api_key = master_key;
1357+
let client = Client::new(client.host, master_key);
13851358
client.delete_key(key).await.unwrap();
13861359
}
13871360

@@ -1409,7 +1382,7 @@ mod tests {
14091382
}
14101383

14111384
#[meilisearch_test]
1412-
async fn test_error_create_key(mut client: Client, name: String) {
1385+
async fn test_error_create_key(client: Client, name: String) {
14131386
// ==> Invalid index name
14141387
/* TODO: uncomment once meilisearch fix this bug: https://github.com/meilisearch/meilisearch/issues/2158
14151388
let mut key = KeyBuilder::new();
@@ -1432,7 +1405,7 @@ mod tests {
14321405

14331406
// backup the master key for cleanup at the end of the test
14341407
let master_client = client.clone();
1435-
client.api_key = Some(no_right_key.key.clone());
1408+
let client = Client::new(&master_client.host, Some(no_right_key.key.clone()));
14361409

14371410
let mut key = KeyBuilder::new();
14381411
key.with_name(format!("{name}_2"));

src/dumps.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ impl<Http: HttpClient> Client<Http> {
7676
self.http_client
7777
.request::<(), (), TaskInfo>(
7878
&format!("{}/dumps", self.host),
79-
self.get_api_key(),
8079
Method::Post {
8180
query: (),
8281
body: (),

src/features.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ impl<'a, Http: HttpClient> ExperimentalFeatures<'a, Http> {
6868
.http_client
6969
.request::<(), (), ExperimentalFeaturesResult>(
7070
&format!("{}/experimental-features", self.client.host),
71-
self.client.get_api_key(),
7271
Method::Get { query: () },
7372
200,
7473
)
@@ -95,7 +94,6 @@ impl<'a, Http: HttpClient> ExperimentalFeatures<'a, Http> {
9594
.http_client
9695
.request::<(), &Self, ExperimentalFeaturesResult>(
9796
&format!("{}/experimental-features", self.client.host),
98-
self.client.get_api_key(),
9997
Method::Patch {
10098
query: (),
10199
body: self,

0 commit comments

Comments
 (0)