// 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 }
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)); }
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"); }
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)); }
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)); }
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(); }
PostAddJob::PostAddJob( const QString &message, const QString &accessToken ) : FacebookAddJob( "/me/feed", accessToken) { addQueryItem("message", message); }
DeleteAlbumJob::DeleteAlbumJob(const QString &accessToken, int aid) : VkontakteJob(accessToken, QStringLiteral("photos.deleteAlbum"), true) , d(0) { addQueryItem(QStringLiteral("aid"), QString::number(aid)); }
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), [¶ms, &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)}; }