Esempio n. 1
0
File: core.cpp Progetto: mpxc/qTox
void Core::requestFriendship(const ToxId& friendId, const QString& message)
{
    ToxPk friendPk = friendId.getPublicKey();
    QString errorMessage = getFriendRequestErrorMessage(friendId, message);
    if (!errorMessage.isNull()) {
        emit failedToAddFriend(friendPk, errorMessage);
        profile.saveToxSave();
    }

    ToxString cMessage(message);
    uint32_t friendNumber =
        tox_friend_add(tox, friendId.getBytes(), cMessage.data(), cMessage.size(), nullptr);
    if (friendNumber == std::numeric_limits<uint32_t>::max()) {
        qDebug() << "Failed to request friendship";
        emit failedToAddFriend(friendPk);
    } else {
        qDebug() << "Requested friendship of " << friendNumber;
        Settings::getInstance().updateFriendAddress(friendId.toString());

        emit friendAdded(friendNumber, friendPk);
        emit requestSent(friendPk, message);
    }

    profile.saveToxSave();
}
Esempio n. 2
0
void HttpRequestv2::sendRequest() {

    Utilities::logData("HttpRequest(): Sending request...");

    // Send the request
    QByteArray *request = new QByteArray();

    request->append((method == GET) ? "GET" : "POST");
    request->append(' ');
    request->append(url.encodedPath());
    if (method == GET)
        request->append("?" + url.encodedQuery());
    request->append(" HTTP/1.1\r\n");
    request->append("Host: " + url.encodedHost() + "\r\n");

    // Add all the headers
    QList<QString> keys = headers.keys();

    foreach (QString key, keys)
        request->append(key.toUtf8() + ": " + headers.value(key).toUtf8() + "\r\n");

    if (method == POST)
        request->append("Content-Length: " + QString::number(length) + "\r\n");

    request->append("\r\n");

    if (method == POST)
        request->append(data,length);

    // Write data
    connect(socket, SIGNAL(encryptedBytesWritten(qint64)),
            this, SLOT(encryptedBytesWritten(qint64)));

    bytesWritten = 0;
    qint64 length = request->size();
    qint64 pos = 0;
    const char *constData = request->constData();
    while (pos < length)
    {
        int size = ((pos + MAX_BUFFER) < length ? MAX_BUFFER : length-pos);
        socket->write(constData, size);
        constData += size;
        pos += size;
    }

    delete request;

    emit requestSent(length);

    Utilities::logData("HttpRequest(): Waiting for response...");
    connect(socket,SIGNAL(readyRead()),this,SLOT(readResponse()));
}
Esempio n. 3
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);
}
Esempio n. 4
0
void HttpRequestv2::workerFinished()
{
    emit requestSent(length);
}
Esempio n. 5
0
void KviHttpRequest::slotSocketConnected()
{
	if(m_p->pConnectTimeoutTimer)
	{
		delete m_p->pConnectTimeoutTimer;
		m_p->pConnectTimeoutTimer = NULL;
	}

	emit connectionEstabilished();
	emit status(
			__tr2qs("Connected to %1:%2: sending request")
					.arg(m_p->pSocket->peerAddress().toString())
					.arg(m_p->pSocket->peerPort())
		);

	KviCString szMethod;

	bool bIsPost = false;

	if(m_eProcessingType == HeadersOnly)
		szMethod = "HEAD";
	else if(m_szPostData.isEmpty())
		szMethod = "GET";
	else {
		szMethod = "POST";
		bIsPost = true;
	}

	KviCString szRequest(
			KviCString::Format,
			"%s %s HTTP/1.1\r\n" \
			"Host: %s\r\n" \
			"Connection: Close\r\n" \
			"User-Agent: KVIrc-http-slave/1.0.0\r\n" \
			"Accept: */*\r\n",
			szMethod.ptr(),
			m_connectionUrl.path().toUtf8().data(),
			m_connectionUrl.host().toUtf8().data()
		);

	if(m_uContentOffset > 0)
		szRequest.append(KviCString::Format,"Range: bytes=%u-\r\n",m_uContentOffset);

	if(bIsPost)
	{
		szRequest.append(KviCString::Format,"Content-Type: application/x-www-form-urlencoded\r\n" \
				"Content-Length: %u\r\n" \
				"Cache-control: no-cache\r\n" \
				"Pragma: no-cache\r\n",m_szPostData.length());
	}

	szRequest += "\r\n";

	if(bIsPost)
	{
		if(!m_szPostData.isEmpty())
			szRequest.append(m_szPostData);
		szRequest += "\r\n";
	}

	// FIXME: Handle this better!
	int written = m_p->pSocket->write(szRequest.ptr(),szRequest.len());
	if(written < szRequest.len())
	{
		m_szLastError = __tr2qs("Socket write error");
		resetInternalStatus();
		emit terminated(false);
	}

	// FIXME: Handle this better
	QString req = QString::fromLatin1(szRequest.ptr());
	QStringList sl = req.split("\r\n");
	emit requestSent(sl);

	// now wait for the response

	// FIXME: Handle read timeouts!
}
Esempio n. 6
0
void MediaUpload::requestSentHandler(qint64 bytes)
{
    emit requestSent(bytes);
}