GetAvailableAccounts / GetAvailableNetworks

This commit is contained in:
mbecker20
2023-08-06 23:13:00 -04:00
parent 0d37600cda
commit 6884453b0f
7 changed files with 97 additions and 5 deletions

View File

@@ -25,7 +25,6 @@ mod server;
#[resolver_target(State)]
#[resolver_args(RequestUser)]
#[serde(tag = "type", content = "params")]
#[allow(clippy::enum_variant_names, clippy::large_enum_variant)]
enum ExecuteRequest {
// ==== SERVER ====
PruneContainers(PruneDockerContainers),

View File

@@ -32,7 +32,6 @@ mod user;
#[resolver_target(State)]
#[resolver_args(RequestUser)]
#[serde(tag = "type", content = "params")]
#[allow(clippy::enum_variant_names, clippy::large_enum_variant)]
enum ReadRequest {
GetVersion(GetVersion),
GetUser(GetUser),
@@ -53,6 +52,8 @@ enum ReadRequest {
GetDockerNetworks(GetDockerNetworks),
GetServerActionState(GetServerActionState),
GetHistoricalServerStats(GetHistoricalServerStats),
GetAvailableAccounts(GetAvailableAccounts),
GetAvailableNetworks(GetAvailableNetworks),
// ==== DEPLOYMENT ====
GetDeploymentsSummary(GetDeploymentsSummary),

View File

@@ -13,7 +13,7 @@ use monitor_types::{
requests::read::*,
};
use mungos::mongodb::{bson::doc, options::FindOptions};
use periphery_client::requests;
use periphery_client::requests::{self, GetAccountsResponse};
use resolver_api::{Resolve, ResolveToString};
use crate::{auth::RequestUser, resource::StateResource, state::State};
@@ -403,3 +403,45 @@ impl Resolve<GetDockerContainers, RequestUser> for State {
.await
}
}
#[async_trait]
impl Resolve<GetAvailableAccounts, RequestUser> for State {
async fn resolve(
&self,
GetAvailableAccounts { server_id }: GetAvailableAccounts,
user: RequestUser,
) -> anyhow::Result<GetAvailableAccountsResponse> {
let server: Server = self
.get_resource_check_permissions(&server_id, &user, PermissionLevel::Read)
.await?;
let GetAccountsResponse { github, docker } = self
.periphery_client(&server)
.request(requests::GetAccounts {})
.await
.context("failed to get accounts from periphery")?;
let res = GetAvailableAccountsResponse { github, docker };
Ok(res)
}
}
#[async_trait]
impl Resolve<GetAvailableNetworks, RequestUser> for State {
async fn resolve(
&self,
GetAvailableNetworks { server_id }: GetAvailableNetworks,
user: RequestUser,
) -> anyhow::Result<GetAvailableNetworksResponse> {
let server: Server = self
.get_resource_check_permissions(&server_id, &user, PermissionLevel::Read)
.await?;
let networks = self
.periphery_client(&server)
.request(requests::GetNetworkList {})
.await
.context("failed to get accounts from periphery")?;
let res = GetAvailableNetworksResponse {
networks
};
Ok(res)
}
}

View File

@@ -32,7 +32,6 @@ mod user;
#[resolver_target(State)]
#[resolver_args(RequestUser)]
#[serde(tag = "type", content = "params")]
#[allow(clippy::enum_variant_names, clippy::large_enum_variant)]
enum WriteRequest {
// ==== SECRET ====
CreateLoginSecret(CreateLoginSecret),

View File

@@ -7,7 +7,7 @@ use monitor_types::{
build::BuildActionState, deployment::DeploymentActionState, repo::RepoActionState,
server::ServerActionState, update::UpdateListItem,
},
requests::{auth::GetLoginOptionsResponse},
requests::auth::GetLoginOptionsResponse,
};
use crate::{