Ejemplo n.º 1
0
// http://vk.com/dev/notes.getById
NoteJob::NoteJob(const QString &accessToken, int nid)
    : VkontakteJob(accessToken, "notes.getById")
    , d(new Private)
{
    addQueryItem("nid", QString::number(nid));
    addQueryItem("need_wiki", "1"); // works only for current user's notes
}
Ejemplo n.º 2
0
AlbumListJob::AlbumListJob(const QString &accessToken, int uid, const QList<int> &aids)
    : VkontakteJob(accessToken, QStringLiteral("photos.getAlbums"))
    , d(new Private)
{
    if (uid != -1)
        addQueryItem(QStringLiteral("uid"), QString::number(uid));
    if (!aids.empty())
        addQueryItem(QStringLiteral("aids"), joinIntegers(aids));
}
Ejemplo n.º 3
0
GroupListJob::GroupListJob(const QString &accessToken, int uid, bool extended)
    : VkontakteJob(accessToken, "groups.get")
    , d(new Private)
{
    d->extended = extended;

    if (uid != -1)
        addQueryItem("uid", QString::number(uid));
    if (extended)
        addQueryItem("extended", "1");
}
Ejemplo n.º 4
0
CreateAlbumJob::CreateAlbumJob(const QString &accessToken,
                               const QString &title, const QString &description,
                               int privacy, int comment_privacy)
    : VkontakteJob(accessToken, "photos.createAlbum", true)
    , d(new Private)
{
    addQueryItem("title", title);
    if (!description.isEmpty())
        addQueryItem("description", description);
    if (privacy != AlbumInfo::PRIVACY_UNKNOWN)
        addQueryItem("privacy", QString::number(privacy));
    if (comment_privacy != AlbumInfo::PRIVACY_UNKNOWN)
        addQueryItem("comment_privacy", QString::number(comment_privacy));
}
Ejemplo n.º 5
0
NotesListJob::NotesListJob(const QString &accessToken,
                           int uid, int offset, int count)
    : VkontakteJob(accessToken, "notes.get")
    , d(new Private)
{
    // Not passing "nids", because we want all notes.

    if (uid > 0) {
        addQueryItem("user_id", QString::number(uid));
    }

    addQueryItem("sort", "1"); // ascending by date
    addQueryItem("count", QString::number(count));
    addQueryItem("offset", QString::number(offset));
}
Ejemplo n.º 6
0
void JsonApiJob::start()
{
    QNetworkRequest req;
    req.setRawHeader("OCS-APIREQUEST", "true");
    auto query = _additionalParams;
    query.addQueryItem(QLatin1String("format"), QLatin1String("json"));
    QUrl url = Utility::concatUrlPath(account()->url(), path(), query);
    sendRequest("GET", url, req);
    AbstractNetworkJob::start();
}
Ejemplo n.º 7
0
PostAddJob::PostAddJob( const QString &message, const QString &accessToken )
  : FacebookAddJob( "/me/feed", accessToken)
{
  addQueryItem("message", message);
}
Ejemplo n.º 8
0
DeleteAlbumJob::DeleteAlbumJob(const QString &accessToken, int aid)
    : VkontakteJob(accessToken, QStringLiteral("photos.deleteAlbum"), true)
    , d(0)
{
    addQueryItem(QStringLiteral("aid"), QString::number(aid));
}
Ejemplo n.º 9
0
QFacebookHttpReply *QFacebookHttpApi::usersQueryAfter(const QByteArray &token, const QString &cursor)
{
    auto jsonString = QString{R"({"0": ["user"], "1": "%1", "2": "50"})"}.arg(cursor);
    auto parameters =
        std::map<QByteArray, QByteArray>{{"query_id", "10154444360816729"}, {"query_params", jsonString.toUtf8()}};
    auto usersQueryRequest = QFacebookHttpRequest{"https://graph.facebook.com/graphql", token, "get",
                                                  "FetchContactsFullWithAfterQuery", parameters};
    return get(usersQueryRequest);
}

