aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2024-03-26 11:30:03 +0100
committerChristian Stenger <christian.stenger@qt.io>2024-04-24 08:17:26 +0000
commit0adcf5760d9758cee7d9b7d1d88b1cf115f85f96 (patch)
treee8d4c23407e255611e9f6e1c2dfecfa49dd73873 /src
parentb63b8c25261f91dddae22c5d032a712ab923d590 (diff)
Axivion: Refactor URL construction
Change-Id: I286d5b30fe531ce4262aecf796d7fd270358df26 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/axivion/axivionplugin.cpp29
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);
}