Private/Get-BridgeHtml.ps1

function Get-BridgeHtml {
    <#
    .SYNOPSIS
    Ανακτά HTML περιεχόμενο από την σελίδα της γέφυρας.

    .DESCRIPTION
    Η Get-BridgeHtml πραγματοποιεί HTTP αίτηση και επιστρέφει το HTML
    περιεχόμενο της σελίδας. Τώρα επιστρέφει BridgeResult object για
    καλύτερο error handling.

    .PARAMETER Uri
    Το URI από όπου θα ανακτηθεί το HTML. Αν δεν παρέχεται, χρησιμοποιείται το Configuration.

    .PARAMETER Configuration
    Αντικείμενο διαμόρφωσης που περιέχει το SourceUrl και άλλες ρυθμίσεις.

    .OUTPUTS
    [PSCustomObject] - BridgeResult object με Success, Data (HTML content), ErrorMessage, ErrorCode, Timestamp.

    .EXAMPLE
    $htmlResult = Get-BridgeHtml -Configuration $config
    if (Test-BridgeResult $htmlResult) {
        $html = $htmlResult.Data
    }

    .NOTES
    Χρησιμοποιεί New-BridgeResult για τυποποιημένη επιστροφή αποτελεσμάτων.
    #>

    [CmdletBinding()]
    [OutputType([PSCustomObject])]
    param (
        [Parameter()]
        [ValidateScript({ [Uri]::IsWellFormedUriString($_, [UriKind]::Absolute) })]
        [string]$Uri,

        [Parameter()]
        [PSCustomObject]$Configuration
    )

    # Use configuration or fallback for URI
    if (-not $Uri) {
        if ($Configuration -and $Configuration.SourceUrl) {
            $Uri = $Configuration.SourceUrl
        } else {
            $Uri = 'https://www.topvision.gr/dioriga/'
        }
    }

    try {
        $writeBridgeLogSplat = @{
            Stage   = 'Ανάλυση'
            Message = "🌐 Λήψη περιεχομένου από: $Uri"
        }
        Write-BridgeLog @writeBridgeLogSplat

        $invokeWebRequestSplat = @{
            Uri             = $Uri
            UseBasicParsing = $true
            ErrorAction     = 'Stop'
        }
        $response = Invoke-WebRequest @invokeWebRequestSplat

        return New-BridgeResult -Success $true -Data $response.Content
    }    catch {
        $writeBridgeLogSplat = @{
            Stage   = 'Σφάλμα'
            Message = "❌ Σφάλμα κατά την ανάκτηση: $($_.Exception.Message)"
            Level   = 'Warning'
        }
        Write-BridgeLog @writeBridgeLogSplat

        return New-BridgeResult -Success $false -ErrorMessage $_.Exception.Message -ErrorCode 'HTTP_ERROR'
    }
}