File indexing completed on 2024-05-12 05:22:23
0001 /* 0002 SPDX-FileCopyrightText: 2019 David Barchiesi <david@barchie.si> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "teamdrive.h" 0008 #include "driveservice.h" 0009 #include "utils_p.h" 0010 0011 #include <QJsonDocument> 0012 #include <QUrlQuery> 0013 #include <QVariant> 0014 0015 namespace 0016 { 0017 static const QString ApiKind = QStringLiteral("drive#teamDrive"); 0018 static const QString ApiKindList = QStringLiteral("drive#teamDriveList"); 0019 } 0020 0021 using namespace KGAPI2; 0022 using namespace KGAPI2::Drive; 0023 0024 ///// DriveTeamdrive::Restrictions 0025 0026 class Q_DECL_HIDDEN Teamdrive::Restrictions::Private 0027 { 0028 public: 0029 Private() = default; 0030 Private(const Private &other) = default; 0031 0032 bool adminManagedRestrictions = false; 0033 bool copyRequiresWriterPermission = false; 0034 bool domainUsersOnly = false; 0035 bool teamMembersOnly = false; 0036 }; 0037 0038 Teamdrive::Restrictions::Restrictions() 0039 : d(new Private) 0040 { 0041 } 0042 0043 Teamdrive::Restrictions::Restrictions(const Teamdrive::Restrictions &other) 0044 : d(new Private(*(other.d))) 0045 { 0046 } 0047 0048 Teamdrive::Restrictions::~Restrictions() = default; 0049 0050 bool Teamdrive::Restrictions::operator==(const Teamdrive::Restrictions &other) const 0051 { 0052 GAPI_COMPARE(adminManagedRestrictions); 0053 GAPI_COMPARE(copyRequiresWriterPermission); 0054 GAPI_COMPARE(domainUsersOnly); 0055 GAPI_COMPARE(teamMembersOnly); 0056 return true; 0057 } 0058 0059 bool Teamdrive::Restrictions::adminManagedRestrictions() const 0060 { 0061 return d->adminManagedRestrictions; 0062 } 0063 0064 void Teamdrive::Restrictions::setAdminManagedRestrictions(bool adminManagedRestrictions) const 0065 { 0066 d->adminManagedRestrictions = adminManagedRestrictions; 0067 } 0068 0069 bool Teamdrive::Restrictions::copyRequiresWriterPermission() const 0070 { 0071 return d->copyRequiresWriterPermission; 0072 } 0073 0074 void Teamdrive::Restrictions::setCopyRequiresWriterPermission(bool copyRequiresWriterPermission) const 0075 { 0076 d->copyRequiresWriterPermission = copyRequiresWriterPermission; 0077 } 0078 0079 bool Teamdrive::Restrictions::domainUsersOnly() const 0080 { 0081 return d->domainUsersOnly; 0082 } 0083 0084 void Teamdrive::Restrictions::setDomainUsersOnly(bool domainUsersOnly) const 0085 { 0086 d->domainUsersOnly = domainUsersOnly; 0087 } 0088 0089 bool Teamdrive::Restrictions::teamMembersOnly() const 0090 { 0091 return d->teamMembersOnly; 0092 } 0093 0094 void Teamdrive::Restrictions::setTeamMembersOnly(bool teamMembersOnly) const 0095 { 0096 d->teamMembersOnly = teamMembersOnly; 0097 } 0098 0099 ///// DriveTeamdrive::Capabilities 0100 0101 class Q_DECL_HIDDEN Teamdrive::Capabilities::Private 0102 { 0103 public: 0104 Private() = default; 0105 Private(const Private &other) = default; 0106 0107 bool canAddChildren = false; 0108 bool canChangeCopyRequiresWriterPermissionRestriction = false; 0109 bool canChangeDomainUsersOnlyRestriction = false; 0110 bool canChangeTeamDriveBackground = false; 0111 bool canChangeTeamMembersOnlyRestriction = false; 0112 bool canComment = false; 0113 bool canCopy = false; 0114 bool canDeleteChildren = false; 0115 bool canDeleteTeamDrive = false; 0116 bool canDownload = false; 0117 bool canEdit = false; 0118 bool canListChildren = false; 0119 bool canManageMembers = false; 0120 bool canReadRevisions = false; 0121 bool canRename = false; 0122 bool canRenameTeamDrive = false; 0123 bool canShare = false; 0124 bool canTrashChildren = false; 0125 }; 0126 0127 Teamdrive::Capabilities::Capabilities() 0128 : d(new Private) 0129 { 0130 } 0131 0132 Teamdrive::Capabilities::Capabilities(const Teamdrive::Capabilities &other) 0133 : d(new Private(*(other.d))) 0134 { 0135 } 0136 0137 Teamdrive::Capabilities::~Capabilities() = default; 0138 0139 bool Teamdrive::Capabilities::operator==(const Teamdrive::Capabilities &other) const 0140 { 0141 GAPI_COMPARE(canAddChildren); 0142 GAPI_COMPARE(canChangeCopyRequiresWriterPermissionRestriction); 0143 GAPI_COMPARE(canChangeDomainUsersOnlyRestriction); 0144 GAPI_COMPARE(canChangeTeamDriveBackground); 0145 GAPI_COMPARE(canChangeTeamMembersOnlyRestriction); 0146 GAPI_COMPARE(canComment); 0147 GAPI_COMPARE(canCopy); 0148 GAPI_COMPARE(canDeleteChildren); 0149 GAPI_COMPARE(canDeleteTeamDrive); 0150 GAPI_COMPARE(canDownload); 0151 GAPI_COMPARE(canEdit); 0152 GAPI_COMPARE(canListChildren); 0153 GAPI_COMPARE(canManageMembers); 0154 GAPI_COMPARE(canReadRevisions); 0155 GAPI_COMPARE(canRename); 0156 GAPI_COMPARE(canRenameTeamDrive); 0157 GAPI_COMPARE(canShare); 0158 GAPI_COMPARE(canTrashChildren); 0159 return true; 0160 } 0161 0162 bool Teamdrive::Capabilities::canAddChildren() const 0163 { 0164 return d->canAddChildren; 0165 } 0166 0167 bool Teamdrive::Capabilities::canChangeCopyRequiresWriterPermissionRestriction() const 0168 { 0169 return d->canChangeCopyRequiresWriterPermissionRestriction; 0170 } 0171 0172 bool Teamdrive::Capabilities::canChangeDomainUsersOnlyRestriction() const 0173 { 0174 return d->canChangeDomainUsersOnlyRestriction; 0175 } 0176 0177 bool Teamdrive::Capabilities::canChangeTeamDriveBackground() const 0178 { 0179 return d->canChangeTeamDriveBackground; 0180 } 0181 0182 bool Teamdrive::Capabilities::canChangeTeamMembersOnlyRestriction() const 0183 { 0184 return d->canChangeTeamMembersOnlyRestriction; 0185 } 0186 0187 bool Teamdrive::Capabilities::canComment() const 0188 { 0189 return d->canComment; 0190 } 0191 0192 bool Teamdrive::Capabilities::canCopy() const 0193 { 0194 return d->canCopy; 0195 } 0196 0197 bool Teamdrive::Capabilities::canDeleteChildren() const 0198 { 0199 return d->canDeleteChildren; 0200 } 0201 0202 bool Teamdrive::Capabilities::canDeleteTeamDrive() const 0203 { 0204 return d->canDeleteTeamDrive; 0205 } 0206 0207 bool Teamdrive::Capabilities::canDownload() const 0208 { 0209 return d->canDownload; 0210 } 0211 0212 bool Teamdrive::Capabilities::canEdit() const 0213 { 0214 return d->canEdit; 0215 } 0216 0217 bool Teamdrive::Capabilities::canListChildren() const 0218 { 0219 return d->canListChildren; 0220 } 0221 0222 bool Teamdrive::Capabilities::canManageMembers() const 0223 { 0224 return d->canManageMembers; 0225 } 0226 0227 bool Teamdrive::Capabilities::canReadRevisions() const 0228 { 0229 return d->canReadRevisions; 0230 } 0231 0232 bool Teamdrive::Capabilities::canRename() const 0233 { 0234 return d->canRename; 0235 } 0236 0237 bool Teamdrive::Capabilities::canRenameTeamDrive() const 0238 { 0239 return d->canRenameTeamDrive; 0240 } 0241 0242 bool Teamdrive::Capabilities::canShare() const 0243 { 0244 return d->canShare; 0245 } 0246 0247 bool Teamdrive::Capabilities::canTrashChildren() const 0248 { 0249 return d->canTrashChildren; 0250 } 0251 0252 ///// DriveTeamdrive::BackgroundImageFile 0253 0254 class Q_DECL_HIDDEN Teamdrive::BackgroundImageFile::Private 0255 { 0256 public: 0257 Private() = default; 0258 Private(const Private &other) = default; 0259 0260 QString id; 0261 float xCoordinate = 0.0f; 0262 float yCoordinate = 0.0f; 0263 float width = 0.0f; 0264 }; 0265 0266 Teamdrive::BackgroundImageFile::BackgroundImageFile() 0267 : d(new Private) 0268 { 0269 } 0270 0271 Teamdrive::BackgroundImageFile::BackgroundImageFile(const Teamdrive::BackgroundImageFile &other) 0272 : d(new Private(*(other.d))) 0273 { 0274 } 0275 0276 Teamdrive::BackgroundImageFile::~BackgroundImageFile() = default; 0277 0278 bool Teamdrive::BackgroundImageFile::operator==(const Teamdrive::BackgroundImageFile &other) const 0279 { 0280 GAPI_COMPARE(id); 0281 GAPI_COMPARE(xCoordinate); 0282 GAPI_COMPARE(yCoordinate); 0283 GAPI_COMPARE(width); 0284 return true; 0285 } 0286 0287 QString Teamdrive::BackgroundImageFile::id() const 0288 { 0289 return d->id; 0290 } 0291 0292 void Teamdrive::BackgroundImageFile::setId(const QString &id) const 0293 { 0294 d->id = id; 0295 } 0296 0297 float Teamdrive::BackgroundImageFile::xCoordinate() const 0298 { 0299 return d->xCoordinate; 0300 } 0301 0302 void Teamdrive::BackgroundImageFile::setXCoordinate(const float xCoordinate) const 0303 { 0304 d->xCoordinate = xCoordinate; 0305 } 0306 0307 float Teamdrive::BackgroundImageFile::yCoordinate() const 0308 { 0309 return d->yCoordinate; 0310 } 0311 0312 void Teamdrive::BackgroundImageFile::setYCoordinate(const float yCoordinate) const 0313 { 0314 d->yCoordinate = yCoordinate; 0315 } 0316 0317 float Teamdrive::BackgroundImageFile::width() const 0318 { 0319 return d->width; 0320 } 0321 0322 void Teamdrive::BackgroundImageFile::setWidth(const float width) const 0323 { 0324 d->width = width; 0325 } 0326 0327 ///// DriveTeamdrive 0328 0329 class Q_DECL_HIDDEN Teamdrive::Private 0330 { 0331 public: 0332 Private() = default; 0333 Private(const Private &other) = default; 0334 0335 QString id; 0336 QString name; 0337 QString themeId; 0338 QString colorRgb; 0339 BackgroundImageFilePtr backgroundImageFile; 0340 QString backgroundImageLink; 0341 CapabilitiesPtr capabilities; 0342 QDateTime createdDate; 0343 RestrictionsPtr restrictions; 0344 0345 static TeamdrivePtr fromJSON(const QVariantMap &map); 0346 }; 0347 0348 TeamdrivePtr Teamdrive::Private::fromJSON(const QVariantMap &map) 0349 { 0350 if (!map.contains(Teamdrive::Fields::Kind) || map[Teamdrive::Fields::Kind].toString() != ApiKind) { 0351 return TeamdrivePtr(); 0352 } 0353 0354 auto teamdrive = TeamdrivePtr::create(); 0355 if (map.contains(Teamdrive::Fields::Id)) { 0356 teamdrive->d->id = map[Teamdrive::Fields::Id].toString(); 0357 } 0358 if (map.contains(Teamdrive::Fields::Name)) { 0359 teamdrive->d->name = map[Teamdrive::Fields::Name].toString(); 0360 } 0361 if (map.contains(Teamdrive::Fields::ThemeId)) { 0362 teamdrive->d->themeId = map[Teamdrive::Fields::ThemeId].toString(); 0363 } 0364 if (map.contains(Teamdrive::Fields::ColorRgb)) { 0365 teamdrive->d->colorRgb = map[Teamdrive::Fields::ColorRgb].toString(); 0366 } 0367 if (map.contains(Teamdrive::Fields::BackgroundImageLink)) { 0368 teamdrive->d->backgroundImageLink = map[Teamdrive::Fields::BackgroundImageLink].toString(); 0369 } 0370 if (map.contains(Teamdrive::Fields::CreatedDate)) { 0371 teamdrive->d->createdDate = QDateTime::fromString(map[Teamdrive::Fields::CreatedDate].toString(), Qt::ISODate); 0372 } 0373 0374 if (map.contains(Teamdrive::Fields::BackgroundImageFile)) { 0375 const QVariantMap backgroundImageFileMap = map[Teamdrive::Fields::BackgroundImageFile].toMap(); 0376 auto backgroundImageFile = BackgroundImageFilePtr::create(); 0377 backgroundImageFile->d->id = backgroundImageFileMap[Teamdrive::BackgroundImageFile::Fields::Id].toString(); 0378 backgroundImageFile->d->xCoordinate = backgroundImageFileMap[Teamdrive::BackgroundImageFile::Fields::XCoordinate].toReal(); 0379 backgroundImageFile->d->yCoordinate = backgroundImageFileMap[Teamdrive::BackgroundImageFile::Fields::YCoordinate].toReal(); 0380 backgroundImageFile->d->width = backgroundImageFileMap[Teamdrive::BackgroundImageFile::Fields::Width].toReal(); 0381 teamdrive->d->backgroundImageFile = backgroundImageFile; 0382 } 0383 0384 if (map.contains(Teamdrive::Fields::Capabilities)) { 0385 const QVariantMap capabilitiesMap = map[Teamdrive::Fields::Capabilities].toMap(); 0386 auto capabilities = CapabilitiesPtr::create(); 0387 capabilities->d->canAddChildren = capabilitiesMap[Teamdrive::Capabilities::Fields::CanAddChildren].toBool(); 0388 capabilities->d->canChangeCopyRequiresWriterPermissionRestriction = 0389 capabilitiesMap[Teamdrive::Capabilities::Fields::CanChangeCopyRequiresWriterPermissionRestriction].toBool(); 0390 capabilities->d->canChangeDomainUsersOnlyRestriction = capabilitiesMap[Teamdrive::Capabilities::Fields::CanChangeDomainUsersOnlyRestriction].toBool(); 0391 capabilities->d->canChangeTeamDriveBackground = capabilitiesMap[Teamdrive::Capabilities::Fields::CanChangeTeamDriveBackground].toBool(); 0392 capabilities->d->canChangeTeamMembersOnlyRestriction = capabilitiesMap[Teamdrive::Capabilities::Fields::CanChangeTeamMembersOnlyRestriction].toBool(); 0393 capabilities->d->canComment = capabilitiesMap[Teamdrive::Capabilities::Fields::CanComment].toBool(); 0394 capabilities->d->canCopy = capabilitiesMap[Teamdrive::Capabilities::Fields::CanCopy].toBool(); 0395 capabilities->d->canDeleteChildren = capabilitiesMap[Teamdrive::Capabilities::Fields::CanDeleteChildren].toBool(); 0396 capabilities->d->canDeleteTeamDrive = capabilitiesMap[Teamdrive::Capabilities::Fields::CanDeleteTeamDrive].toBool(); 0397 capabilities->d->canDownload = capabilitiesMap[Teamdrive::Capabilities::Fields::CanDownload].toBool(); 0398 capabilities->d->canEdit = capabilitiesMap[Teamdrive::Capabilities::Fields::CanEdit].toBool(); 0399 capabilities->d->canListChildren = capabilitiesMap[Teamdrive::Capabilities::Fields::CanListChildren].toBool(); 0400 capabilities->d->canManageMembers = capabilitiesMap[Teamdrive::Capabilities::Fields::CanManageMembers].toBool(); 0401 capabilities->d->canReadRevisions = capabilitiesMap[Teamdrive::Capabilities::Fields::CanReadRevisions].toBool(); 0402 capabilities->d->canRename = capabilitiesMap[Teamdrive::Capabilities::Fields::CanRename].toBool(); 0403 capabilities->d->canRenameTeamDrive = capabilitiesMap[Teamdrive::Capabilities::Fields::CanRenameTeamDrive].toBool(); 0404 capabilities->d->canShare = capabilitiesMap[Teamdrive::Capabilities::Fields::CanShare].toBool(); 0405 capabilities->d->canTrashChildren = capabilitiesMap[Teamdrive::Capabilities::Fields::CanTrashChildren].toBool(); 0406 teamdrive->d->capabilities = capabilities; 0407 } 0408 0409 if (map.contains(Teamdrive::Fields::Restrictions)) { 0410 const QVariantMap restrictionsMap = map[Teamdrive::Fields::Restrictions].toMap(); 0411 auto restrictions = RestrictionsPtr::create(); 0412 restrictions->d->adminManagedRestrictions = restrictionsMap[Teamdrive::Restrictions::Fields::AdminManagedRestrictions].toBool(); 0413 restrictions->d->copyRequiresWriterPermission = restrictionsMap[Teamdrive::Restrictions::Fields::CopyRequiresWriterPermission].toBool(); 0414 restrictions->d->domainUsersOnly = restrictionsMap[Teamdrive::Restrictions::Fields::DomainUsersOnly].toBool(); 0415 restrictions->d->teamMembersOnly = restrictionsMap[Teamdrive::Restrictions::Fields::TeamMembersOnly].toBool(); 0416 teamdrive->d->restrictions = restrictions; 0417 } 0418 0419 return teamdrive; 0420 } 0421 0422 const QString Teamdrive::Restrictions::Fields::AdminManagedRestrictions = QStringLiteral("adminManagedRestrictions"); 0423 const QString Teamdrive::Restrictions::Fields::CopyRequiresWriterPermission = QStringLiteral("copyRequiresWriterPermission"); 0424 const QString Teamdrive::Restrictions::Fields::DomainUsersOnly = QStringLiteral("domainUsersOnly"); 0425 const QString Teamdrive::Restrictions::Fields::TeamMembersOnly = QStringLiteral("teamMembersOnly"); 0426 0427 const QString Teamdrive::Capabilities::Fields::CanAddChildren = QStringLiteral("canAddChildren"); 0428 const QString Teamdrive::Capabilities::Fields::CanChangeCopyRequiresWriterPermissionRestriction = 0429 QStringLiteral("canChangeCopyRequiresWriterPermissionRestriction"); 0430 const QString Teamdrive::Capabilities::Fields::CanChangeDomainUsersOnlyRestriction = QStringLiteral("canChangeDomainUsersOnlyRestriction"); 0431 const QString Teamdrive::Capabilities::Fields::CanChangeTeamDriveBackground = QStringLiteral("canChangeTeamDriveBackground"); 0432 const QString Teamdrive::Capabilities::Fields::CanChangeTeamMembersOnlyRestriction = QStringLiteral("canChangeTeamMembersOnlyRestriction"); 0433 const QString Teamdrive::Capabilities::Fields::CanComment = QStringLiteral("canComment"); 0434 const QString Teamdrive::Capabilities::Fields::CanCopy = QStringLiteral("canCopy"); 0435 const QString Teamdrive::Capabilities::Fields::CanDeleteChildren = QStringLiteral("canDeleteChildren"); 0436 const QString Teamdrive::Capabilities::Fields::CanDeleteTeamDrive = QStringLiteral("canDeleteTeamDrive"); 0437 const QString Teamdrive::Capabilities::Fields::CanDownload = QStringLiteral("canDownload"); 0438 const QString Teamdrive::Capabilities::Fields::CanEdit = QStringLiteral("canEdit"); 0439 const QString Teamdrive::Capabilities::Fields::CanListChildren = QStringLiteral("canListChildren"); 0440 const QString Teamdrive::Capabilities::Fields::CanManageMembers = QStringLiteral("canManageMembers"); 0441 const QString Teamdrive::Capabilities::Fields::CanReadRevisions = QStringLiteral("canReadRevisions"); 0442 const QString Teamdrive::Capabilities::Fields::CanRename = QStringLiteral("canRename"); 0443 const QString Teamdrive::Capabilities::Fields::CanRenameTeamDrive = QStringLiteral("canRenameTeamDrive"); 0444 const QString Teamdrive::Capabilities::Fields::CanShare = QStringLiteral("canShare"); 0445 const QString Teamdrive::Capabilities::Fields::CanTrashChildren = QStringLiteral("canTrashChildren"); 0446 0447 const QString Teamdrive::BackgroundImageFile::Fields::Id = QStringLiteral("id"); 0448 const QString Teamdrive::BackgroundImageFile::Fields::XCoordinate = QStringLiteral("xCoordinate"); 0449 const QString Teamdrive::BackgroundImageFile::Fields::YCoordinate = QStringLiteral("yCoordinate"); 0450 const QString Teamdrive::BackgroundImageFile::Fields::Width = QStringLiteral("width"); 0451 0452 const QString Teamdrive::Fields::Items = QStringLiteral("items"); 0453 const QString Teamdrive::Fields::KindDrive = QStringLiteral("kind"); 0454 const QString Teamdrive::Fields::PageToken = QStringLiteral("pageToken"); 0455 const QString Teamdrive::Fields::NextPageToken = QStringLiteral("nextPageToken"); 0456 const QString Teamdrive::Fields::Id = QStringLiteral("id"); 0457 const QString Teamdrive::Fields::Kind = QStringLiteral("kind"); 0458 const QString Teamdrive::Fields::Name = QStringLiteral("name"); 0459 const QString Teamdrive::Fields::ThemeId = QStringLiteral("themeId"); 0460 const QString Teamdrive::Fields::ColorRgb = QStringLiteral("colorRgb"); 0461 const QString Teamdrive::Fields::BackgroundImageFile = QStringLiteral("backgroundImageFile"); 0462 const QString Teamdrive::Fields::BackgroundImageLink = QStringLiteral("backgroundImageLink"); 0463 const QString Teamdrive::Fields::Capabilities = QStringLiteral("capabilities"); 0464 const QString Teamdrive::Fields::CreatedDate = QStringLiteral("createdDate"); 0465 const QString Teamdrive::Fields::Restrictions = QStringLiteral("restrictions"); 0466 0467 Teamdrive::Teamdrive() 0468 : KGAPI2::Object() 0469 , d(new Private) 0470 { 0471 } 0472 0473 Teamdrive::Teamdrive(const Teamdrive &other) 0474 : KGAPI2::Object(other) 0475 , d(new Private(*(other.d))) 0476 { 0477 } 0478 0479 Teamdrive::~Teamdrive() = default; 0480 0481 bool Teamdrive::operator==(const Teamdrive &other) const 0482 { 0483 if (!Object::operator==(other)) { 0484 return false; 0485 } 0486 GAPI_COMPARE(id); 0487 GAPI_COMPARE(name); 0488 GAPI_COMPARE(themeId); 0489 GAPI_COMPARE(colorRgb); 0490 GAPI_COMPARE_SHAREDPTRS(backgroundImageFile); 0491 GAPI_COMPARE(backgroundImageLink); 0492 GAPI_COMPARE_SHAREDPTRS(capabilities); 0493 GAPI_COMPARE(createdDate); 0494 GAPI_COMPARE_SHAREDPTRS(restrictions); 0495 return true; 0496 } 0497 0498 QString Teamdrive::id() const 0499 { 0500 return d->id; 0501 } 0502 0503 void Teamdrive::setId(const QString &id) const 0504 { 0505 d->id = id; 0506 } 0507 0508 QString Teamdrive::name() const 0509 { 0510 return d->name; 0511 } 0512 0513 void Teamdrive::setName(const QString &name) const 0514 { 0515 d->name = name; 0516 } 0517 0518 QString Teamdrive::themeId() const 0519 { 0520 return d->themeId; 0521 } 0522 0523 void Teamdrive::setThemeId(const QString &themeId) const 0524 { 0525 d->themeId = themeId; 0526 } 0527 0528 QString Teamdrive::colorRgb() const 0529 { 0530 return d->colorRgb; 0531 } 0532 0533 void Teamdrive::setColorRgb(const QString &colorRgb) const 0534 { 0535 d->colorRgb = colorRgb; 0536 } 0537 0538 Teamdrive::BackgroundImageFilePtr Teamdrive::backgroundImageFile() const 0539 { 0540 return d->backgroundImageFile; 0541 } 0542 0543 void Teamdrive::setBackgroundImageFile(const Teamdrive::BackgroundImageFilePtr &backgroundImageFile) const 0544 { 0545 d->backgroundImageFile = backgroundImageFile; 0546 } 0547 0548 QString Teamdrive::backgroundImageLink() const 0549 { 0550 return d->backgroundImageLink; 0551 } 0552 0553 Teamdrive::CapabilitiesPtr Teamdrive::capabilities() const 0554 { 0555 return d->capabilities; 0556 } 0557 0558 QDateTime Teamdrive::createdDate() const 0559 { 0560 return d->createdDate; 0561 } 0562 0563 void Teamdrive::setRestrictions(const Teamdrive::RestrictionsPtr &restrictions) const 0564 { 0565 d->restrictions = restrictions; 0566 } 0567 0568 Teamdrive::RestrictionsPtr Teamdrive::restrictions() const 0569 { 0570 return d->restrictions; 0571 } 0572 0573 TeamdrivePtr Teamdrive::fromJSON(const QByteArray &jsonData) 0574 { 0575 QJsonDocument document = QJsonDocument::fromJson(jsonData); 0576 if (document.isNull()) { 0577 return TeamdrivePtr(); 0578 } 0579 0580 const QVariant data = document.toVariant(); 0581 return Private::fromJSON(data.toMap()); 0582 } 0583 0584 TeamdrivesList Teamdrive::fromJSONFeed(const QByteArray &jsonData, FeedData &feedData) 0585 { 0586 QJsonDocument document = QJsonDocument::fromJson(jsonData); 0587 if (document.isNull()) { 0588 return TeamdrivesList(); 0589 } 0590 0591 const QVariant data = document.toVariant(); 0592 const QVariantMap map = data.toMap(); 0593 if (!map.contains(Teamdrive::Fields::Kind) || map[Teamdrive::Fields::Kind].toString() != ApiKindList) { 0594 return TeamdrivesList(); 0595 } 0596 0597 if (map.contains(Teamdrive::Fields::NextPageToken)) { 0598 feedData.nextPageUrl = DriveService::fetchTeamdrivesUrl(); 0599 QUrlQuery query(feedData.nextPageUrl); 0600 query.addQueryItem(Teamdrive::Fields::PageToken, map.value(Teamdrive::Fields::NextPageToken).toString()); 0601 feedData.nextPageUrl.setQuery(query); 0602 } 0603 0604 TeamdrivesList list; 0605 const QVariantList items = map[Teamdrive::Fields::Items].toList(); 0606 for (const QVariant &item : items) { 0607 const TeamdrivePtr teamdrive = Private::fromJSON(item.toMap()); 0608 0609 if (!teamdrive.isNull()) { 0610 list << teamdrive; 0611 } 0612 } 0613 0614 return list; 0615 } 0616 0617 QByteArray Teamdrive::toJSON(const TeamdrivePtr &teamdrive) 0618 { 0619 QVariantMap teamDriveMap; 0620 teamDriveMap[Teamdrive::Fields::Kind] = ApiKind; 0621 if (!teamdrive->id().isEmpty()) { 0622 teamDriveMap[Teamdrive::Fields::Id] = teamdrive->id(); 0623 } 0624 if (!teamdrive->name().isEmpty()) { 0625 teamDriveMap[Teamdrive::Fields::Name] = teamdrive->name(); 0626 } 0627 if (!teamdrive->themeId().isEmpty()) { 0628 teamDriveMap[Teamdrive::Fields::ThemeId] = teamdrive->themeId(); 0629 } 0630 if (!teamdrive->colorRgb().isEmpty()) { 0631 teamDriveMap[Teamdrive::Fields::ColorRgb] = teamdrive->colorRgb(); 0632 } 0633 if (!teamdrive->backgroundImageLink().isEmpty()) { 0634 teamDriveMap[Teamdrive::Fields::BackgroundImageLink] = teamdrive->backgroundImageLink(); 0635 } 0636 if (teamdrive->createdDate().isValid()) { 0637 teamDriveMap[Teamdrive::Fields::CreatedDate] = teamdrive->createdDate(); 0638 } 0639 0640 if (teamdrive->restrictions()) { 0641 QVariantMap restrictionsMap; 0642 restrictionsMap[Teamdrive::Restrictions::Fields::AdminManagedRestrictions] = teamdrive->restrictions()->adminManagedRestrictions(); 0643 restrictionsMap[Teamdrive::Restrictions::Fields::CopyRequiresWriterPermission] = teamdrive->restrictions()->copyRequiresWriterPermission(); 0644 restrictionsMap[Teamdrive::Restrictions::Fields::DomainUsersOnly] = teamdrive->restrictions()->domainUsersOnly(); 0645 restrictionsMap[Teamdrive::Restrictions::Fields::TeamMembersOnly] = teamdrive->restrictions()->teamMembersOnly(); 0646 teamDriveMap[Teamdrive::Fields::Restrictions] = restrictionsMap; 0647 } 0648 0649 if (teamdrive->backgroundImageFile()) { 0650 QVariantMap backgroundImageFileMap; 0651 backgroundImageFileMap[Teamdrive::BackgroundImageFile::Fields::Id] = teamdrive->backgroundImageFile()->id(); 0652 backgroundImageFileMap[Teamdrive::BackgroundImageFile::Fields::XCoordinate] = teamdrive->backgroundImageFile()->xCoordinate(); 0653 backgroundImageFileMap[Teamdrive::BackgroundImageFile::Fields::YCoordinate] = teamdrive->backgroundImageFile()->yCoordinate(); 0654 backgroundImageFileMap[Teamdrive::BackgroundImageFile::Fields::Width] = teamdrive->backgroundImageFile()->width(); 0655 teamDriveMap[Teamdrive::Fields::BackgroundImageFile] = backgroundImageFileMap; 0656 } 0657 0658 if (teamdrive->capabilities()) { 0659 QVariantMap capabilitiesMap; 0660 capabilitiesMap[Teamdrive::Capabilities::Fields::CanAddChildren] = teamdrive->capabilities()->canAddChildren(); 0661 capabilitiesMap[Teamdrive::Capabilities::Fields::CanChangeCopyRequiresWriterPermissionRestriction] = 0662 teamdrive->capabilities()->canChangeCopyRequiresWriterPermissionRestriction(); 0663 capabilitiesMap[Teamdrive::Capabilities::Fields::CanChangeDomainUsersOnlyRestriction] = 0664 teamdrive->capabilities()->canChangeDomainUsersOnlyRestriction(); 0665 capabilitiesMap[Teamdrive::Capabilities::Fields::CanChangeTeamDriveBackground] = teamdrive->capabilities()->canChangeTeamDriveBackground(); 0666 capabilitiesMap[Teamdrive::Capabilities::Fields::CanChangeTeamMembersOnlyRestriction] = 0667 teamdrive->capabilities()->canChangeTeamMembersOnlyRestriction(); 0668 capabilitiesMap[Teamdrive::Capabilities::Fields::CanComment] = teamdrive->capabilities()->canComment(); 0669 capabilitiesMap[Teamdrive::Capabilities::Fields::CanCopy] = teamdrive->capabilities()->canCopy(); 0670 capabilitiesMap[Teamdrive::Capabilities::Fields::CanDeleteChildren] = teamdrive->capabilities()->canDeleteChildren(); 0671 capabilitiesMap[Teamdrive::Capabilities::Fields::CanDeleteTeamDrive] = teamdrive->capabilities()->canDeleteTeamDrive(); 0672 capabilitiesMap[Teamdrive::Capabilities::Fields::CanDownload] = teamdrive->capabilities()->canDownload(); 0673 capabilitiesMap[Teamdrive::Capabilities::Fields::CanEdit] = teamdrive->capabilities()->canEdit(); 0674 capabilitiesMap[Teamdrive::Capabilities::Fields::CanListChildren] = teamdrive->capabilities()->canListChildren(); 0675 capabilitiesMap[Teamdrive::Capabilities::Fields::CanManageMembers] = teamdrive->capabilities()->canManageMembers(); 0676 capabilitiesMap[Teamdrive::Capabilities::Fields::CanReadRevisions] = teamdrive->capabilities()->canReadRevisions(); 0677 capabilitiesMap[Teamdrive::Capabilities::Fields::CanRename] = teamdrive->capabilities()->canRename(); 0678 capabilitiesMap[Teamdrive::Capabilities::Fields::CanRenameTeamDrive] = teamdrive->capabilities()->canRenameTeamDrive(); 0679 capabilitiesMap[Teamdrive::Capabilities::Fields::CanShare] = teamdrive->capabilities()->canShare(); 0680 capabilitiesMap[Teamdrive::Capabilities::Fields::CanTrashChildren] = teamdrive->capabilities()->canTrashChildren(); 0681 teamDriveMap[Teamdrive::Fields::Capabilities] = capabilitiesMap; 0682 } 0683 0684 QJsonDocument document = QJsonDocument::fromVariant(teamDriveMap); 0685 return document.toJson(QJsonDocument::Compact); 0686 }