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 ) # Use configuration or fallback for BaseUrl if (-not $BaseUrl) { if ($Configuration -and $Configuration.BaseImageUrl) { $BaseUrl = $Configuration.BaseImageUrl } else { $BaseUrl = 'https://www.topvision.gr/dioriga/' } } return [pscustomobject]@{ PSTypeName = 'Bridge.Status' GefyraName = if ($Configuration -and $Configuration.BridgeNames -and $Configuration.BridgeNames[$Location]) { $Configuration.BridgeNames[$Location] } else { # Fallback to hardcoded values if ($Location -eq 'poseidonia') { 'Ποσειδωνία' } else { 'Ισθμία' } } GefyraStatus = $Status Timestamp = $Timestamp ImageUrl = if ($ImageSrc -match '^https?://') { $ImageSrc } else { "$BaseUrl$ImageSrc" } } } |