QFacebookHttpReply *QFacebookHttpApi::usersQueryDelta(const QByteArray &token, const QString &deltaCursor)
{
    auto jsonString = QString{R"({"0": "%1", "1": ["user"], "2": "500"})"}.arg(deltaCursor);
    auto parameters =
        std::map<QByteArray, QByteArray>{{"query_id", "10154444360801729"}, {"query_params", jsonString.toUtf8()}};
    auto usersQueryRequest =
        QFacebookHttpRequest{"https://graph.facebook.com/graphql", token, "get", "FetchContactsDeltaQuery", parameters};
    return get(usersQueryRequest);
}

QFacebookHttpReply *QFacebookHttpApi::threadListQuery(const QByteArray &token)
{
    auto jsonString = QString{R"({"1": "0"})"};
    auto parameters =
        std::map<QByteArray, QByteArray>{{"query_id", "10155268192741729"}, {"query_params", jsonString.toUtf8()}};
    auto usersQueryRequest =
        QFacebookHttpRequest{"https://graph.facebook.com/graphql", token, "get", "ThreadListQuery", parameters};
    return get(usersQueryRequest);
}

QFacebookHttpReply *QFacebookHttpApi::unreadThreadListQuery(const QByteArray &token, int unreadCount)
{
    auto jsonString = QString{R"({"1": "%1", "2": "true", "12": "true", "13": "false"})"}.arg(unreadCount);
    auto parameters =
        std::map<QByteArray, QByteArray>{{"query_id", "10153919752026729"}, {"query_params", jsonString.toUtf8()}};
    auto usersQueryRequest =
        QFacebookHttpRequest{"https://graph.facebook.com/graphql", token, "get", "ThreadListQuery", parameters};
    return get(usersQueryRequest);
}

QFacebookHttpReply *
QFacebookHttpApi::unreadMessagesListQuery(const QByteArray &token, QFacebookUid uid, int unreadCount)
{
    auto jsonString =
        QString{R"({"0": ["%1"], "10": "true", "11": "true", "12": "%2", "13": "false"})"}.arg(uid).arg(unreadCount);
    auto parameters =
        std::map<QByteArray, QByteArray>{{"query_id", "10153919752036729"}, {"query_params", jsonString.toUtf8()}};
    auto usersQueryRequest =
        QFacebookHttpRequest{"https://graph.facebook.com/graphql", token, "get", "ThreadQuery", parameters};
    return get(usersQueryRequest);
}

QFacebookHttpReply *QFacebookHttpApi::get(const QFacebookHttpRequest &request)
{
    auto authUrl = QStringLiteral();
    auto params = request.parameters();
    params.insert(std::make_pair("api_key", "256002347743983"));
    params.insert(std::make_pair("device_id", m_deviceId));
    params.insert(std::make_pair("fb_api_req_friendly_name", request.friendlyName()));
    params.insert(std::make_pair("format", "json"));
    params.insert(std::make_pair("method", request.method()));
    params.insert(std::make_pair("local", "pl_PL"));

    std::vector<QByteArray> keys;
    std::transform(
        std::begin(params), std::end(params), std::back_inserter(keys),
        [](const std::pair<QByteArray, QByteArray> &x) { return x.first; });
    std::sort(std::begin(keys), std::end(keys));

    QCryptographicHash md5sum{QCryptographicHash::Md5};
    std::for_each(std::begin(keys), std::end(keys), [&params, &md5sum](const QByteArray &x) {
        md5sum.addData(x);
        md5sum.addData(QByteArray{"="});
        md5sum.addData(params[x]);
    });
    md5sum.addData(QByteArray{"374e60f8b9bb6b8cbb30f78030438895"});

    params.insert(std::make_pair("sig", md5sum.result().toHex()));

    auto urlQuery = QUrlQuery{};
    for (auto const &i : params)
        urlQuery.addQueryItem(QString::fromUtf8(i.first), QString::fromUtf8(i.second));

    auto url = QUrl{request.url()};
    url.setQuery(urlQuery);

    auto httpRequest = QNetworkRequest{url};
    httpRequest.setHeader(QNetworkRequest::UserAgentHeader, "Facebook plugin / Kadu / [FBAN/Orca-Android;FBAV/38.0.0.22.155;FBBV/14477681]");
    auto token = request.token();
    if (token)
        httpRequest.setRawHeader("Authorization", QByteArray{"OAuth "} + *token);

    return new QFacebookHttpReply{m_nam.get(httpRequest)};
}