Private/BaseURI.ps1

function Add-RocketCyberBaseURI {
<#
    .SYNOPSIS
        Sets the base URI for the RocketCyber API connection.
 
    .DESCRIPTION
        The Add-RocketCyberBaseURI cmdlet sets the base URI which is later used
        to construct the full URI for all API calls.
 
    .PARAMETER base_uri
        Define the base URI for the RocketCyber API connection using
        RocketCyber's URI or a custom URI.
 
    .PARAMETER data_center
        RocketCyber's URI connection point that can be one of the predefined data centers.
 
        The accepted values for this parameter are:
        [ US, EU ]
        US = https://api-us.rocketcyber.com/v3
        EU = https://api-eu.rocketcyber.com/v3
 
    .EXAMPLE
        Add-RocketCyberBaseURI
 
        The base URI will use https://api-us.rocketcyber.com/v3 which is RocketCyber's default URI.
 
    .EXAMPLE
        Add-RocketCyberBaseURI -data_center EU
 
        The base URI will use https://api-eu.rocketcyber.com/v3 which is RocketCyber's Europe URI.
 
    .EXAMPLE
        Add-RocketCyberBaseURI -base_uri http://myapi.gateway.example.com
 
        A custom API gateway of http://myapi.gateway.example.com will be used for
        all API calls to RocketCyber's API.
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/RocketCyber-PowerShellWrapper/site/Internal/Add-RocketCyberBaseURI.html
#>


    [cmdletbinding()]
    Param (
        [Parameter(Mandatory = $false , ValueFromPipeline = $true)]
        [string]$base_uri = 'https://api-us.rocketcyber.com/v3',

        [Parameter(Mandatory = $false)]
        [ValidateSet( 'US', 'EU' )]
        [String]$data_center
    )

    process{

        # Trim superfluous forward slash from address (if applicable)
        if ($base_uri[$base_uri.Length-1] -eq "/") {
            $base_uri = $base_uri.Substring(0,$base_uri.Length-1)
        }

        switch ($data_center) {
            'US' { $base_uri = "https://api-us.rocketcyber.com/v3" }
            'EU' { $base_uri = "https://api-eu.rocketcyber.com/v3" }
            Default {}
        }

        Set-Variable -Name 'RocketCyber_Base_URI' -Value $base_uri -Option ReadOnly -Scope global -Force

    }
}



function Get-RocketCyberBaseURI {
<#
    .SYNOPSIS
        Shows the RocketCyber base URI global variable.
 
    .DESCRIPTION
        The Get-RocketCyberBaseURI cmdlet shows the RocketCyber base URI global variable value.
 
    .EXAMPLE
        Get-RocketCyberBaseURI
 
        Shows the RocketCyber base URI global variable value.
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/RocketCyber-PowerShellWrapper/site/Internal/Get-RocketCyberBaseURI.html
#>


    [cmdletbinding()]
    Param ()

    if ($RocketCyber_Base_URI){
        $RocketCyber_Base_URI
    }
    Else{
        Write-Warning "The RocketCyber base URI is not set. Run Add-RocketCyberBaseURI to set the base URI."
    }
}



function Remove-RocketCyberBaseURI {
<#
    .SYNOPSIS
        Removes the RocketCyber base URI global variable.
 
    .DESCRIPTION
        The Remove-RocketCyberBaseURI cmdlet removes the RocketCyber base URI global variable.
 
    .EXAMPLE
        Remove-RocketCyberBaseURI
 
        Removes the RocketCyber base URI global variable.
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/RocketCyber-PowerShellWrapper/site/Internal/Remove-RocketCyberBaseURI.html
#>


    [cmdletbinding(SupportsShouldProcess)]
    Param ()

    if ($RocketCyber_Base_URI) {
        Remove-Variable -Name "RocketCyber_Base_URI" -Scope global -Force -WhatIf:$WhatIfPreference
    }
    Else{
        Write-Warning "The RocketCyber base URI variable is not set. Nothing to remove"
    }
}



New-Alias -Name Set-RocketCyberBaseURI -Value Add-RocketCyberBaseURI