summaryrefslogtreecommitdiffhomepage
path: root/mullvad-api/src/device.rs
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2023-10-18 19:23:03 +0200
committerDavid Lönnhager <david.l@mullvad.net>2023-10-19 16:51:59 +0200
commit4e5d08ebbc2cb49304ff0c2f4c77ecc11be30c79 (patch)
treed6458f600d151347b99f52a0082157ee52b7e37f /mullvad-api/src/device.rs
parent58b09e84af5a921af3b4db213d717bc2b0a03770 (diff)
downloadmullvadvpn-4e5d08ebbc2cb49304ff0c2f4c77ecc11be30c79.tar.xz
mullvadvpn-4e5d08ebbc2cb49304ff0c2f4c77ecc11be30c79.zip
Fold all access token requests into a single request
Diffstat (limited to 'mullvad-api/src/device.rs')
-rw-r--r--mullvad-api/src/device.rs30
1 files changed, 23 insertions, 7 deletions
diff --git a/mullvad-api/src/device.rs b/mullvad-api/src/device.rs
index 585e863ccf..3d8913e366 100644
--- a/mullvad-api/src/device.rs
+++ b/mullvad-api/src/device.rs
@@ -54,17 +54,21 @@ impl DevicesProxy {
let access_proxy = self.handle.token_store.clone();
async move {
+ let access_token = access_proxy.get_token(&account).await?;
+
let response = rest::send_json_request(
&factory,
service,
&format!("{ACCOUNTS_URL_PREFIX}/devices"),
Method::POST,
&submission,
- Some((access_proxy, account)),
+ Some(access_token),
&[StatusCode::CREATED],
)
.await;
+ access_proxy.check_response(&account, &response);
+
let response: DeviceResponse = rest::deserialize_body(response?).await?;
let DeviceResponse {
id,
@@ -102,16 +106,19 @@ impl DevicesProxy {
let factory = self.handle.factory.clone();
let access_proxy = self.handle.token_store.clone();
async move {
+ let access_token = access_proxy.get_token(&account).await?;
let response = rest::send_request(
&factory,
service,
&format!("{ACCOUNTS_URL_PREFIX}/devices/{id}"),
Method::GET,
- Some((access_proxy, account)),
+ Some(access_token),
&[StatusCode::OK],
)
.await;
- rest::deserialize_body(response?).await
+ access_proxy.check_response(&account, &response);
+ let device = rest::deserialize_body(response?).await?;
+ Ok(device)
}
}
@@ -123,16 +130,19 @@ impl DevicesProxy {
let factory = self.handle.factory.clone();
let access_proxy = self.handle.token_store.clone();
async move {
+ let access_token = access_proxy.get_token(&account).await?;
let response = rest::send_request(
&factory,
service,
&format!("{ACCOUNTS_URL_PREFIX}/devices"),
Method::GET,
- Some((access_proxy, account)),
+ Some(access_token),
&[StatusCode::OK],
)
.await;
- rest::deserialize_body(response?).await
+ access_proxy.check_response(&account, &response);
+ let devices = rest::deserialize_body(response?).await?;
+ Ok(devices)
}
}
@@ -145,15 +155,17 @@ impl DevicesProxy {
let factory = self.handle.factory.clone();
let access_proxy = self.handle.token_store.clone();
async move {
+ let access_token = access_proxy.get_token(&account).await?;
let response = rest::send_request(
&factory,
service,
&format!("{ACCOUNTS_URL_PREFIX}/devices/{id}"),
Method::DELETE,
- Some((access_proxy, account)),
+ Some(access_token),
&[StatusCode::NO_CONTENT],
)
.await;
+ access_proxy.check_response(&account, &response);
response?;
Ok(())
@@ -178,17 +190,21 @@ impl DevicesProxy {
let access_proxy = self.handle.token_store.clone();
async move {
+ let access_token = access_proxy.get_token(&account).await?;
+
let response = rest::send_json_request(
&factory,
service,
&format!("{ACCOUNTS_URL_PREFIX}/devices/{id}/pubkey"),
Method::PUT,
&req_body,
- Some((access_proxy, account)),
+ Some(access_token),
&[StatusCode::OK],
)
.await;
+ access_proxy.check_response(&account, &response);
+
let updated_device: DeviceResponse = rest::deserialize_body(response?).await?;
let DeviceResponse {
ipv4_address,