Get-CharacterCollectedMounts.ps1
function Get-CharacterCollectedMounts { <# .SYNOPSIS Retrieves a list of mounts collected by a specified character in World of Warcraft. .DESCRIPTION This function connects to the World of Warcraft API to retrieve the collection of mounts associated with a character. It requires the realm and character name and can return either formatted or raw JSON data. The function relies on a global API connection and localization settings. .PARAMETER realmSlug The slug of the realm. This is required and must not be empty. .PARAMETER characterName The name of the character. This is required and must not be empty. .PARAMETER Raw Optional switch to return the raw JSON response from the API. .EXAMPLE Get-CharacterCollectedMounts -realmSlug 'azshara' -characterName 'strandmaus' Retrieves a formatted list of mounts collected by Strandmaus on the Azshara realm. .EXAMPLE Get-CharacterCollectedMounts -realmSlug 'azshara' -characterName 'strandmaus' -Raw Retrieves the raw JSON response of mounts collected by Strandmaus on the Azshara realm. .NOTES This function requires the World of Warcraft API to be accessible and valid credentials to be configured in the global variables. .LINK https://develop.battle.net/documentation/world-of-warcraft/profile-apis #> param ( [Parameter(Mandatory, Position = 0, HelpMessage = 'The slug of the realm.')] [ValidateNotNullOrEmpty()] [String]$realmSlug, [Parameter(Mandatory, Position = 1, HelpMessage = 'The character name.')] [ValidateNotNullOrEmpty()] [String]$characterName, [Parameter(Position = 2, HelpMessage = 'Return raw JSON data.')] [Switch]$Raw ) $realmSlug = $realmSlug.ToLower() $characterName = $characterName.ToLower() if(Test-WoWApiConnection) { $URL = '{0}profile/wow/character/{1}/{2}/collections/mounts?namespace=profile-{3}&locale={4}' -f $Global:WoWBaseURL, $realmSlug, $characterName, $Global:WoWRegion, $Global:WoWLocalization try { $result = Invoke-RestMethod -Uri $URL -Headers $Global:WoWApiAuthHeader -TimeoutSec 5 if($result -and $result.PSobject.Properties.name -contains 'mounts') { if($Raw) { return $result } else { Write-Verbose -Message 'This is a formatted result. To get the native result use the -Raw parameter.' return $result | Select-Object -ExpandProperty mounts | Sort-Object -Property id } } } catch { $statusCode = $_.Exception.Response.StatusCode.value__ $status = $_.Exception.Response.StatusCode Write-Verbose -Message ('Bad status code ({0}) {1}' -f $statusCode, $status) } } } |