propelauth 0.23.5

A Rust crate for managing authentication and authorization with support for multi-tenant / B2B products, powered by PropelAuth
Documentation
/*
 * propelauth
 *
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 0.1.0
 *
 * Generated by: https://openapi-generator.tech
 */

use reqwest;

use super::{configuration, Error};
use crate::propelauth::auth::AUTH_HOSTNAME_HEADER;
use crate::apis::ResponseContent;
use crate::models::{
    FetchOrgScimGroupsError, FetchOrgScimGroupsRequest,
    FetchScimGroupError, FetchScimGroupRequest,
    ScimGroup, ScimGroupResultPage,
};


pub async fn fetch_org_scim_groups(
    configuration: &configuration::Configuration,
    params: FetchOrgScimGroupsRequest,
) -> Result<ScimGroupResultPage, Error<FetchOrgScimGroupsError>> {
    let local_var_configuration = configuration;

    // unbox the parameters
    let FetchOrgScimGroupsRequest {
        org_id,
        user_id,
        page_size,
        page_number,
    } = params;

    let local_var_client = &local_var_configuration.client;

    let local_var_uri_str = format!(
        "{}/api/backend/v1/scim/{org_id}/groups",
        local_var_configuration.base_path,
        org_id = crate::apis::urlencode(org_id)
    );
    let mut local_var_req_builder =
        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());

    if let Some(ref local_var_str) = page_size {
        local_var_req_builder =
            local_var_req_builder.query(&[("page_size", &local_var_str.to_string())]);
    }
    if let Some(ref local_var_str) = page_number {
        local_var_req_builder =
            local_var_req_builder.query(&[("page_number", &local_var_str.to_string())]);
    }
    if let Some(ref local_var_str) = user_id {
        local_var_req_builder =
            local_var_req_builder.query(&[("user_id", &local_var_str.to_string())]);
    }
    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
        local_var_req_builder =
            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
    }
    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
    };
    local_var_req_builder = local_var_req_builder.header(
        AUTH_HOSTNAME_HEADER,
        local_var_configuration.auth_hostname.to_owned(),
    );

    let local_var_req = local_var_req_builder.build()?;
    let local_var_resp = local_var_client.execute(local_var_req).await?;

    let local_var_status = local_var_resp.status();
    let local_var_content = local_var_resp.text().await?;

    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
        serde_json::from_str(&local_var_content).map_err(Error::from)
    } else {
        let local_var_entity: Option<FetchOrgScimGroupsError> =
            serde_json::from_str(&local_var_content).ok();
        let local_var_error: crate::apis::ResponseContent<FetchOrgScimGroupsError> = ResponseContent {
            status: local_var_status,
            content: local_var_content,
            entity: local_var_entity,
        };
        Err(Error::ResponseError(local_var_error))
    }
}

pub async fn fetch_scim_group(
    configuration: &configuration::Configuration,
    params: FetchScimGroupRequest,
) -> Result<ScimGroup, Error<FetchScimGroupError>> {
    let local_var_configuration = configuration;

    // unbox the parameters
    let FetchScimGroupRequest {
        org_id,
        group_id,
        members_page_number,
        members_page_size
    } = params;

    let local_var_client = &local_var_configuration.client;

    let local_var_uri_str = format!(
        "{}/api/backend/v1/scim/{org_id}/groups/{group_id}",
        local_var_configuration.base_path,
        org_id = crate::apis::urlencode(org_id),
        group_id = crate::apis::urlencode(group_id)
    );
    let mut local_var_req_builder =
        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
    
    if let Some(ref local_var_str) = members_page_size {
        local_var_req_builder =
            local_var_req_builder.query(&[("members_page_size", &local_var_str.to_string())]);
    }
    if let Some(ref local_var_str) = members_page_number {
        local_var_req_builder =
            local_var_req_builder.query(&[("members_page_number", &local_var_str.to_string())]);
    }

    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
        local_var_req_builder =
            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
    }
    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
    };
    local_var_req_builder = local_var_req_builder.header(
        AUTH_HOSTNAME_HEADER,
        local_var_configuration.auth_hostname.to_owned(),
    );

    let local_var_req = local_var_req_builder.build()?;
    let local_var_resp = local_var_client.execute(local_var_req).await?;

    let local_var_status = local_var_resp.status();
    let local_var_content = local_var_resp.text().await?;

    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
        serde_json::from_str(&local_var_content).map_err(Error::from)
    } else {
        let local_var_entity: Option<FetchScimGroupError> =
            serde_json::from_str(&local_var_content).ok();
        let local_var_error: crate::apis::ResponseContent<FetchScimGroupError> = ResponseContent {
            status: local_var_status,
            content: local_var_content,
            entity: local_var_entity,
        };
        Err(Error::ResponseError(local_var_error))
    }
}