void DeleteJob::start() { QNetworkRequest req; setReply(_url.isValid() ? davRequest("DELETE", _url, req) : davRequest("DELETE", path(), req)); setupConnections(reply()); if( reply()->error() != QNetworkReply::NoError ) { qWarning() << Q_FUNC_INFO << " Network error: " << reply()->errorString(); } AbstractNetworkJob::start(); }
void MoveJob::start() { QNetworkRequest req; req.setRawHeader("Destination", QUrl::toPercentEncoding(_destination, "/")); for(auto it = _extraHeaders.constBegin(); it != _extraHeaders.constEnd(); ++it) { req.setRawHeader(it.key(), it.value()); } setReply(_url.isValid() ? davRequest("MOVE", _url, req) : davRequest("MOVE", path(), req)); setupConnections(reply()); if( reply()->error() != QNetworkReply::NoError ) { qWarning() << Q_FUNC_INFO << " Network error: " << reply()->errorString(); } AbstractNetworkJob::start(); }
void PropfindJob::start() { QList<QByteArray> properties = _properties; if (properties.isEmpty()) { qWarning() << "Propfind with no properties!"; } QNetworkRequest req; req.setRawHeader("Depth", "0"); QByteArray propStr; foreach (const QByteArray &prop, properties) { if (prop.contains(':')) { int colIdx = prop.lastIndexOf(":"); propStr += " <" + prop.mid(colIdx+1) + " xmlns=\"" + prop.left(colIdx) + "\" />\n"; } else { propStr += " <d:" + prop + " />\n"; } } QByteArray xml = "<?xml version=\"1.0\" ?>\n" "<d:propfind xmlns:d=\"DAV:\">\n" " <d:prop>\n" + propStr + " </d:prop>\n" "</d:propfind>\n"; QBuffer *buf = new QBuffer(this); buf->setData(xml); buf->open(QIODevice::ReadOnly); setReply(davRequest("PROPFIND", path(), req, buf)); buf->setParent(reply()); setupConnections(reply()); AbstractNetworkJob::start(); }
void RequestEtagJob::start() { QNetworkRequest req; // Let's always request all entries inside a directory. There are/were bugs in the server // where a root or root-folder ETag is not updated when its contents change. We work around // this by concatenating the ETags of the root and its contents. req.setRawHeader("Depth", "1"); // See https://github.com/owncloud/core/issues/5255 and others QByteArray xml("<?xml version=\"1.0\" ?>\n" "<d:propfind xmlns:d=\"DAV:\">\n" " <d:prop>\n" " <d:getetag/>\n" " </d:prop>\n" "</d:propfind>\n"); QBuffer *buf = new QBuffer(this); buf->setData(xml); buf->open(QIODevice::ReadOnly); // assumes ownership setReply(davRequest("PROPFIND", path(), req, buf)); buf->setParent(reply()); setupConnections(reply()); if( reply()->error() != QNetworkReply::NoError ) { qDebug() << "getting etag: request network error: " << reply()->errorString(); } AbstractNetworkJob::start(); }
void RequestEtagJob::start() { QNetworkRequest req; if (path().isEmpty() || path() == QLatin1String("/")) { /* For the root directory, we need to query the etags of all the sub directories * because, at the time I am writing this comment (Owncloud 5.0.9), the etag of the * root directory is not updated when the sub directories changes */ req.setRawHeader("Depth", "1"); } else { req.setRawHeader("Depth", "0"); } QByteArray xml("<?xml version=\"1.0\" ?>\n" "<d:propfind xmlns:d=\"DAV:\">\n" " <d:prop>\n" " <d:getetag/>\n" " </d:prop>\n" "</d:propfind>\n"); QBuffer *buf = new QBuffer(this); buf->setData(xml); buf->open(QIODevice::ReadOnly); // assumes ownership setReply(davRequest("PROPFIND", path(), req, buf)); buf->setParent(reply()); setupConnections(reply()); if( reply()->error() != QNetworkReply::NoError ) { qDebug() << "getting etag: request network error: " << reply()->errorString(); } AbstractNetworkJob::start(); }
QNetworkReply* ownCloudInfo::getDirectoryListing( const QString& dir ) { QNetworkRequest req; req.setUrl( QUrl( webdavUrl(_connection) + dir ) ); req.setRawHeader("Depth", "1"); QByteArray xml("<?xml version=\"1.0\" ?>\n" "<d:propfind xmlns:d=\"DAV:\">\n" " <d:prop>\n" " <d:resourcetype/>\n" " </d:prop>\n" "</d:propfind>\n"); QBuffer *buf = new QBuffer; buf->setData(xml); buf->open(QIODevice::ReadOnly); QNetworkReply *reply = davRequest("PROPFIND", req, buf); buf->setParent(reply); if( reply->error() != QNetworkReply::NoError ) { qDebug() << "getting quota: request network error: " << reply->errorString(); } connect( reply, SIGNAL( finished()), SLOT(slotGetDirectoryListingFinished()) ); connect( reply, SIGNAL( error(QNetworkReply::NetworkError)), this, SLOT( slotError(QNetworkReply::NetworkError))); return reply; }
void MkColJob::start() { // assumes ownership QNetworkReply *reply = davRequest("MKCOL", path()); setReply(reply); setupConnections(reply); AbstractNetworkJob::start(); }
void JsonApiJob::start() { QNetworkRequest req; req.setRawHeader("OCS-APIREQUEST", "true"); QUrl url = Account::concatUrlPath(account()->url(), path()); url.setQueryItems(QList<QPair<QString, QString> >() << qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json"))); setReply(davRequest("GET", url, req)); setupConnections(reply()); AbstractNetworkJob::start(); }
void MkColJob::start() { // add 'Content-Length: 0' header (see https://github.com/owncloud/client/issues/3256) QNetworkRequest req; req.setRawHeader("Content-Length", "0"); // assumes ownership QNetworkReply *reply = davRequest("MKCOL", path(), req); setReply(reply); setupConnections(reply); AbstractNetworkJob::start(); }
void MoveJob::start() { QNetworkRequest req; req.setRawHeader("Destination", QUrl::toPercentEncoding(_destination, "/")); setReply(davRequest("MOVE", path(), req)); setupConnections(reply()); if( reply()->error() != QNetworkReply::NoError ) { qWarning() << Q_FUNC_INFO << " Network error: " << reply()->errorString(); } AbstractNetworkJob::start(); }
void PUTFileJob::start() { QNetworkRequest req; for(QMap<QByteArray, QByteArray>::const_iterator it = _headers.begin(); it != _headers.end(); ++it) { req.setRawHeader(it.key(), it.value()); } setReply(davRequest("PUT", path(), req, _device)); _device->setParent(reply()); setupConnections(reply()); if( reply()->error() != QNetworkReply::NoError ) { qWarning() << Q_FUNC_INFO << " Network error: " << reply()->errorString(); } connect(reply(), SIGNAL(uploadProgress(qint64,qint64)), this, SIGNAL(uploadProgress(qint64,qint64))); AbstractNetworkJob::start(); }
void LsColJob::start() { QNetworkRequest req; req.setRawHeader("Depth", "1"); QByteArray xml("<?xml version=\"1.0\" ?>\n" "<d:propfind xmlns:d=\"DAV:\">\n" " <d:prop>\n" " <d:resourcetype/>\n" " </d:prop>\n" "</d:propfind>\n"); QBuffer *buf = new QBuffer(this); buf->setData(xml); buf->open(QIODevice::ReadOnly); QNetworkReply *reply = davRequest("PROPFIND", path(), req, buf); buf->setParent(reply); setReply(reply); setupConnections(reply); AbstractNetworkJob::start(); }
void CheckQuotaJob::start() { QNetworkRequest req; req.setRawHeader("Depth", "0"); QByteArray xml("<?xml version=\"1.0\" ?>\n" "<d:propfind xmlns:d=\"DAV:\">\n" " <d:prop>\n" " <d:quota-available-bytes/>\n" " <d:quota-used-bytes/>\n" " </d:prop>\n" "</d:propfind>\n"); QBuffer *buf = new QBuffer(this); buf->setData(xml); buf->open(QIODevice::ReadOnly); // assumes ownership setReply(davRequest("PROPFIND", path(), req, buf)); buf->setParent(reply()); setupConnections(reply()); AbstractNetworkJob::start(); }
void ownCloudInfo::mkdirRequest( const QString& dir ) { qDebug() << "OCInfo Making dir " << dir; _authAttempts = 0; MirallConfigFile cfgFile( _configHandle ); QNetworkRequest req; req.setUrl( QUrl( cfgFile.ownCloudUrl( _connection, true ) + dir ) ); QNetworkReply *reply = davRequest(QLatin1String("MKCOL"), req, 0); // remember the confighandle used for this request if( ! _configHandle.isEmpty() ) qDebug() << "Setting config handle " << _configHandle; _configHandleMap[reply] = _configHandle; if( reply->error() != QNetworkReply::NoError ) { qDebug() << "mkdir request network error: " << reply->errorString(); } connect( reply, SIGNAL(finished()), SLOT(slotMkdirFinished()) ); connect( reply, SIGNAL( error(QNetworkReply::NetworkError )), this, SLOT(slotError(QNetworkReply::NetworkError ))); }
QNetworkReply *Account::davRequest(const QByteArray &verb, const QString &relPath, QNetworkRequest req, QIODevice *data) { return davRequest(verb, concatUrlPath(davUrl(), relPath), req, data); }
req.setRawHeader("Depth", "0"); QByteArray propStr; foreach (const QByteArray &prop, properties) { propStr += " <d:" + prop + " />\n"; } QByteArray xml = "<?xml version=\"1.0\" ?>\n" "<d:propfind xmlns:d=\"DAV:\">\n" " <d:prop>\n" + propStr + " </d:prop>\n" "</d:propfind>\n"; QBuffer *buf = new QBuffer(this); buf->setData(xml); buf->open(QIODevice::ReadOnly); setReply(davRequest("PROPFIND", path(), req, buf)); buf->setParent(reply()); setupConnections(reply()); AbstractNetworkJob::start(); } void PropfindJob::setProperties(QList<QByteArray> properties) { _properties = properties; } QList<QByteArray> PropfindJob::properties() const { return _properties; }