@@ -423,17 +423,20 @@ void Account::resetNetworkAccessManager()
423
423
this , &Account::proxyAuthenticationRequired);
424
424
}
425
425
426
- QNetworkAccessManager *Account::networkAccessManager ()
426
+ QNetworkAccessManager *Account::networkAccessManager () const
427
427
{
428
428
return _networkAccessManager.data ();
429
429
}
430
430
431
- QSharedPointer<QNetworkAccessManager> Account::sharedNetworkAccessManager ()
431
+ QSharedPointer<QNetworkAccessManager> Account::sharedNetworkAccessManager () const
432
432
{
433
433
return _networkAccessManager;
434
434
}
435
435
436
- QNetworkReply *Account::sendRawRequest (const QByteArray &verb, const QUrl &url, QNetworkRequest req, QIODevice *data)
436
+ QNetworkReply *Account::sendRawRequest (const QByteArray &verb,
437
+ const QUrl &url,
438
+ QNetworkRequest req,
439
+ QIODevice *data)
437
440
{
438
441
req.setUrl (url);
439
442
req.setSslConfiguration (this ->getOrCreateSslConfig ());
@@ -451,7 +454,10 @@ QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url,
451
454
return _networkAccessManager->sendCustomRequest (req, verb, data);
452
455
}
453
456
454
- QNetworkReply *Account::sendRawRequest (const QByteArray &verb, const QUrl &url, QNetworkRequest req, const QByteArray &data)
457
+ QNetworkReply *Account::sendRawRequest (const QByteArray &verb,
458
+ const QUrl &url,
459
+ QNetworkRequest req,
460
+ const QByteArray &data)
455
461
{
456
462
req.setUrl (url);
457
463
req.setSslConfiguration (this ->getOrCreateSslConfig ());
@@ -469,7 +475,10 @@ QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url,
469
475
return _networkAccessManager->sendCustomRequest (req, verb, data);
470
476
}
471
477
472
- QNetworkReply *Account::sendRawRequest (const QByteArray &verb, const QUrl &url, QNetworkRequest req, QHttpMultiPart *data)
478
+ QNetworkReply *Account::sendRawRequest (const QByteArray &verb,
479
+ const QUrl &url,
480
+ QNetworkRequest req,
481
+ QHttpMultiPart *data)
473
482
{
474
483
req.setUrl (url);
475
484
req.setSslConfiguration (this ->getOrCreateSslConfig ());
@@ -1138,6 +1147,88 @@ void Account::setAskUserForMnemonic(const bool ask)
1138
1147
emit askUserForMnemonicChanged ();
1139
1148
}
1140
1149
1150
+ void Account::listRemoteFolder (QPromise<QStringList> *promise, const QString &path)
1151
+ {
1152
+ qCInfo (lcAccount ()) << " ls col job requested for" << path;
1153
+
1154
+ if (!credentials ()->ready ()) {
1155
+ qCWarning (lcAccount ()) << " credentials are not ready" << path;
1156
+ promise->finish ();
1157
+ return ;
1158
+ }
1159
+
1160
+ auto listFolderJob = new OCC::LsColJob{sharedFromThis (), path};
1161
+
1162
+ QList<QByteArray> props;
1163
+ props << " resourcetype"
1164
+ << " getlastmodified"
1165
+ << " getcontentlength"
1166
+ << " getetag"
1167
+ << " quota-available-bytes"
1168
+ << " quota-used-bytes"
1169
+ << " http://owncloud.org/ns:size"
1170
+ << " http://owncloud.org/ns:id"
1171
+ << " http://owncloud.org/ns:fileid"
1172
+ << " http://owncloud.org/ns:downloadURL"
1173
+ << " http://owncloud.org/ns:dDC"
1174
+ << " http://owncloud.org/ns:permissions"
1175
+ << " http://owncloud.org/ns:checksums"
1176
+ << " http://nextcloud.org/ns:is-encrypted"
1177
+ << " http://nextcloud.org/ns:metadata-files-live-photo"
1178
+ << " http://owncloud.org/ns:share-types" ;
1179
+
1180
+ if (capabilities ().filesLockAvailable ()) {
1181
+ props << " http://nextcloud.org/ns:lock"
1182
+ << " http://nextcloud.org/ns:lock-owner-displayname"
1183
+ << " http://nextcloud.org/ns:lock-owner"
1184
+ << " http://nextcloud.org/ns:lock-owner-type"
1185
+ << " http://nextcloud.org/ns:lock-owner-editor"
1186
+ << " http://nextcloud.org/ns:lock-time"
1187
+ << " http://nextcloud.org/ns:lock-timeout"
1188
+ << " http://nextcloud.org/ns:lock-token" ;
1189
+ }
1190
+ props << " http://nextcloud.org/ns:is-mount-root" ;
1191
+
1192
+ listFolderJob->setProperties (props);
1193
+
1194
+ QObject::connect (listFolderJob, &OCC::LsColJob::networkError, this , [promise, path] (QNetworkReply *reply) {
1195
+ if (reply) {
1196
+ qCWarning (lcAccount ()) << " ls col job" << path << " error" << reply->errorString ();
1197
+ }
1198
+
1199
+ qCWarning (lcAccount ()) << " ls col job" << path << " error without a reply" ;
1200
+ promise->finish ();
1201
+ });
1202
+
1203
+ QObject::connect (listFolderJob, &OCC::LsColJob::finishedWithError, this , [promise, path] (QNetworkReply *reply) {
1204
+ if (reply) {
1205
+ qCWarning (lcAccount ()) << " ls col job" << path << " error" << reply->errorString ();
1206
+ }
1207
+
1208
+ qCWarning (lcAccount ()) << " ls col job" << path << " error without a reply" ;
1209
+ promise->finish ();
1210
+ });
1211
+
1212
+ QObject::connect (listFolderJob, &OCC::LsColJob::finishedWithoutError, this , [promise, path] () {
1213
+ qCInfo (lcAccount ()) << " ls col job" << path << " finished" ;
1214
+ promise->finish ();
1215
+ });
1216
+
1217
+ QObject::connect (listFolderJob, &OCC::LsColJob::directoryListingSubfolders, this , [promise, path] (const QStringList &items) {
1218
+ qCInfo (lcAccount ()) << " ls col job" << path << " new sub-folders" << items.join (" , " );
1219
+ promise->addResult (items);
1220
+ });
1221
+
1222
+ QObject::connect (listFolderJob, &OCC::LsColJob::directoryListingIterated, this , [promise, path] (const QString &name, const QMap<QString, QString> &properties) {
1223
+ qCInfo (lcAccount ()) << " ls col job" << path << " new file" << name << properties.count ();
1224
+ promise->emplaceResult (name);
1225
+ });
1226
+
1227
+ promise->start ();
1228
+ listFolderJob->start ();
1229
+ qCInfo (lcAccount ()) << " ls col job started" ;
1230
+ }
1231
+
1141
1232
bool Account::serverHasValidSubscription () const
1142
1233
{
1143
1234
return _serverHasValidSubscription;
0 commit comments