====== std.url ====== URL-Parsing gemäß RFC 3986 in alle Komponenten: Scheme (''http'', ''https'', ''ftp'' etc.), Benutzername, Passwort, Hostname, Port, Pfad, Query-String und Fragment. Prozent-Kodierung (''Encode'') und -Dekodierung (''Decode'') für URL-sichere Zeichenübertragung, URL-Validierung, Query-Parameter-Zugriff (''GetQueryParam'', ''HasQueryParam'') und URL-Zusammenbau (''Build''). Einsatzbereiche: HTTP/HTTPS-Clients, Web-Scraping, API-Gateway-Implementierungen, SEO-Analyse (URL-Struktur, Canonical-URLs, Redirects), OAuth-Callback-Verarbeitung. **Autor:** Andreas Röne\\ **Copyright:** 2024-2025 Andreas Röne ---- ===== Imports ===== * ''[[lyx_-_programmiersprache:units:string|std.string]]'' ---- ===== Typen ===== ==== URL (struct) ==== ^ Feld ^ Typ ^ | ''scheme'' | ''pchar'' | | ''username'' | ''pchar'' | | ''password'' | ''pchar'' | | ''hostname'' | ''pchar'' | | ''port'' | ''int64'' | | ''path'' | ''pchar'' | | ''query'' | ''pchar'' | | ''fragment'' | ''pchar'' | ---- ===== Konstanten ===== ^ Name ^ Typ ^ Wert ^ Sichtbarkeit ^ | ''DEFAULT_HTTP_PORT'' | ''int64'' | ''80'' | pub | | ''DEFAULT_HTTPS_PORT'' | ''int64'' | ''443'' | pub | ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''Parse(url_str: pchar, result: pchar): int64'' | pub | Zerlegt URL in alle Komponenten | | ''GetScheme(url: pchar): pchar'' | pub | Gibt URL-Schema zurück | | ''GetHostname(url: pchar): pchar'' | pub | Gibt Hostname zurück | | ''GetPort(url: pchar): int64'' | pub | Gibt Port-Nummer zurück | | ''GetPath(url: pchar): pchar'' | pub | Gibt URL-Pfad zurück | | ''GetQuery(url: pchar): pchar'' | pub | Gibt Query-String zurück | | ''GetFragment(url: pchar): pchar'' | pub | Gibt Fragment-Bezeichner zurück | | ''GetUsername(url: pchar): pchar'' | pub | Gibt Benutzernamen zurück | | ''GetPassword(url: pchar): pchar'' | pub | Gibt Passwort zurück | | ''Build('' | pub | Baut URL aus Komponenten zusammen | | ''IsValid(url: pchar): bool'' | pub | Prüft ob URL gültig ist | | ''IsValidScheme(scheme: pchar): bool'' | pub | Prüft ob Schema gültig ist | | ''IsValidHostname(hostname: pchar): bool'' | pub | Prüft ob Hostname gültig ist | | ''Encode(input: pchar, output: pchar): int64'' | pub | Prozent-kodiert String URL-sicher | | ''Decode(input: pchar, output: pchar): int64'' | pub | Dekodiert prozent-kodierten String | | ''Equals(url1: pchar, url2: pchar): bool'' | pub | Vergleicht zwei URLs auf Gleichheit | | ''GetQueryParam(query: pchar, name: pchar): pchar'' | pub | Liest Query-Parameter nach Name | | ''HasQueryParam(query: pchar, name: pchar): bool'' | pub | Prüft ob Query-Parameter vorhanden | | ''URLPercentEncode(s: pchar): pchar'' | pub | RFC-3986-Percent-Encoding; gibt heap-alloc'd String zurück | | ''URLPercentDecode(s: pchar): pchar'' | pub | Dekodiert Percent-Encoded String; gibt heap-alloc'd String zurück | | ''URLQueryGet(url: pchar, key: pchar): pchar'' | pub | Liest Query-Parameter direkt aus vollständiger URL (Fragment wird automatisch abgetrennt) | | ''URLQuerySet(url: pchar, key: pchar, value: pchar): pchar'' | pub | Fügt Parameter hinzu oder ersetzt vorhandenen; gibt neue heap-alloc'd URL zurück | | ''URLBuild(scheme: pchar, hostname: pchar, port: int64, path: pchar, query: pchar, fragment: pchar): pchar'' | pub | Baut URL aus Teilen: ''scheme://hostname[:port][path][?query][#fragment]''; port=0 = weglassen | | ''URLResolve(base: pchar, relative: pchar): pchar'' | pub | Löst relativen URL gegen Basis auf (RFC 3986 §5); gibt heap-alloc'd URL zurück |