Skip to content

Commit bf273a8

Browse files
committed
tidy code
1 parent 8448418 commit bf273a8

File tree

1 file changed

+27
-30
lines changed

1 file changed

+27
-30
lines changed

Modules/CIPPCore/Public/GraphHelper/New-TeamsAPIGetRequest.ps1

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,52 +6,49 @@ function New-TeamsAPIGetRequest($Uri, $tenantID, $Method = 'GET', $Resource = '4
66

77
if ((Get-AuthorisedRequest -Uri $uri -TenantID $tenantid)) {
88
$token = Get-GraphToken -TenantID $tenantID -Scope "$Resource/.default"
9-
109
$NextURL = $Uri
1110
$ReturnedData = do {
11+
$handler = $null
12+
$httpClient = $null
13+
$response = $null
1214
try {
13-
# Use .NET HttpClient directly to bypass PowerShell HTTP handling issues
14-
$httpClient = New-Object System.Net.Http.HttpClient
15-
$httpClient.DefaultRequestHeaders.Add('Authorization', $token.Authorization)
16-
$httpClient.DefaultRequestHeaders.Add('x-ms-client-request-id', [guid]::NewGuid().ToString())
17-
$httpClient.DefaultRequestHeaders.Add('x-ms-client-session-id', [guid]::NewGuid().ToString())
18-
$httpClient.DefaultRequestHeaders.Add('x-ms-correlation-id', [guid]::NewGuid().ToString())
19-
$httpClient.DefaultRequestHeaders.Add('X-Requested-With', 'XMLHttpRequest')
20-
$httpClient.DefaultRequestHeaders.Add('x-ms-tnm-applicationid', '045268c0-445e-4ac1-9157-d58f67b167d9')
21-
$httpClient.DefaultRequestHeaders.Add('Accept', 'application/json')
22-
$httpClient.DefaultRequestHeaders.Add('Accept-Encoding', 'identity')
23-
$httpClient.DefaultRequestHeaders.Add('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36')
24-
25-
# Disable automatic decompression to prevent .NET compression issues
15+
# Create handler and client with compression disabled
2616
$handler = New-Object System.Net.Http.HttpClientHandler
2717
$handler.AutomaticDecompression = [System.Net.DecompressionMethods]::None
28-
$httpClient.Dispose()
2918
$httpClient = New-Object System.Net.Http.HttpClient($handler)
3019

31-
# Re-add headers after creating new client with handler
32-
$httpClient.DefaultRequestHeaders.Add('Authorization', $token.Authorization)
33-
$httpClient.DefaultRequestHeaders.Add('x-ms-client-request-id', [guid]::NewGuid().ToString())
34-
$httpClient.DefaultRequestHeaders.Add('x-ms-client-session-id', [guid]::NewGuid().ToString())
35-
$httpClient.DefaultRequestHeaders.Add('x-ms-correlation-id', [guid]::NewGuid().ToString())
36-
$httpClient.DefaultRequestHeaders.Add('X-Requested-With', 'XMLHttpRequest')
37-
$httpClient.DefaultRequestHeaders.Add('x-ms-tnm-applicationid', '045268c0-445e-4ac1-9157-d58f67b167d9')
38-
$httpClient.DefaultRequestHeaders.Add('Accept', 'application/json')
39-
$httpClient.DefaultRequestHeaders.Add('Accept-Encoding', 'identity')
40-
$httpClient.DefaultRequestHeaders.Add('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36')
20+
# Add all required headers
21+
$headers = @{
22+
'Authorization' = $token.Authorization
23+
'x-ms-client-request-id' = [guid]::NewGuid().ToString()
24+
'x-ms-client-session-id' = [guid]::NewGuid().ToString()
25+
'x-ms-correlation-id' = [guid]::NewGuid().ToString()
26+
'X-Requested-With' = 'XMLHttpRequest'
27+
'x-ms-tnm-applicationid' = '045268c0-445e-4ac1-9157-d58f67b167d9'
28+
'Accept' = 'application/json'
29+
'Accept-Encoding' = 'identity'
30+
'User-Agent' = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36'
31+
}
32+
33+
foreach ($header in $headers.GetEnumerator()) {
34+
$httpClient.DefaultRequestHeaders.Add($header.Key, $header.Value)
35+
}
4136

4237
$response = $httpClient.GetAsync($NextURL).Result
4338
$contentString = $response.Content.ReadAsStringAsync().Result
4439

45-
# Clean up
46-
$httpClient.Dispose() | Out-Null
47-
$handler.Dispose() | Out-Null
48-
49-
# Parse JSON
40+
# Parse JSON and return data
5041
$Data = $contentString | ConvertFrom-Json
42+
5143
$Data
5244
if ($noPagination) { $nextURL = $null } else { $nextURL = $data.NextLink }
5345
} catch {
5446
throw "Failed to make Teams API Get Request $_"
47+
} finally {
48+
# Proper cleanup in finally block to ensure disposal even on exceptions
49+
if ($response) { $response.Dispose() }
50+
if ($httpClient) { $httpClient.Dispose() }
51+
if ($handler) { $handler.Dispose() }
5552
}
5653
} until ($null -eq $NextURL)
5754
return $ReturnedData

0 commit comments

Comments
 (0)