Public/Get-OHASubdivision.ps1
<#PSScriptInfo
.VERSION 1.0.0 .GUID 7073c093-c8e5-4916-9130-dba4d9c08791 .AUTHOR Dieter Koch .COMPANYNAME .COPYRIGHT (c) 2024 Dieter Koch .TAGS openholidaysapi .LICENSEURI https://github.com/admins-little-helper/OHA/blob/main/LICENSE .PROJECTURI https://github.com/admins-little-helper/OHA .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES 1.0.0 Initial release #> <# .DESCRIPTION OpenHolidaysApi PowerShell Module. .LINK https://github.com/admins-little-helper/OHA .LINK https://www.openholidaysapi.org/ #> function Get-OHASubdivision { <# .SYNOPSIS Returns a list of subdivisions for a given country for which holiday information can be queried from https://www.openholidaysapi.org/. .DESCRIPTION The 'Get-OHASubdivision' function returns a list of subdivisions for a given country for which holiday information can be queried from https://www.openholidaysapi.org/. .PARAMETER Raw If specified, raw json data is returned as it's delivered from the API. .EXAMPLE Get-OHASubdivision -Country DE Returns a list of all subdivisions for Germany that are supported by the API in a custom table format. .EXAMPLE Get-OHASubdivision -Country AT -Raw Returns a list of all subdivisions for Austria that are supported by the API in a raw json format as it is retrieved from the API. .INPUTS Nothing .OUTPUTS Nothing .NOTES Author: Dieter Koch Email: diko@admins-little-helper.de .LINK https://github.com/admins-little-helper/OHA/blob/main/Help/Get-OHASubdivision.txt #> [CmdletBinding()] Param ( [ArgumentCompleter({ Param ( $Command, $Parameter, $WordToComplete, $CommandAst, $FakeBoundParameters ) # Get the session variable content. $OHASessionTemp = Get-OHASession # Get the list of countries retrieved from the session variable. $CountryList = $OHASessionTemp.OHAData.Countries.isoCode # Return a list of countries starting with the charaters already typed for the parameter. $CountryList.where({ $_ -like "$WordToComplete*" }) })] [String] $Country = (Get-Culture).twoletterISOLanguageName.ToUpper(), [Switch] $Raw ) # Define paramters for retrieving subdivisions from OHA Rest API. $Params = @{ Method = "Get" Uri = $Script:OHASession.ApiBaseUri + "/Subdivisions?countryIsoCode=$($Country.ToUpper())" Body = @{} Headers = @{'accept' = 'text/json' } } # Try to download. $Result = Invoke-RestMethod @Params # Either present the raw data result, or return it in a customized format. if ($Raw.IsPresent) { Write-Verbose -Message "Returning data in raw format." $Result } else { Write-Verbose -Message "Returning data in custom format." $ConvertedResult = foreach ($Item in $Result) { $ConvertedItem = [PSCustomObject]@{ Code = $Item.Code IsoCode = $Item.isoCode ShortName = $Item.shortName Category = $Item.Category Name = ($Item.Name.where({ $_.language -eq 'EN' })).text LocalName = ($Item.Name.where({ $_.language -eq $Item.officialLanguages[0] })).text OfficialLanguages = $Item.officialLanguages # Children = Get-OHASubdivision } $ConvertedItem.PSObject.TypeNames.Insert(0, "OHASubdivision") $ConvertedItem } $ConvertedResult } } |