<?php

namespace App\Util\Lexer;

class Nickname
{
    public static function normalizeProfileUrl($url)
    {
        if (starts_with($url, 'acct:')) {
            $url = str_replace('acct:', '', $url);
        }

        if (!str_contains($url, '@') && filter_var($url, FILTER_VALIDATE_URL)) {
            $parsed = parse_url($url);
            $username = str_replace(['/', '\\', '@'], '', $parsed['path']);

            return ['domain' => $parsed['host'], 'username' => $username];
        }
        $parts = explode('@', $url);
        $username = null;
        $domain = null;

        foreach ($parts as $part) {

        // skip empty array slices
            if (empty($part)) {
                continue;
            }

            // if slice contains . assume its a domain
            if (str_contains($part, '.')) {
                $domain = filter_var($part, FILTER_VALIDATE_URL) ?
                    parse_url($part, PHP_URL_HOST) :
                    $part;
            } else {
                $username = $part;
            }
        }

        return ['domain' => $domain, 'username' => $username];
    }
}