예제 #1
0
void MediaUpload::uploadMedia()
{
    QList<FormData*> formData;

    FormDataString *str = new FormDataString();
    str->name = "from";
    str->content = Client::myJid;

    formData.append(str);

    FormDataString *str2 = new FormDataString();
    str2->name = "to";
    str2->content = msg.remote_resource;

    formData.append(str2);

    FormDataFile *file = new FormDataFile();
    file->name = "file";
    file->fileName = msg.media_name;
    file->uri = msg.local_file_uri;
    file->contentType = msg.media_mime_type;

    formData.append(file);

    MultiPartUploader *uploader = new MultiPartUploader(this);

    connect(uploader,SIGNAL(finished(MultiPartUploader*,QVariantMap)),
            this,SLOT(finished(MultiPartUploader*,QVariantMap)));
    connect(uploader,SIGNAL(socketError(QAbstractSocket::SocketError)),
            this,SLOT(errorHandler(QAbstractSocket::SocketError)));
    connect(uploader,SIGNAL(progress(float)),
            this,SLOT(updateProgress(float)));
    connect(uploader,SIGNAL(headersReceived(qint64)),
            this,SLOT(headersReceivedHandler(qint64)));
    connect(uploader,SIGNAL(requestSent(qint64)),
            this,SLOT(requestSentHandler(qint64)));


    // uploader->open("https://mms.whatsapp.net/client/iphone/upload.php", formData);
    uploader->open(msg.media_url, formData);
}
예제 #2
0
void HttpRequestv2::readResponse() {

    Utilities::logData("HttpRequest(): Got response");

    // This function is only called once
    disconnect(socket,SIGNAL(readyRead()),this,SLOT(readResponse()));

    // Prepare the buffer
    QByteArray buffer;
    buffer.resize(MAX_BUFFER);

    // Read response
    qint64 length = socket->readLine(buffer.data(), MAX_BUFFER);
    qint64 totalLength = length;
    QString response = QString::fromUtf8(buffer.data());
    Utilities::logData(response.trimmed());

    errorCode = 0;
    if (response.left(8) != "HTTP/1.1")
    {
        emit headersReceived(totalLength);
        emit finished();
        return;
    }

    int space = response.indexOf(' ', 9);
    if (space < 0)
    {
        emit headersReceived(totalLength);
        emit finished();
        return;
    }

    errorCode = response.mid(9,(space-9)).toInt();
    if (errorCode != 200)
    {
        emit headersReceived(totalLength);
        emit finished();
        return;
    }

    // Read all headers
    headers.clear();
    bool end = false;
    while (socket->bytesAvailable() >= 0 && end == false)
    {
        if (socket->bytesAvailable() == 0)
            socket->waitForReadyRead();

        if (socket->bytesAvailable() > 0)
        {
            length = socket->readLine(buffer.data(), MAX_BUFFER);
            totalLength += length;
            QString header = QString::fromUtf8(buffer.data());

            Utilities::logData(header.trimmed());

            // A blank line means the end of headers and beginning of data
            if (header == "\r\n")
            {
                Utilities::logData("HttpRequest(): All headers read.  Available: " + QString::number(socket->bytesAvailable()));
                end = true;
            }
            else
            {
                QStringList list = header.trimmed().split(": ");
                setHeader(list[0],list[1]);
            }
        }
    }

    if (end)
    {
        emit headersReceived(totalLength);
        emit finished();
    }
}
예제 #3
0
void MediaUpload::headersReceivedHandler(qint64 bytes)
{
    emit headersReceived(bytes);
}