Skip to content

Commit dbf0634

Browse files
committed
add available cmdlet support
1 parent 6c01961 commit dbf0634

File tree

1 file changed

+63
-36
lines changed

1 file changed

+63
-36
lines changed

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Email-Exchange/Invoke-ListExoRequest.ps1

Lines changed: 63 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -16,49 +16,76 @@ function Invoke-ListExoRequest {
1616
$Tenants = Get-Tenants -IncludeErrors
1717
$Tenant = $Tenants | Where-Object { $_.defaultDomainName -eq $TenantFilter -or $_.customerId -eq $TenantFilter }
1818
if ($Tenant.customerId -in $AllowedTenants -or $AllowedTenants -eq 'AllTenants') {
19-
if ($AllowedVerbs -notcontains $Verb) {
20-
$Body = [pscustomobject]@{
21-
Results = "Invalid cmdlet: $Cmdlet"
19+
if ($Request.Body.AvailableCmdlets) {
20+
$ExoRequest = @{
21+
TenantID = $TenantFilter
22+
AvailableCmdlets = $true
23+
}
24+
if ($Request.Body.AsApp -eq $true) {
25+
$ExoRequest.AsApp = $true
26+
}
27+
if ($Request.Body.Compliance -eq $true) {
28+
$ExoRequest.Compliance = $true
29+
}
30+
$Results = New-ExoRequest @ExoRequest
31+
$Body = [PSCustomObject]@{
32+
Results = $Results | Select-Object @{ Name = 'Cmdlet'; Expression = { $_ } }
33+
Metadata = @{
34+
Count = ($Results | Measure-Object).Count
35+
}
36+
}
37+
} else {
38+
if ($AllowedVerbs -notcontains $Verb) {
39+
$Body = [pscustomobject]@{
40+
Results = "Invalid cmdlet: $Cmdlet"
41+
}
42+
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
43+
StatusCode = [HttpStatusCode]::BadRequest
44+
Body = $Body
45+
})
46+
return
47+
}
48+
$ExoParams = @{
49+
Cmdlet = $Cmdlet
50+
cmdParams = $cmdParams
51+
tenantid = $TenantFilter
2252
}
23-
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
24-
StatusCode = [HttpStatusCode]::BadRequest
25-
Body = $Body
26-
})
27-
return
28-
}
29-
$ExoParams = @{
30-
Cmdlet = $Cmdlet
31-
cmdParams = $cmdParams
32-
tenantid = $TenantFilter
33-
}
3453

35-
if ($Request.Body.Select) {
36-
$ExoParams.Select = $Request.Body.Select
37-
}
54+
if ($Request.Body.Select) {
55+
$ExoParams.Select = $Request.Body.Select
56+
}
3857

39-
if ($Request.Body.UseSystemMailbox -eq $true) {
40-
$ExoParams.useSystemMailbox = $true
41-
}
58+
if ($Request.Body.UseSystemMailbox -eq $true) {
59+
$ExoParams.useSystemMailbox = $true
60+
}
4261

43-
if ($Request.Body.Anchor) {
44-
$ExoParams.Anchor = $Request.Body.Anchor
45-
}
62+
if ($Request.Body.Anchor) {
63+
$ExoParams.Anchor = $Request.Body.Anchor
64+
}
4665

47-
if ($Request.Body.Compliance -eq $true) {
48-
$ExoParams.Compliance = $true
49-
}
66+
if ($Request.Body.Compliance -eq $true) {
67+
$ExoParams.Compliance = $true
68+
}
5069

51-
if ($Request.Body.AsApp -eq $true) {
52-
$ExoParams.AsApp = $true
53-
}
70+
if ($Request.Body.AsApp -eq $true) {
71+
$ExoParams.AsApp = $true
72+
}
5473

55-
$Results = New-ExoRequest @ExoParams
56-
$Body = [pscustomobject]@{
57-
Results = $Results
58-
}
59-
} else {
60-
$Body = [pscustomobject]@{
61-
Results = "Invalid tenant: $TenantFilter"
74+
try {
75+
$Results = New-ExoRequest @ExoParams
76+
$Body = [pscustomobject]@{
77+
Results = $Results
78+
}
79+
} catch {
80+
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
81+
$Body = [pscustomobject]@{
82+
Results = @(@{ Error = $ErrorMessage })
83+
}
84+
}
85+
} else {
86+
$Body = [pscustomobject]@{
87+
Results = "Invalid tenant: $TenantFilter"
88+
}
6289
}
6390
}
6491
} catch {

0 commit comments

Comments
 (0)