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