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

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 #pragma once
0010 
0011 #include "kgapicore_export.h"
0012 
0013 #include <QList>
0014 #include <QSharedPointer>
0015 #include <QUrl>
0016 
0017 namespace KGAPI2
0018 {
0019 
0020 /**
0021  * @brief Structure to store additional information about a feed.
0022  */
0023 class KGAPICORE_EXPORT FeedData
0024 {
0025 public:
0026     explicit FeedData()
0027         : startIndex(0)
0028         , itemsPerPage(0)
0029         , totalResults(0)
0030     {
0031     }
0032 
0033     int startIndex; /**< Index of first item on current feed page. */
0034     int itemsPerPage; /**< Number of items per feed page. This will be same
0035                            for all pages (except for the last one which can be
0036                            shorter). */
0037     int totalResults; /**< Number of all items. */
0038     QUrl nextPageUrl; /**< Link to next page of feed.*/
0039     QUrl requestUrl; /**< Original URL of the request. This value is filled
0040                           by AccessManager when passing the structure to a
0041                           service */
0042     QString syncToken; /**< Sync token that can be used for incremental
0043                             updates by some of the services.*/
0044 };
0045 
0046 class Object;
0047 using ObjectPtr = QSharedPointer<Object>;
0048 using ObjectsList = QList<ObjectPtr>;
0049 
0050 class Account;
0051 using AccountPtr = QSharedPointer<Account>;
0052 using AccountsList = QList<AccountPtr>;
0053 
0054 class AccountInfo;
0055 using AccountInfoPtr = QSharedPointer<AccountInfo>;
0056 using AccountInfosList = QList<AccountInfoPtr>;
0057 
0058 namespace People {
0059 
0060 class Person;
0061 using PersonPtr = QSharedPointer<Person>;
0062 using PersonList = QList<PersonPtr>;
0063 
0064 class ContactGroup;
0065 using ContactGroupPtr = QSharedPointer<ContactGroup>;
0066 using ContactGroupList = QList<ContactGroupPtr>;
0067 
0068 }
0069 
0070 class Calendar;
0071 using CalendarPtr = QSharedPointer<Calendar>;
0072 using CalendarsList = QList<CalendarPtr>;
0073 
0074 namespace Drive
0075 {
0076 
0077 class About;
0078 using AboutPtr = QSharedPointer<About>;
0079 using AboutsList = QList<AboutPtr>;
0080 
0081 class App;
0082 using AppPtr = QSharedPointer<App>;
0083 using AppsList = QList<AppPtr>;
0084 
0085 class Change;
0086 using ChangePtr = QSharedPointer<Change>;
0087 using ChangesList = QList<ChangePtr>;
0088 
0089 class ChildReference;
0090 using ChildReferencePtr = QSharedPointer<ChildReference>;
0091 using ChildReferencesList = QList<ChildReferencePtr>;
0092 
0093 class File;
0094 using FilePtr = QSharedPointer<File>;
0095 using FilesList = QList<FilePtr>;
0096 
0097 class ParentReference;
0098 using ParentReferencePtr = QSharedPointer<ParentReference>;
0099 using ParentReferencesList = QList<ParentReferencePtr>;
0100 
0101 class Permission;
0102 using PermissionPtr = QSharedPointer<Permission>;
0103 using PermissionsList = QList<PermissionPtr>;
0104 
0105 class Revision;
0106 using RevisionPtr = QSharedPointer<Revision>;
0107 using RevisionsList = QList<RevisionPtr>;
0108 
0109 class Drives;
0110 using DrivesPtr = QSharedPointer<Drives>;
0111 using DrivesList = QList<DrivesPtr>;
0112 
0113 class Teamdrive;
0114 using TeamdrivePtr = QSharedPointer<Teamdrive>;
0115 using TeamdrivesList = QList<TeamdrivePtr>;
0116 
0117 class User;
0118 using UserPtr = QSharedPointer<User>;
0119 using UsersList = QList<UserPtr>;
0120 
0121 }
0122 
0123 class Event;
0124 using EventPtr = QSharedPointer<Event>;
0125 using EventsList = QList<EventPtr>;
0126 
0127 class Location;
0128 using LocationPtr = QSharedPointer<Location>;
0129 using LocationsList = QList<LocationPtr>;
0130 
0131 class Reminder;
0132 using ReminderPtr = QSharedPointer<Reminder>;
0133 using RemindersList = QList<ReminderPtr>;
0134 
0135 class Task;
0136 using TaskPtr = QSharedPointer<Task>;
0137 using TasksList = QList<TaskPtr>;
0138 
0139 class TaskList;
0140 using TaskListPtr = QSharedPointer<TaskList>;
0141 using TaskListsList = QList<TaskListPtr>;
0142 
0143 namespace Blogger
0144 {
0145 class Blog;
0146 using BlogPtr = QSharedPointer<Blog>;
0147 using BlogsList = QList<BlogPtr>;
0148 
0149 class Comment;
0150 using CommentPtr = QSharedPointer<Comment>;
0151 using CommentsList = QList<CommentPtr>;
0152 
0153 class Page;
0154 using PagePtr = QSharedPointer<Page>;
0155 using PagesList = QList<PagePtr>;
0156 
0157 class Post;
0158 using PostPtr = QSharedPointer<Post>;
0159 using PostsList = QList<PostPtr>;
0160 
0161 }
0162 
0163 template<class T>
0164 ObjectsList operator<<(ObjectsList &objectsList, const QList<QSharedPointer<T>> &list)
0165 {
0166     for (const QSharedPointer<T> &item : list) {
0167         objectsList << item;
0168     }
0169 
0170     return objectsList;
0171 }
0172 
0173 /**
0174  * @brief Job error codes
0175  */
0176 enum Error {
0177     /* Internal LibKGAPI errors */
0178     NoError = 0, ///< LibKGAPI error - no error.
0179     UnknownError = 1, ///< LibKGAPI error - a general unidentified error.
0180     AuthError = 2, ///< LibKGAPI error - authentication process failed.
0181     UnknownAccount = 3, ///< LibKGAPI error - application requested unknown account.
0182     UnknownService = 4, ///< LibKGAPI error - application requested unknown service.
0183     InvalidResponse = 5, ///< LibKGAPI error - Google returned invalid response.
0184     BackendNotReady = 6, ///< @deprecated LibKGAPI error - backend is not ready (for example KWallet is not opened).
0185     InvalidAccount = 7, ///< LibKGAPI error - the KGAPI2::Account object is invalid.
0186     NetworkError = 8, ///< LibKGAPI error - standard network request returned a different code than 200.
0187     AuthCancelled = 9, ///< LibKGAPI error - when the authentication dialog is canceled.
0188 
0189     /* Following error codes identify Google errors */
0190     OK = 200, ///< Request successfully executed.
0191     Created = 201, ///< Create request successfully executed.
0192     NoContent = 204, ///< Tasks API returns 204 when task is successfully removed.
0193     ResumeIncomplete = 308, ///< Drive Api returns 308 when accepting a partial file upload
0194     TemporarilyMoved = 302, ///< The object is located on a different URL provided in reply.
0195     NotModified = 304, ///< Request was successful, but no data were updated.
0196     TemporarilyMovedUseSameMethod = 307, ///< The object is located at a different URL provided in the reply. The same request method must be used.
0197     BadRequest = 400, ///< Invalid (malformed) request.
0198     Unauthorized = 401, ///< Invalid or expired token. See KGAPI2::Account::refreshTokens().
0199     Forbidden = 403, ///< The requested data is not accessible to this account.
0200     NotFound = 404, ///< Requested object was not found on the remote side.
0201     Conflict = 409, ///< Object on the remote site differs from the submitted one. @see KGAPI2::Object::setEtag.
0202     Gone = 410, ///< The requested data does not exist anymore on the remote site.
0203     InternalError = 500, ///< An unexpected error occurred on the Google service.
0204     QuotaExceeded = 503 ///< User quota has been exceeded, the request should be sent again later.
0205 };
0206 
0207 /**
0208  * @since 2.0
0209  */
0210 enum ContentType { UnknownContentType = -1, JSON, XML };
0211 
0212 } // namespace KGAPI2