diff options
| author | David Lönnhager <david.l@mullvad.net> | 2023-10-18 19:23:03 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2023-10-19 16:51:59 +0200 |
| commit | 4e5d08ebbc2cb49304ff0c2f4c77ecc11be30c79 (patch) | |
| tree | d6458f600d151347b99f52a0082157ee52b7e37f /mullvad-api/src/device.rs | |
| parent | 58b09e84af5a921af3b4db213d717bc2b0a03770 (diff) | |
| download | mullvadvpn-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.rs | 30 |
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, |
