Private/Get-BridgeStatusObject.ps1
|
function Get-BridgeStatusObject { [CmdletBinding()] <# .SYNOPSIS Δημιουργεί αντικείμενο κατάστασης γέφυρας. .DESCRIPTION Η Get-BridgeStatusObject δημιουργεί structured αντικείμενο που περιέχει όνομα γέφυρας, κατάσταση, χρονική σφραγίδα και URL εικόνας. .PARAMETER Location Το αναγνωριστικό της γέφυρας ('poseidonia' ή 'isthmia'). .PARAMETER Status Η κατάσταση της γέφυρας ('Ανοιχτή', 'Κλειστή', 'Άγνωστη'). .PARAMETER Timestamp Η χρονική στιγμή καταγραφής. .PARAMETER ImageSrc Το URL ή το σχετικό path της εικόνας. .PARAMETER BaseUrl Το base URL για συμπλήρωση εικόνων (προεπιλογή https://www.topvision.gr/dioriga/). .OUTPUTS [pscustomobject] - Αντικείμενο κατάστασης. .EXAMPLE Get-BridgeStatusObject -Location 'poseidonia' -Status 'Closed' -Timestamp (Get-Date) -ImageSrc 'bridge1.jpg' .NOTES Επιστρέφει πάντα πλήρες αντικείμενο με σωστά πεδία. #> [OutputType([pscustomobject])] param ( [Parameter(Mandatory)][ValidateNotNullOrEmpty()][string]$Location, [Parameter(Mandatory)][ValidateNotNullOrEmpty()][string]$Status, [Parameter(Mandatory)][ValidateNotNullOrEmpty()][string]$Timestamp, [Parameter(Mandatory)][ValidateNotNullOrEmpty()][string]$ImageSrc, [Parameter()][ValidateScript({ if ([string]::IsNullOrEmpty($_) -or [Uri]::IsWellFormedUriString($_, [UriKind]::Absolute)) { $true } else { throw "The parameter '$_' is not a valid absolute URI." } })][string]$BaseUrl, [Parameter()] [PSCustomObject]$Configuration ) if (-not $Configuration) { $Configuration = New-BridgeConfiguration } # Use configuration or fallback for BaseUrl if (-not $BaseUrl) { $BaseUrl = $Configuration.BaseImageUrl } return [pscustomobject]@{ PSTypeName = 'Bridge.Status' GefyraName = $Configuration.BridgeNames[$Location] GefyraStatus = $Status Timestamp = $Timestamp ImageUrl = if ($ImageSrc -match '^https?://') { $ImageSrc } else { "$($BaseUrl.TrimEnd('/'))/$ImageSrc" } } } |