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