# Get Web Page Flow

```mermaid
flowchart TD
    Start([Client Request]) --> Auth{Authenticate}
    Auth -->|Unauthorized| Error[Return 401]
    Auth -->|Authorized| Service[WebService.scrape_web_page]

    Service --> CheckPDF{PDF URL?}
    CheckPDF -->|Yes| ErrorPDF[Return Error]
    ErrorPDF --> End([End])

    CheckPDF -->|No| Scrape[Scrape via Hybrid Firecrawl]
    Scrape --> Firecrawl{Firecrawl}
    Firecrawl -->|Primary| SaaS[Firecrawl SaaS]
    Firecrawl -->|Fallback| SelfHosted[Firecrawl Self-Hosted]
    SaaS --> Content[Page Content]
    SelfHosted --> Content

    Content --> ExtractMetadata[Extract Metadata]
    ExtractMetadata --> Emit[Emit WebSocket Events]
    Emit --> Response[Return Web Page Response]
    Response --> End

    style Start fill:#e1f5ff
    style Service fill:#fff4e1
    style Firecrawl fill:#fff2cc
    style SaaS fill:#fce4ec
    style SelfHosted fill:#fce4ec
```
