internal/Get-MtGitHubResponseHeaderValue.ps1
|
function Get-MtGitHubResponseHeaderValue { param( [Parameter()] $Headers, [Parameter(Mandatory)] [string] $Name ) if ($null -eq $Headers) { return $null } # IDictionary covers PS 5.1 WebHeaderCollection and PS 7 Dictionary. # Iterate keys with -ieq for case-insensitive match (plain hashtables are case-sensitive). if ($Headers -is [System.Collections.IDictionary]) { foreach ($key in $Headers.Keys) { if ($key -ieq $Name) { $value = $Headers[$key] if ($value -is [array]) { return $value[0] } return $value } } return $null } # HttpResponseHeaders in PS 7 exposes GetValues / TryGetValues if ($Headers.PSObject.Methods.Name -contains 'GetValues') { try { return ($Headers.GetValues($Name) | Select-Object -First 1) } catch { Write-Debug "Get-MtGitHubResponseHeaderValue GetValues: $($_.Exception.Message)" } } if ($Headers.PSObject.Methods.Name -contains 'TryGetValues') { try { $values = $null if ($Headers.TryGetValues($Name, [ref]$values)) { return ($values | Select-Object -First 1) } } catch { Write-Debug "Get-MtGitHubResponseHeaderValue TryGetValues: $($_.Exception.Message)" } } return $null } |