Exemplo n.º 1
0
QNetworkReply* QWebDAV::put_locked(QString fileName, QString absoluteFileName,
                            QString put_prefix)
{
    // This is the Url of the webdav server + the file we want to put
    QUrl url;
    if ( put_prefix == "" ) {
        url.setUrl(mHostname+fileName);
    } else {
        QFileInfo info(fileName);
        url.setUrl(mHostname+info.absolutePath()+"/"+put_prefix+
                   info.fileName());
    }

    // Encapsulate data in an QIODevice
    mRequestNumber++;
    QFile *file = new QFile(absoluteFileName);
    if (!file->open(QIODevice::ReadOnly)) {
        syncDebug() << "File read error " + absoluteFileName +" Code: "
                    << file->error();
        return 0;
    }
    mRequestFile[mRequestNumber] = file;

    // Prepare the token
    TransferLockRequest *request = &(mTransferLockRequests[fileName]);
    QString tokens = "(<" + request->token + ">)"
            +"(<"+request->tokenTemp+">)";

    // Finally send this to the WebDAV server
    QNetworkReply *reply = sendWebdavRequest(url,DAVPUT,0,file,put_prefix,tokens);
    //syncDebug() << "PUT REPLY: " << reply->readAll();
    return reply;
}
Exemplo n.º 2
0
void QWebDAV::processPutFinished(QNetworkReply *reply)
{
    // Check if a prefix exists that must be removed now that it finished
    QString prefix = reply->request().attribute(
                QNetworkRequest::Attribute(
                    QNetworkRequest::User+ATTPREFIX)).toString();
    if( prefix != "" ) {
        QString tokens = "";
        QString fileNameTemp = reply->request().url().toString().replace(mHostname,"/files/webdav.php/");
        QString to = reply->request().url().toString().replace(prefix,"");
        QString fileName = to;
        fileName.replace(mHostname,"");
        if(mTransferLockRequests.contains(fileName)) {
            TransferLockRequest *request = &(mTransferLockRequests[fileName]);
            tokens = "<"+fileNameTemp+ "> (<" + request->tokenTemp + ">)"
                    +"</files/webdav.php/" +fileName +"> (<"+request->token+">)";
        }
        QByteArray verb("MOVE");
        sendWebdavRequest(reply->request().url(),DAVMOVE,verb,0,
                          to,tokens);
    }
    emit uploadComplete(
                reply->request().url().path().replace(
                    QRegExp("^"+mPathFilter),"").replace(prefix,""));
}
Exemplo n.º 3
0
QNetworkReply* QWebDAV::list(QString dir, int depth )
{
    // Make sure the user has already initialized this instance!
    if (!mInitialized)
        return 0;

    // This is the Url of the webdav server + the directory we want a listing of
    QUrl url(mHostname+dir);

    // Prepare the query. We want a listing of all properties the WebDAV
    // server is willing to provide
    mRequestNumber++;
    QByteArray *query = new QByteArray();
    *query += "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
    *query += "<D:propfind xmlns:D=\"DAV:\">";
    *query += "<D:prop xmlns:D=\"DAV:\">";
    *query += "<D:getlastmodified/>";
        *query += "<D:getlastmodified/>";
        *query += "<D:getcontentlength/>";
//        *query += "<D:resourcetype/>";
//        *query += "<D:quota-used-bytes/>";
//        *query += "<D:quota-available-bytes/>";
//            *query += "<D:getetag/>";
            *query += "<D:getcontenttype/>";
            *query += "<D:lockdiscovery/>";
        *query += "</D:prop>";
    *query += "</D:propfind>";
    QBuffer *data = new QBuffer(query);
    QByteArray verb("PROPFIND");
    mRequestQueries[mRequestNumber] = query;
    mRequestData[mRequestNumber] = data;
    // Finally send this to the WebDAV server
    return sendWebdavRequest(url,DAVLIST,verb,data,QString("%1").arg(depth));
}
Exemplo n.º 4
0
QNetworkReply* QWebDAV::mkdir(QString dirName)
{
    // Make sure the user has already initialized this instance!
    if (!mInitialized)
        return 0;

    // This is the URL of the webdav server + the file we want to get
    QUrl url(mHostname+dirName);

    // Finally send this to the WebDAV server
    QByteArray verb("MKCOL");
    QNetworkReply *reply = sendWebdavRequest(url,DAVMKCOL,verb);
    return reply;
}
Exemplo n.º 5
0
QNetworkReply* QWebDAV::get(QString fileName)
{
    // Make sure the user has already initialized this instance!
    if (!mInitialized)
        return 0;

    // This is the Url of the webdav server + the file we want to get
    QUrl url(mHostname+fileName);

    // Finally send this to the WebDAV server
    QNetworkReply *reply = sendWebdavRequest(url,DAVGET);
    //syncDebug() << "GET REPLY: " << reply->readAll();
    return reply;
}
Exemplo n.º 6
0
QNetworkReply* QWebDAV::put_locked(QString fileName, QByteArray data,
                                   QString put_prefix)
{

    // This is the Url of the webdav server + the file we want to get
    QUrl url(mHostname+fileName);

    // First lock the resource

    // Encapsulate data in an QIODevice
    mRequestNumber++;
    QByteArray *safeData = new QByteArray(data);
    QBuffer *buffer = new QBuffer(safeData);
    mRequestQueries[mRequestNumber] = safeData;
    mRequestData[mRequestNumber] = buffer;

    // Finally send this to the WebDAV server
    QNetworkReply *reply = sendWebdavRequest(url,DAVPUT,0,buffer);
    syncDebug() << "PUT REPLY: " << reply->readAll();
    return reply;
}