1 /* 2 * This file is part of LibKGAPI library 3 * 4 * SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil@redhat.com> 5 * 6 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 7 */ 8 9 #pragma once 10 11 #include "kgapicore_export.h" 12 13 #include <QSharedPointer> 14 #include <QList> 15 #include <QUrl> 16 17 namespace KGAPI2 18 { 19 20 /** 21 * @brief Structure to store additional information about a feed. 22 */ 23 class KGAPICORE_EXPORT FeedData { 24 25 public: FeedData()26 explicit FeedData(): 27 startIndex(0), 28 itemsPerPage(0), 29 totalResults(0) 30 { } 31 32 int startIndex; /**< Index of first item on current feed page. */ 33 int itemsPerPage; /**< Number of items per feed page. This will be same 34 for all pages (except for the last one which can be 35 shorter). */ 36 int totalResults; /**< Number of all items. */ 37 QUrl nextPageUrl; /**< Link to next page of feed.*/ 38 QUrl requestUrl; /**< Original URL of the request. This value is filled 39 by AccessManager when passing the structure to a 40 service */ 41 QString syncToken; /**< Sync token that can be used for incremental 42 updates by some of the services.*/ 43 }; 44 45 46 class Object; 47 using ObjectPtr = QSharedPointer<Object>; 48 using ObjectsList = QList<ObjectPtr>; 49 50 class Account; 51 using AccountPtr = QSharedPointer<Account>; 52 using AccountsList = QList<AccountPtr>; 53 54 class AccountInfo; 55 using AccountInfoPtr = QSharedPointer<AccountInfo>; 56 using AccountInfosList = QList<AccountInfoPtr>; 57 58 class Contact; 59 using ContactPtr = QSharedPointer<Contact>; 60 using ContactsList = QList<ContactPtr>; 61 62 class ContactsGroup; 63 using ContactsGroupPtr = QSharedPointer<ContactsGroup>; 64 using ContactsGroupsList = QList<ContactsGroupPtr>; 65 66 class Calendar; 67 using CalendarPtr = QSharedPointer<Calendar>; 68 using CalendarsList = QList<CalendarPtr>; 69 70 namespace Drive 71 { 72 73 class About; 74 using AboutPtr = QSharedPointer<About>; 75 using AboutsList = QList<AboutPtr>; 76 77 class App; 78 using AppPtr = QSharedPointer<App>; 79 using AppsList = QList<AppPtr>; 80 81 class Change; 82 using ChangePtr = QSharedPointer<Change>; 83 using ChangesList = QList<ChangePtr>; 84 85 class ChildReference; 86 using ChildReferencePtr = QSharedPointer<ChildReference>; 87 using ChildReferencesList = QList<ChildReferencePtr>; 88 89 class File; 90 using FilePtr = QSharedPointer<File>; 91 using FilesList = QList<FilePtr>; 92 93 class ParentReference; 94 using ParentReferencePtr = QSharedPointer<ParentReference>; 95 using ParentReferencesList = QList<ParentReferencePtr>; 96 97 class Permission; 98 using PermissionPtr = QSharedPointer<Permission>; 99 using PermissionsList = QList<PermissionPtr>; 100 101 class Revision; 102 using RevisionPtr = QSharedPointer<Revision>; 103 using RevisionsList = QList<RevisionPtr>; 104 105 class Drives; 106 using DrivesPtr = QSharedPointer<Drives>; 107 using DrivesList = QList<DrivesPtr>; 108 109 class Teamdrive; 110 using TeamdrivePtr = QSharedPointer<Teamdrive>; 111 using TeamdrivesList = QList<TeamdrivePtr>; 112 113 class User; 114 using UserPtr = QSharedPointer<User>; 115 using UsersList = QList<UserPtr>; 116 117 } 118 119 class Event; 120 using EventPtr = QSharedPointer<Event>; 121 using EventsList = QList<EventPtr>; 122 123 class Location; 124 using LocationPtr = QSharedPointer<Location>; 125 using LocationsList = QList<LocationPtr>; 126 127 class Reminder; 128 using ReminderPtr = QSharedPointer<Reminder>; 129 using RemindersList = QList<ReminderPtr>; 130 131 class Task; 132 using TaskPtr = QSharedPointer<Task>; 133 using TasksList = QList<TaskPtr>; 134 135 class TaskList; 136 using TaskListPtr = QSharedPointer<TaskList>; 137 using TaskListsList = QList<TaskListPtr>; 138 139 namespace Blogger 140 { 141 class Blog; 142 using BlogPtr = QSharedPointer<Blog>; 143 using BlogsList = QList<BlogPtr>; 144 145 class Comment; 146 using CommentPtr = QSharedPointer<Comment>; 147 using CommentsList = QList<CommentPtr>; 148 149 class Page; 150 using PagePtr = QSharedPointer<Page>; 151 using PagesList = QList<PagePtr>; 152 153 class Post; 154 using PostPtr = QSharedPointer<Post>; 155 using PostsList = QList<PostPtr>; 156 157 } 158 159 template<class T> 160 ObjectsList operator<<(ObjectsList &objectsList, const QList< QSharedPointer<T> > &list) 161 { 162 for (const QSharedPointer<T> &item : list) { 163 objectsList << item; 164 } 165 166 return objectsList; 167 } 168 169 /** 170 * @brief Job error codes 171 */ 172 enum Error { 173 /* Internal LibKGAPI errors */ 174 NoError = 0, ///< LibKGAPI error - no error. 175 UnknownError = 1, ///< LibKGAPI error - a general unidentified error. 176 AuthError = 2, ///< LibKGAPI error - authentication process failed. 177 UnknownAccount = 3, ///< LibKGAPI error - application requested unknown account. 178 UnknownService = 4, ///< LibKGAPI error - application requested unknown service. 179 InvalidResponse = 5, ///< LibKGAPI error - Google returned invalid response. 180 BackendNotReady = 6, ///< @deprecated LibKGAPI error - backend is not ready (for example KWallet is not opened). 181 InvalidAccount = 7, ///< LibKGAPI error - the KGAPI2::Account object is invalid. 182 NetworkError = 8, ///< LibKGAPI error - standard network request returned a different code than 200. 183 AuthCancelled = 9, ///< LibKGAPI error - when the authentication dialog is canceled. 184 185 /* Following error codes identify Google errors */ 186 OK = 200, ///< Request successfully executed. 187 Created = 201, ///< Create request successfully executed. 188 NoContent = 204, ///< Tasks API returns 204 when task is successfully removed. 189 ResumeIncomplete = 308, ///< Drive Api returns 308 when accepting a partial file upload 190 TemporarilyMoved = 302, ///< The object is located on a different URL provided in reply. 191 NotModified = 304, ///< Request was successful, but no data were updated. 192 TemporarilyMovedUseSameMethod = 307, ///< The object is located at a different URL provided in the reply. The same request method must be used. 193 BadRequest = 400, ///< Invalid (malformed) request. 194 Unauthorized = 401, ///< Invalid or expired token. See KGAPI2::Account::refreshTokens(). 195 Forbidden = 403, ///< The requested data is not accessible to this account. 196 NotFound = 404, ///< Requested object was not found on the remote side. 197 Conflict = 409, ///< Object on the remote site differs from the submitted one. @see KGAPI2::Object::setEtag. 198 Gone = 410, ///< The requested data does not exist anymore on the remote site. 199 InternalError = 500, ///< An unexpected error occurred on the Google service. 200 QuotaExceeded = 503 ///< User quota has been exceeded, the request should be sent again later. 201 }; 202 203 /** 204 * @since 2.0 205 */ 206 enum ContentType { 207 UnknownContentType = -1, 208 JSON, 209 XML 210 }; 211 212 } // namespace KGAPI2 213 214 215 216