use std::collections::HashMap;
use crate::error::ClientError;
use super::Client;
#[derive(Debug, PartialEq)]
pub struct AlternateId {
pub id_type: String,
pub id: String,
}
#[derive(Debug, PartialEq)]
pub struct OrganizationMetadata {
pub key: String,
pub value: String,
pub service_id: Option<String>,
}
#[derive(Debug, PartialEq)]
pub struct PikeOrganization {
pub org_id: String,
pub name: String,
pub locations: Vec<String>,
pub alternate_ids: Vec<AlternateId>,
pub metadata: Vec<OrganizationMetadata>,
pub service_id: Option<String>,
}
#[derive(Debug, PartialEq)]
pub struct PikeAgent {
pub public_key: String,
pub org_id: String,
pub active: bool,
pub roles: Vec<String>,
pub service_id: Option<String>,
pub metadata: HashMap<String, String>,
}
#[derive(Debug, PartialEq)]
pub struct PikeRole {
pub org_id: String,
pub name: String,
pub description: String,
pub active: bool,
pub permissions: Vec<String>,
pub inherit_from: Vec<InheritFrom>,
pub allowed_organizations: Vec<String>,
}
#[derive(Debug, PartialEq)]
pub struct InheritFrom {
pub role_name: String,
pub org_id: String,
}
pub trait PikeClient: Client {
fn get_agent(&self, id: String, service_id: Option<&str>) -> Result<PikeAgent, ClientError>;
fn list_agents(&self, service_id: Option<&str>) -> Result<Vec<PikeAgent>, ClientError>;
fn get_organization(
&self,
id: String,
service_id: Option<&str>,
) -> Result<PikeOrganization, ClientError>;
fn list_organizations(
&self,
service_id: Option<&str>,
) -> Result<Vec<PikeOrganization>, ClientError>;
fn get_role(
&self,
org_id: String,
name: String,
service_id: Option<&str>,
) -> Result<PikeRole, ClientError>;
fn list_roles(
&self,
org_id: String,
service_id: Option<&str>,
) -> Result<Vec<PikeRole>, ClientError>;
}