DattoBackupApi.psm1

Set-StrictMode -Version 2.0

$script:DattoApiModuleVersion = '1.0.0'
$script:DattoApiModuleRoot = $PSScriptRoot
$script:DattoApiState = @{
    Connections         = @{}
    DefaultConnectionId = $null
}

if (-not ('System.Net.Http.HttpClient' -as [type])) {
    Add-Type -AssemblyName System.Net.Http -ErrorAction Stop
}

$privateFiles = Get-ChildItem -LiteralPath (Join-Path -Path $PSScriptRoot -ChildPath 'Private') -Filter '*.ps1' -File | Sort-Object -Property Name
foreach ($file in $privateFiles) {
    . $file.FullName
}

$publicFiles = Get-ChildItem -LiteralPath (Join-Path -Path $PSScriptRoot -ChildPath 'Public') -Filter '*.ps1' -File | Sort-Object -Property Name
foreach ($file in $publicFiles) {
    . $file.FullName
}

$ExecutionContext.SessionState.Module.OnRemove = {
    foreach ($connectionState in @($script:DattoApiState.Connections.Values)) {
        Remove-DattoApiConnectionInternal -ConnectionState $connectionState
    }

    $script:DattoApiState.Connections.Clear()
    $script:DattoApiState.DefaultConnectionId = $null
}

Export-ModuleMember -Function @(
    'Connect-DattoApi',
    'Disconnect-DattoApi',
    'Get-DattoApiConnection',
    'Get-DattoApiRateLimit',
    'Test-DattoApiConnection',
    'Invoke-DattoApiRequest',
    'Get-DattoApiSpecification',
    'Get-DattoApiOperation',
    'Get-DattoApiSchema',
    'ConvertFrom-DattoUnixTime',
    'ConvertTo-DattoByteSize',
    'Get-DattoBcdrClient',
    'Get-DattoBcdrDevice',
    'Get-DattoBcdrVmRestore',
    'Get-DattoBcdrAsset',
    'Save-DattoBcdrAssetScreenshot',
    'Get-DattoBcdrShare',
    'Get-DattoBcdrAgent',
    'Get-DattoBcdrAlert',
    'Get-DattoActivityLog',
    'Get-DattoSaasDomain',
    'Get-DattoSaasSeat',
    'Get-DattoSaasBackup',
    'Set-DattoSaasSeatAssignment',
    'Get-DattoDtcAsset',
    'Get-DattoDtcClientAsset',
    'Save-DattoDtcAssetScreenshot',
    'Set-DattoDtcAgentBandwidth',
    'Get-DattoDtcRmmTemplate',
    'Get-DattoDtcStoragePool'
)