File indexing completed on 2024-05-12 16:23:41

0001 // SPDX-FileCopyrightText: 2020 Jonah BrĂ¼chert <jbb@kaidan.im>
0002 // SPDX-FileCopyrightText: 2020 Rinigus <rinigus.git@gmail.com>
0003 //
0004 // SPDX-License-Identifier: GPL-2.0-or-later
0005 
0006 #include "urlutils.h"
0007 
0008 #include <QDebug>
0009 #include <QJsonArray>
0010 #include <QJsonDocument>
0011 #include <QJsonObject>
0012 #include <QSettings>
0013 #include <QUrl>
0014 
0015 UrlUtils::UrlUtils(QObject *parent)
0016     : QObject(parent)
0017 {
0018 }
0019 
0020 QString UrlUtils::urlFromUserInput(const QString &input)
0021 {
0022     return QUrl::fromUserInput(input).toString();
0023 }
0024 
0025 QString UrlUtils::urlScheme(const QString &url)
0026 {
0027     return QUrl::fromUserInput(url).scheme();
0028 }
0029 
0030 QString UrlUtils::urlHostPort(const QString &url)
0031 {
0032     const QUrl u(url);
0033     static std::array<QStringView, 3> common = {
0034         QStringView(u"www."),
0035         QStringView(u"m."),
0036         QStringView(u"mobile."),
0037     };
0038 
0039     QString r = u.host();
0040     for (const auto &i : common) {
0041         if (r.startsWith(i) && r.length() > i.length()) {
0042             r.remove(0, i.length());
0043             break; // strip prefix only once
0044         }
0045     }
0046 
0047     const int p = u.port(-1);
0048 
0049     if (p > 0)
0050         r = QStringLiteral(u"%1:%2").arg(r).arg(p);
0051 
0052     return r;
0053 }
0054 
0055 QString UrlUtils::urlHost(const QString &url)
0056 {
0057     return QUrl::fromUserInput(url).host();
0058 }
0059 
0060 QString UrlUtils::htmlFormattedUrl(const QString &url)
0061 {
0062     const QUrl parsedUrl = QUrl::fromUserInput(url);
0063 
0064     const QString path = parsedUrl.path();
0065     return QStringView(uR"(%1<font size="2">%2</font>)").arg(parsedUrl.host(), path == QStringView(u"/") ? QString() : path);
0066 }
0067 
0068 #include "moc_urlutils.cpp"