Private/Invoke-MMRequest.ps1
|
# Внутренний хелпер для выполнения HTTP запросов к MatterMost REST API function Invoke-MMRequest { <# .SYNOPSIS Выполняет HTTP запрос к MatterMost API, используя сохранённую сессию. #> [CmdletBinding()] param( [Parameter(Mandatory)] [string]$Endpoint, [string]$Method = 'GET', [object]$Body, [hashtable]$AdditionalHeaders = @{} ) if (-not $script:MMSession) { throw "Not connected. Run Connect-MMServer first." } $headers = @{ 'Content-Type' = 'application/json' 'Authorization' = "Bearer $($script:MMSession.Token)" } foreach ($key in $AdditionalHeaders.Keys) { $headers[$key] = $AdditionalHeaders[$key] } $params = @{ Uri = "$($script:MMSession.Url)/api/v4/$Endpoint" Method = $Method Headers = $headers } if ($Body) { $params['Body'] = ConvertTo-Json -InputObject $Body -Depth 10 } try { $result = Invoke-RestMethod @params # Всегда перечисляем результат — массив отдаём поэлементно, одиночный объект как есть $result | ForEach-Object { $_ } } catch { $statusCode = $_.Exception.Response.StatusCode.value__ throw "MM API error [$statusCode] on $Method /api/v4/$Endpoint : $(Get-MMErrorMessage $_)" } } |