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"