TwitterRequest.cpp Example File
twittertimeline/src/TwitterRequest.cpp
#include "TwitterRequest.hpp"
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QUrl>
TwitterRequest::TwitterRequest(QObject *parent)
: QObject(parent)
{
}
void TwitterRequest::requestTimeline(const QString &screenName)
{
QNetworkAccessManager* networkAccessManager = new QNetworkAccessManager(this);
const QString queryUri = QString::fromLatin1("http://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=%1").arg(screenName);
QNetworkRequest request(queryUri);
QNetworkReply* reply = networkAccessManager->get(request);
connect(reply, SIGNAL(finished()), this, SLOT(onTimelineReply()));
}
void TwitterRequest::onTimelineReply()
{
QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
QString response;
bool success = false;
if (reply) {
if (reply->error() == QNetworkReply::NoError) {
const int available = reply->bytesAvailable();
if (available > 0) {
const QByteArray buffer = reply->readAll();
response = QString::fromUtf8(buffer);
success = true;
}
} else {
response = tr("Error: %1 status: %2").arg(reply->errorString(), reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString());
}
reply->deleteLater();
}
if (response.trimmed().isEmpty()) {
response = tr("Twitter request failed. Check internet connection");
}
emit complete(response, success);
}