PSFloRecruit.psm1

#Requires -Version 5.1

# Module-scoped session state
$Script:FloRecruitSession = $null
$Script:PSVersionMajor = $PSVersionTable.PSVersion.Major

# Configuration constants
$Script:FloRecruitAuthEndpoint = 'https://florecruit.com/app/{org_name}/admin/auth/'
$Script:FloRecruitApiBase = 'https://florecruit.com/app/{org_name}/api'
$Script:FloRecruitApiVersion = 'v1'

# Rate limiting configuration (1000 requests per 5 minutes)
$Script:RateLimitMaxRequests = 1000
$Script:RateLimitWindowSeconds = 300

# Module root
$ModuleRoot = $PSScriptRoot

# Import Private functions
$PrivateFunctions = Get-ChildItem -Path "$ModuleRoot\Private\*.ps1" -ErrorAction SilentlyContinue
foreach ($Function in $PrivateFunctions) {
    try {
        . $Function.FullName
        Write-Verbose "Imported private function: $($Function.BaseName)"
    }
    catch {
        Write-Error "Failed to import private function $($Function.FullName): $_"
    }
}

# Import Public functions (recursive through subdirectories)
$PublicFolders = Get-ChildItem -Path "$ModuleRoot\Public" -Directory -ErrorAction SilentlyContinue
foreach ($Folder in $PublicFolders) {
    $PublicFunctions = Get-ChildItem -Path "$($Folder.FullName)\*.ps1" -ErrorAction SilentlyContinue
    foreach ($Function in $PublicFunctions) {
        try {
            . $Function.FullName
            Write-Verbose "Imported public function: $($Function.BaseName)"
        }
        catch {
            Write-Error "Failed to import public function $($Function.FullName): $_"
        }
    }
}

# Also import direct Public folder .ps1 files
$DirectPublicFunctions = Get-ChildItem -Path "$ModuleRoot\Public\*.ps1" -ErrorAction SilentlyContinue
foreach ($Function in $DirectPublicFunctions) {
    try {
        . $Function.FullName
        Write-Verbose "Imported public function: $($Function.BaseName)"
    }
    catch {
        Write-Error "Failed to import public function $($Function.FullName): $_"
    }
}