mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2024-12-22 21:22:40 +00:00
66 lines
1.9 KiB
PHP
66 lines
1.9 KiB
PHP
<?php
|
|
/** @license MIT
|
|
* Copyright 2017 J. King, Dustin Wilson et al.
|
|
* See LICENSE and AUTHORS files for details */
|
|
|
|
declare(strict_types=1);
|
|
namespace JKingWeb\Arsse\Misc;
|
|
|
|
class URL {
|
|
public static function normalize(string $url, string $u = null, string $p = null): string {
|
|
extract(parse_url($url));
|
|
if (!isset($scheme) || !isset($host) || !strlen($host)) {
|
|
return $url;
|
|
}
|
|
$out = strtolower($scheme)."://";
|
|
if (strlen($u ?? "")) {
|
|
$out .= self::normalizePart($u, self::P_USER, false);
|
|
if (strlen($p ?? "")) {
|
|
$out .= ":".self::normalizePart($p, self::P_PASS, false);
|
|
}
|
|
$out .= "@";
|
|
} elseif (strlen($username ?? "")) {
|
|
$out .= self::normalizePart($username, self::P_USER);
|
|
if (strlen($password ?? "")) {
|
|
$out .= ":".self::normalizePart($username, self::P_PASS);
|
|
}
|
|
$out .= "@";
|
|
}
|
|
if ($host[0] === "[") {
|
|
$out .= self::normalizeIPv6($host);
|
|
} else {
|
|
$out .= self::normalizeHost($host);
|
|
}
|
|
if (isset($path)) {
|
|
$out .= self::normalizePath($path);
|
|
} else {
|
|
$out .= "/";
|
|
}
|
|
if (isset($query) && strlen($query)) {
|
|
$out .= "?".self::normalizePart($query, self::P_QUERY);
|
|
}
|
|
return $out;
|
|
}
|
|
|
|
protected static function normalizePart(string $part, int $type, bool $passthrough_encoded = true): string {
|
|
// stub
|
|
return $part;
|
|
}
|
|
|
|
protected static function normalizeHost(string $host): string {
|
|
// stub
|
|
return $host;
|
|
}
|
|
|
|
protected static function normalizeIPv6(string $addr): string {
|
|
// stub
|
|
return $addr;
|
|
}
|
|
|
|
protected static function normalizePath(string $path): string {
|
|
// stub
|
|
return $path;
|
|
}
|
|
|
|
|
|
}
|