PSFalcon.psm1

$Public = Get-ChildItem -Path $PSScriptRoot\Public\*.ps1
$Private = Get-ChildItem -Path $PSScriptRoot\Private\Private.ps1
@($Public + $Private).foreach{
    try {
        . $_.FullName
    } catch {
        throw $_
    }
}
$Data = @{
    Endpoints = @{}
    ItemTypes = @{}
    Parameters = @{}
    Patterns = @{}
    Schema = @{}
}
($Data.Keys).foreach{
    $Key = $_
    $DataFiles = if ($_ -eq 'Endpoints') {
        Get-ChildItem -Path $PSScriptRoot\Data\$Key\*.psd1
    } else {
        Get-ChildItem -Path $PSScriptRoot\Data\$Key.psd1
    }
    ($DataFiles).foreach{
        try {
            (Import-PowerShellDataFile $_.FullName).GetEnumerator().foreach{
                $Data.$Key.Add($_.Key, $_.Value)
            }
        } catch {
            throw $_
        }
    }
}
# Create script variable to contain API, credential and module data
$Script:Falcon = [Falcon]::New($Data)
if ([Net.ServicePointManager]::SecurityProtocol -notmatch 'Tls12') {
    # Add TLS2 as .NET SecurityProtocol for communication with APIs
    [Net.ServicePointManager]::SecurityProtocol += [Net.SecurityProtocolType]::Tls12
}
if ($PSVersionTable.PSVersion.Major -lt 6) {
    # Add System.Net.Http in PowerShell Desktop
    Add-Type -AssemblyName System.Net.Http
}