Private/ConvertFrom-BridgeHtml.ps1
|
function ConvertFrom-BridgeHtml { <# .SYNOPSIS Αναλύει HTML περιεχόμενο και επιστρέφει καταστάσεις γέφυρας. .DESCRIPTION Η ConvertFrom-BridgeHtml εξάγει τη λογική ανάλυσης HTML από το Get-BridgeStatusFromHtml και επιστρέφει BridgeResult object για καλύτερο error handling και DRY compliance. .PARAMETER Html Το HTML περιεχόμενο σε μορφή string. .PARAMETER Configuration Αντικείμενο διαμόρφωσης που περιέχει bridge mappings και URLs. .OUTPUTS [PSCustomObject] - BridgeResult object με Success, Data (array of bridge statuses), ErrorMessage, ErrorCode, Timestamp. .EXAMPLE $statusResult = ConvertFrom-BridgeHtml -Html $html -Configuration $config if (Test-BridgeResult $statusResult) { $bridges = $statusResult.Data } .NOTES Χρησιμοποιεί New-BridgeResult για τυποποιημένη επιστροφή αποτελεσμάτων. Εξάγει τη λειτουργικότητα από Get-BridgeStatusFromHtml για καλύτερη δομή. #> [CmdletBinding()] [OutputType([PSCustomObject])] param( [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string]$Html, [Parameter()] [PSCustomObject]$Configuration ) try { # Use configuration or fallback if (-not $Configuration) { try { $Configuration = New-BridgeConfiguration } catch { return New-BridgeResult -Success $false -ErrorMessage "Configuration initialization failed: $($_.Exception.Message)" -ErrorCode 'CONFIG_ERROR' } } $timestamp = Get-Date -Format o $writeBridgeLogSplat = @{ Stage = 'Ανάλυση' Message = '🔍 Ανάλυση HTML για εύρεση καταστάσεων γέφυρας' } Write-BridgeLog @writeBridgeLogSplat # Use the existing Get-BridgeStatusFromHtml logic with BridgeResult wrapping $getBridgeStatusFromHtmlSplat = @{ Html = $Html Timestamp = $timestamp Configuration = $Configuration } $bridgeStatuses = Get-BridgeStatusFromHtml @getBridgeStatusFromHtmlSplat if (-not $bridgeStatuses -or $bridgeStatuses.Count -eq 0) { $writeBridgeLogSplat = @{ Stage = 'Σφάλμα' Message = '⛔ Δεν βρέθηκαν γέφυρες στο HTML περιεχόμενο' Level = 'Warning' } Write-BridgeLog @writeBridgeLogSplat return New-BridgeResult -Success $false -ErrorMessage 'Δεν βρέθηκαν γέφυρες στο HTML περιεχόμενο' -ErrorCode 'NO_BRIDGES_FOUND' } $writeBridgeLogSplat = @{ Stage = 'Ανάλυση' Message = "✅ Βρέθηκαν $($bridgeStatuses.Count) γέφυρες" } Write-BridgeLog @writeBridgeLogSplat return New-BridgeResult -Success $true -Data $bridgeStatuses } catch { $writeBridgeLogSplat = @{ Stage = 'Σφάλμα' Message = "❌ Σφάλμα κατά την ανάλυση HTML: $($_.Exception.Message)" Level = 'Warning' } Write-BridgeLog @writeBridgeLogSplat return New-BridgeResult -Success $false -ErrorMessage $_.Exception.Message -ErrorCode 'PARSING_ERROR' } } |