9#include "teamdrivefetchjob.h"
11#include "driveservice.h"
15#include <QNetworkReply>
16#include <QNetworkRequest>
21static const QString MaxResultsAttr = QStringLiteral(
"maxResults");
22static const QString UseDomainAdminAccessAttr = QStringLiteral(
"useDomainAdminAccess");
25using namespace KGAPI2::Drive;
27class Q_DECL_HIDDEN TeamdriveFetchJob::Private
30 Private(TeamdriveFetchJob *parent);
32 TeamdriveSearchQuery searchQuery;
36 bool useDomainAdminAccess =
false;
41 TeamdriveFetchJob *
const q;
44TeamdriveFetchJob::Private::Private(TeamdriveFetchJob *parent)
49TeamdriveFetchJob::TeamdriveFetchJob(
const QString &teamdriveId,
const AccountPtr &account,
QObject *parent)
51 , d(new Private(this))
53 d->teamdriveId = teamdriveId;
58 , d(new Private(this))
60 d->useDomainAdminAccess =
true;
61 d->searchQuery =
query;
64TeamdriveFetchJob::TeamdriveFetchJob(
const AccountPtr &account,
QObject *parent)
66 , d(new Private(this))
70TeamdriveFetchJob::~TeamdriveFetchJob() =
default;
72void TeamdriveFetchJob::setMaxResults(
int maxResults)
75 qCWarning(KGAPIDebug) <<
"Can't modify maxResults property when job is running";
79 d->maxResults = maxResults;
82int TeamdriveFetchJob::maxResults()
const
87void TeamdriveFetchJob::setUseDomainAdminAccess(
bool useDomainAdminAccess)
90 qCWarning(KGAPIDebug) <<
"Can't modify useDomainAdminAccess property when job is running";
94 d->useDomainAdminAccess = useDomainAdminAccess;
97bool TeamdriveFetchJob::useDomainAdminAccess()
const
99 return d->useDomainAdminAccess;
102void TeamdriveFetchJob::setFields(
const QStringList &fields)
105 qCWarning(KGAPIDebug) <<
"Called setFields() on running job. Ignoring.";
112QStringList TeamdriveFetchJob::fields()
const
117void TeamdriveFetchJob::start()
120 if (d->teamdriveId.isEmpty()) {
121 url = DriveService::fetchTeamdrivesUrl();
122 applyRequestParameters(url);
124 url = DriveService::fetchTeamdriveUrl(d->teamdriveId);
125 if (!d->fields.isEmpty()) {
127 if (!d->fields.contains(Teamdrive::Fields::Kind)) {
128 d->fields << Teamdrive::Fields::Kind;
134 QNetworkRequest request(url);
138ObjectsList TeamdriveFetchJob::handleReplyWithItems(
const QNetworkReply *reply,
const QByteArray &rawData)
146 ContentType ct = Utils::stringToContentType(contentType);
147 if (ct == KGAPI2::JSON) {
148 if (d->teamdriveId.isEmpty()) {
149 items << Teamdrive::fromJSONFeed(rawData, feedData);
151 items << Teamdrive::fromJSON(rawData);
170void TeamdriveFetchJob::applyRequestParameters(QUrl &url)
172 QUrlQuery
query(url);
173 if (d->maxResults != 0) {
176 if (d->useDomainAdminAccess !=
false) {
177 query.addQueryItem(UseDomainAdminAccessAttr, Utils::bool2Str(d->useDomainAdminAccess));
179 if (!d->searchQuery.isEmpty()) {
180 query.addQueryItem(QStringLiteral(
"q"), d->searchQuery.serialize());
182 if (!d->fields.isEmpty()) {
184 if (!d->fields.contains(Teamdrive::Fields::Kind)) {
185 d->fields << Teamdrive::Fields::Kind;
187 QString itemFields = Job::buildSubfields(Teamdrive::Fields::Items, d->fields);
188 Job::setFields({Teamdrive::Fields::Kind, Teamdrive::Fields::NextPageToken, itemFields});
193#include "moc_teamdrivefetchjob.cpp"
TeamdriveSearchQuery class allows simply building even complex team drive search queries for Teamdriv...
QUrl requestUrl
Original URL of the request.
QUrl nextPageUrl
Link to next page of feed.
Abstract superclass for all jobs that fetch resources from Google.
virtual ObjectsList items() const
Returns all items fetched by this job.
void setErrorString(const QString &errorString)
Set job error description to errorString.
QStringList fields() const
Returns fields selector.
void setFields(const QStringList &fields)
Set subset of fields to include in the response.
virtual void emitFinished()
Emits Job::finished() signal.
void setError(KGAPI2::Error error)
Set job error to error.
virtual void enqueueRequest(const QNetworkRequest &request, const QByteArray &data=QByteArray(), const QString &contentType=QString())
Enqueues request in dispatcher queue.
bool isRunning
Whether the job is running.
KSERVICE_EXPORT KService::List query(FilterFunc filterFunc)
A job to fetch a single map tile described by a StaticMapUrl.
@ InvalidResponse
LibKGAPI error - Google returned invalid response.
QString tr(const char *sourceText, const char *disambiguation, int n)
QString number(double n, char format, int precision)
bool isValid() const const
void setQuery(const QString &query, ParsingMode mode)
QString toString() const const