diff options
author | Christian Stenger <christian.stenger@qt.io> | 2024-03-26 11:30:03 +0100 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2024-04-24 08:17:26 +0000 |
commit | 0adcf5760d9758cee7d9b7d1d88b1cf115f85f96 (patch) | |
tree | e8d4c23407e255611e9f6e1c2dfecfa49dd73873 /src/plugins | |
parent | b63b8c25261f91dddae22c5d032a712ab923d590 (diff) |
Axivion: Refactor URL construction
Change-Id: I286d5b30fe531ce4262aecf796d7fd270358df26
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/axivion/axivionplugin.cpp | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/plugins/axivion/axivionplugin.cpp b/src/plugins/axivion/axivionplugin.cpp index f04bf93529..062da02feb 100644 --- a/src/plugins/axivion/axivionplugin.cpp +++ b/src/plugins/axivion/axivionplugin.cpp @@ -352,11 +352,16 @@ void AxivionPluginPrivate::onStartupProjectChanged(Project *project) fetchProjectInfo(projSettings->dashboardProjectName()); } -static QUrl urlForProject(const QString &projectName) +static QUrl constructUrl(const QString &projectName, const QString &subPath, const QUrlQuery &query) { if (!dd->m_dashboardInfo) return {}; - return dd->m_dashboardInfo->source.resolved(QString("api/projects/")).resolved(projectName); + QUrl url = dd->m_dashboardInfo->source.resolved(QString("api/projects/" + projectName + '/')); + if (!subPath.isEmpty() && QTC_GUARD(!subPath.startsWith('/'))) + url = url.resolved(subPath); + if (!query.isEmpty()) + url.setQuery(query); + return url; } static constexpr int httpStatusCodeOk = 200; @@ -766,9 +771,7 @@ Group issueTableRecipe(const IssueListSearch &search, const IssueTableHandler &h if (query.isEmpty()) return {}; // TODO: Call handler with unexpected? - QUrl url = urlForProject(dd->m_currentProjectInfo.value().name + '/') - .resolved(QString("issues")); - url.setQuery(query); + const QUrl url = constructUrl(dd->m_currentProjectInfo.value().name, "issues", query); return fetchDataRecipe<Dto::IssueTableDto>(url, handler); } @@ -778,8 +781,8 @@ Group lineMarkerRecipe(const FilePath &filePath, const LineMarkerHandler &handle QTC_ASSERT(!filePath.isEmpty(), return {}); // TODO: Call handler with unexpected? const QString fileName = QString::fromUtf8(QUrl::toPercentEncoding(filePath.path())); - const QUrl url = urlForProject(dd->m_currentProjectInfo.value().name + '/') - .resolved(QString("files?filename=" + fileName)); + const QUrlQuery query({{"filename", fileName}}); + const QUrl url = constructUrl(dd->m_currentProjectInfo.value().name, "files", query); return fetchDataRecipe<Dto::FileViewDto>(url, handler); } @@ -787,11 +790,9 @@ Group issueHtmlRecipe(const QString &issueId, const HtmlHandler &handler) { QTC_ASSERT(dd->m_currentProjectInfo, return {}); // TODO: Call handler with unexpected? - const QUrl url = urlForProject(dd->m_currentProjectInfo.value().name + '/') - .resolved(QString("issues/")) - .resolved(QString(issueId + '/')) - .resolved(QString("properties")); - + const QUrl url = constructUrl(dd->m_currentProjectInfo.value().name, + QString("issues/" + issueId + "/properties/"), + {}); return fetchHtmlRecipe(url, handler); } @@ -841,8 +842,8 @@ void AxivionPluginPrivate::fetchProjectInfo(const QString &projectName) Group tableInfoRecipe(const QString &prefix, const TableInfoHandler &handler) { - const QUrl url = urlForProject(dd->m_currentProjectInfo.value().name + '/') - .resolved(QString("issues_meta?kind=" + prefix)); + const QUrlQuery query({{"kind", prefix}}); + const QUrl url = constructUrl(dd->m_currentProjectInfo.value().name, "issues_meta", query); return fetchDataRecipe<Dto::TableInfoDto>(url, handler); } |