File indexing completed on 2024-05-12 05:22:18

0001 /*
0002  * This file is part of LibKGAPI library
0003  *
0004  * SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil@redhat.com>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #include "driveservice.h"
0010 #include "utils.h"
0011 
0012 #include <QUrlQuery>
0013 
0014 namespace KGAPI2
0015 {
0016 
0017 namespace Private
0018 {
0019 static const QUrl GoogleApisUrl(QStringLiteral("https://www.googleapis.com"));
0020 static const QString AppsBasePath(QStringLiteral("/drive/v2/about"));
0021 static const QString FilesBasePath(QStringLiteral("/drive/v2/files"));
0022 static const QString ChangeBasePath(QStringLiteral("/drive/v2/changes"));
0023 static const QString DrivesBasePath(QStringLiteral("/drive/v2/drives"));
0024 static const QString TeamdriveBasePath(QStringLiteral("/drive/v2/teamdrives"));
0025 }
0026 
0027 namespace DriveService
0028 {
0029 
0030 QUrl fetchAboutUrl(bool includeSubscribed, qlonglong maxChangeIdCount, qlonglong startChangeId)
0031 {
0032     QUrl url(Private::GoogleApisUrl);
0033     url.setPath(Private::AppsBasePath);
0034     QUrlQuery query(url);
0035     query.addQueryItem(QStringLiteral("includeSubscribed"), Utils::bool2Str(includeSubscribed));
0036     if (maxChangeIdCount > 0) {
0037         query.addQueryItem(QStringLiteral("maxChangeIdCount"), QString::number(maxChangeIdCount));
0038     }
0039     if (startChangeId > 0) {
0040         query.addQueryItem(QStringLiteral("startChangeId"), QString::number(startChangeId));
0041     }
0042     url.setQuery(query);
0043 
0044     return url;
0045 }
0046 
0047 QUrl fetchAppUrl(const QString &appId)
0048 {
0049     QUrl url(Private::GoogleApisUrl);
0050     url.setPath(Private::AppsBasePath % QLatin1Char('/') % appId);
0051     return url;
0052 }
0053 
0054 QUrl fetchAppsUrl()
0055 {
0056     QUrl url(Private::GoogleApisUrl);
0057     url.setPath(Private::AppsBasePath);
0058     return url;
0059 }
0060 
0061 QUrl fetchChildReference(const QString &folderId, const QString &referenceId)
0062 {
0063     QUrl url(Private::GoogleApisUrl);
0064     url.setPath(Private::FilesBasePath % QLatin1Char('/') % folderId % QLatin1StringView("/children/") % referenceId);
0065     return url;
0066 }
0067 
0068 QUrl fetchChildReferences(const QString &folderId)
0069 {
0070     QUrl url(Private::GoogleApisUrl);
0071     url.setPath(Private::FilesBasePath % QLatin1Char('/') % folderId % QLatin1StringView("/children"));
0072     return url;
0073 }
0074 
0075 QUrl createChildReference(const QString &folderId)
0076 {
0077     QUrl url(Private::GoogleApisUrl);
0078     url.setPath(Private::FilesBasePath % QLatin1Char('/') % folderId % QLatin1StringView("/children"));
0079     return url;
0080 }
0081 
0082 QUrl deleteChildReference(const QString &folderId, const QString &referenceId)
0083 {
0084     QUrl url(Private::GoogleApisUrl);
0085     url.setPath(Private::FilesBasePath % QLatin1Char('/') % folderId % QLatin1StringView("/children/") % referenceId);
0086     return url;
0087 }
0088 
0089 QUrl fetchChangeUrl(const QString &changeId)
0090 {
0091     QUrl url(Private::GoogleApisUrl);
0092     url.setPath(Private::ChangeBasePath % QLatin1Char('/') % changeId);
0093     return url;
0094 }
0095 
0096 QUrl copyFileUrl(const QString &fileId)
0097 {
0098     QUrl url(Private::GoogleApisUrl);
0099     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/copy"));
0100     return url;
0101 }
0102 
0103 QUrl deleteFileUrl(const QString &fileId)
0104 {
0105     QUrl url(Private::GoogleApisUrl);
0106     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId);
0107     return url;
0108 }
0109 
0110 QUrl fetchFileUrl(const QString &fileId)
0111 {
0112     QUrl url(Private::GoogleApisUrl);
0113     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId);
0114     return url;
0115 }
0116 
0117 QUrl fetchFilesUrl()
0118 {
0119     QUrl url(Private::GoogleApisUrl);
0120     url.setPath(Private::FilesBasePath);
0121     return url;
0122 }
0123 
0124 QUrl fetchChangesUrl()
0125 {
0126     QUrl url(Private::GoogleApisUrl);
0127     url.setPath(Private::ChangeBasePath);
0128     return url;
0129 }
0130 
0131 QUrl touchFileUrl(const QString &fileId)
0132 {
0133     QUrl url(Private::GoogleApisUrl);
0134     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/touch"));
0135     return url;
0136 }
0137 
0138 QUrl trashFileUrl(const QString &fileId)
0139 {
0140     QUrl url(Private::GoogleApisUrl);
0141     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/trash"));
0142     return url;
0143 }
0144 
0145 QUrl untrashFileUrl(const QString &fileId)
0146 {
0147     QUrl url(Private::GoogleApisUrl);
0148     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/untrash"));
0149     return url;
0150 }
0151 
0152 QUrl uploadMetadataFileUrl(const QString &fileId)
0153 {
0154     QUrl url(Private::GoogleApisUrl);
0155     if (!fileId.isEmpty()) {
0156         url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId);
0157     } else {
0158         url.setPath(Private::FilesBasePath);
0159     }
0160     return url;
0161 }
0162 
0163 QUrl uploadMediaFileUrl(const QString &fileId)
0164 {
0165     QUrl url(Private::GoogleApisUrl);
0166     if (!fileId.isEmpty()) {
0167         url.setPath(QLatin1StringView("/upload") % Private::FilesBasePath % QLatin1Char('/') % fileId);
0168     } else {
0169         url.setPath(QLatin1StringView("/upload") % Private::FilesBasePath);
0170     }
0171     return url;
0172 }
0173 
0174 QUrl uploadMultipartFileUrl(const QString &fileId)
0175 {
0176     QUrl url(Private::GoogleApisUrl);
0177     if (!fileId.isEmpty()) {
0178         url.setPath(QLatin1StringView("/upload") % Private::FilesBasePath % QLatin1Char('/') % fileId);
0179     } else {
0180         url.setPath(QLatin1StringView("/upload") % Private::FilesBasePath);
0181     }
0182     return url;
0183 }
0184 
0185 QUrl fetchParentReferenceUrl(const QString &fileId, const QString &referenceId)
0186 {
0187     QUrl url(Private::GoogleApisUrl);
0188     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/parents/") % referenceId);
0189     return url;
0190 }
0191 
0192 QUrl fetchParentReferencesUrl(const QString &fileId)
0193 {
0194     QUrl url(Private::GoogleApisUrl);
0195     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/parents"));
0196 
0197     return url;
0198 }
0199 
0200 QUrl createParentReferenceUrl(const QString &fileId)
0201 {
0202     QUrl url(Private::GoogleApisUrl);
0203     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/parents"));
0204     return url;
0205 }
0206 
0207 QUrl deleteParentReferenceUrl(const QString &fileId, const QString &referenceId)
0208 {
0209     QUrl url(Private::GoogleApisUrl);
0210     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/parents/") % referenceId);
0211     return url;
0212 }
0213 
0214 QUrl fetchPermissionsUrl(const QString &fileId)
0215 {
0216     QUrl url(Private::GoogleApisUrl);
0217     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/permissions"));
0218     return url;
0219 }
0220 
0221 QUrl fetchPermissionUrl(const QString &fileId, const QString &permissionId)
0222 {
0223     QUrl url(Private::GoogleApisUrl);
0224     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/permissions/") % permissionId);
0225     return url;
0226 }
0227 
0228 QUrl createPermissionUrl(const QString &fileId)
0229 {
0230     QUrl url(Private::GoogleApisUrl);
0231     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/permissions"));
0232     return url;
0233 }
0234 
0235 QUrl deletePermissionUrl(const QString &fileId, const QString &permissionId)
0236 {
0237     QUrl url(Private::GoogleApisUrl);
0238     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/permissions/") % permissionId);
0239     return url;
0240 }
0241 
0242 QUrl modifyPermissionUrl(const QString &fileId, const QString &permissionId)
0243 {
0244     QUrl url(Private::GoogleApisUrl);
0245     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/permissions/") % permissionId);
0246     return url;
0247 }
0248 
0249 QUrl fetchRevisionUrl(const QString &fileId, const QString &revisionId)
0250 {
0251     QUrl url(Private::GoogleApisUrl);
0252     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/revisions/") % revisionId);
0253     return url;
0254 }
0255 
0256 QUrl fetchRevisionsUrl(const QString &fileId)
0257 {
0258     QUrl url(Private::GoogleApisUrl);
0259     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/revisions"));
0260     return url;
0261 }
0262 
0263 QUrl deleteRevisionUrl(const QString &fileId, const QString &revisionId)
0264 {
0265     QUrl url(Private::GoogleApisUrl);
0266     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/revisions/") % revisionId);
0267     return url;
0268 }
0269 
0270 QUrl modifyRevisionUrl(const QString &fileId, const QString &revisionId)
0271 {
0272     QUrl url(Private::GoogleApisUrl);
0273     url.setPath(Private::FilesBasePath % QLatin1Char('/') % fileId % QLatin1StringView("/revisions/") % revisionId);
0274     return url;
0275 }
0276 
0277 QUrl fetchDrivesUrl(const QString &drivesId)
0278 {
0279     QUrl url(Private::GoogleApisUrl);
0280     url.setPath(Private::DrivesBasePath % QLatin1Char('/') % drivesId);
0281     return url;
0282 }
0283 
0284 QUrl hideDrivesUrl(const QString &drivesId, bool hide)
0285 {
0286     QUrl url(Private::GoogleApisUrl);
0287     url.setPath(Private::DrivesBasePath % QLatin1Char('/') % drivesId % (hide ? QLatin1StringView("/hide") : QLatin1StringView("/unhide")));
0288     return url;
0289 }
0290 
0291 QUrl fetchDrivesUrl()
0292 {
0293     QUrl url(Private::GoogleApisUrl);
0294     url.setPath(Private::DrivesBasePath);
0295     return url;
0296 }
0297 
0298 QUrl fetchTeamdriveUrl(const QString &teamdriveId)
0299 {
0300     QUrl url(Private::GoogleApisUrl);
0301     url.setPath(Private::TeamdriveBasePath % QLatin1Char('/') % teamdriveId);
0302     return url;
0303 }
0304 
0305 QUrl fetchTeamdrivesUrl()
0306 {
0307     QUrl url(Private::GoogleApisUrl);
0308     url.setPath(Private::TeamdriveBasePath);
0309     return url;
0310 }
0311 
0312 } // namespace DriveService
0313 
0314 } // namespace KGAPI2