void GetDefaultRepoRequest::requestSuccess(QNetworkReply& reply) { json_error_t error; json_t *root = parseJSON(reply, &error); if (!root) { qDebug("CreateDefaultRepoRequest: failed to parse json:%s\n", error.text); emit failed(ApiError::fromJsonError()); return; } QScopedPointer<json_t, JsonPointerCustomDeleter> json(root); QMap<QString, QVariant> dict = mapFromJSON(json.data(), &error); if (!dict.contains("exists")) { emit failed(ApiError::fromJsonError()); return; } bool exists = dict.value("exists").toBool(); if (!exists) { emit success(false, ""); return; } if (!dict.contains("repo_id")) { emit failed(ApiError::fromJsonError()); return; } QString repo_id = dict.value("repo_id").toString(); emit success(true, repo_id); }
void FileSearchRequest::requestSuccess(QNetworkReply& reply) { json_error_t error; json_t* root = parseJSON(reply, &error); if (!root) { qWarning("FileSearchResult: failed to parse jsn:%s\n", error.text); emit failed(ApiError::fromJsonError()); return; } QScopedPointer<json_t, JsonPointerCustomDeleter> json(root); QMap<QString, QVariant> dict = mapFromJSON(json.data(), &error); if (!dict.contains("results")) { emit failed(ApiError::fromJsonError()); return; } QList<QVariant> results = dict["results"].toList(); std::vector<FileSearchResult> retval; Q_FOREACH(const QVariant& result, results) { FileSearchResult tmp; QMap<QString, QVariant> map = result.toMap(); if (map.empty()) continue; tmp.repo_id = map["repo_id"].toString(); tmp.repo_name = RepoService::instance()->getRepo(tmp.repo_id).name; tmp.name = map["name"].toString(); tmp.oid = map["oid"].toString(); tmp.last_modified = map["last_modified"].toLongLong(); tmp.fullpath = map["fullpath"].toString(); tmp.size = map["size"].toLongLong(); retval.push_back(tmp); }
void GetFileUploadedBytesRequest::requestSuccess(QNetworkReply &reply) { QString accept_ranges_header = reply.rawHeader("Accept-Ranges"); // printf ("accept_ranges_header = %s\n", toCStr(accept_ranges_header)); if (accept_ranges_header != "bytes") { // Chunked uploading is not supported on the server emit success(false, 0); return; } json_error_t error; json_t* root = parseJSON(reply, &error); if (!root) { qWarning("GetFileUploadedBytesRequest: failed to parse json:%s\n", error.text); emit failed(ApiError::fromJsonError()); return; } QScopedPointer<json_t, JsonPointerCustomDeleter> json(root); QMap<QString, QVariant> dict = mapFromJSON(json.data(), &error); quint64 uploaded_bytes = dict["uploadedBytes"].toLongLong(); // printf ("uploadedBytes = %lld\n", uploaded_bytes); emit success(true, uploaded_bytes); }
void ServerInfoRequest::requestSuccess(QNetworkReply& reply) { json_error_t error; json_t* root = parseJSON(reply, &error); if (!root) { qWarning("failed to parse json:%s\n", error.text); emit failed(ApiError::fromJsonError()); return; } QScopedPointer<json_t, JsonPointerCustomDeleter> json(root); QMap<QString, QVariant> dict = mapFromJSON(json.data(), &error); ServerInfo ret; if (dict.contains("version")) { ret.parseVersionFromString(dict["version"].toString()); } if (dict.contains("features")) { ret.parseFeatureFromStrings(dict["features"].toStringList()); } if (dict.contains("desktop-custom-logo")) { ret.customLogo = dict["desktop-custom-logo"].toString(); } if (dict.contains("desktop-custom-brand")) { ret.customBrand = dict["desktop-custom-brand"].toString(); } emit success(account_, ret); }
static QList<QVariant> listFromJSON(json_t *array) { QList<QVariant> ret; size_t array_size = json_array_size(array); json_t *value; for(size_t index = 0; index < array_size && (value = json_array_get(array, index)); ++index) { /* block of code that uses index and value */ QVariant v; if (json_is_object(value)) { v = mapFromJSON(value, NULL); } else if (json_is_array(value)) { v = listFromJSON(value); } else if (json_is_string(value)) { v = QString::fromUtf8(json_string_value(value)); } else if (json_is_integer(value)) { v = json_integer_value(value); } else if (json_is_real(value)) { v = json_real_value(value); } else if (json_is_boolean(value)) { v = json_is_true(value); } if (v.isValid()) { ret.push_back(v); } } return ret; }
void CreateSubrepoRequest::requestSuccess(QNetworkReply& reply) { json_error_t error; json_t* root = parseJSON(reply, &error); if (!root) { qWarning("failed to parse json:%s\n", error.text); emit failed(ApiError::fromJsonError()); return; } QScopedPointer<json_t, JsonPointerCustomDeleter> json(root); QMap<QString, QVariant> dict = mapFromJSON(json.data(), &error); emit success(dict["sub_repo_id"].toString()); }
void CreateRepoRequest::requestSuccess(QNetworkReply& reply) { json_error_t error; json_t* root = parseJSON(reply, &error); if (!root) { qWarning("failed to parse json:%s\n", error.text); emit failed(ApiError::fromJsonError()); return; } QScopedPointer<json_t, JsonPointerCustomDeleter> json(root); QMap<QString, QVariant> dict = mapFromJSON(json.data(), &error); RepoDownloadInfo info = RepoDownloadInfo::fromDict(dict, url(), false); emit success(info); }
void GetLoginTokenRequest::requestSuccess(QNetworkReply& reply) { json_error_t error; json_t* root = parseJSON(reply, &error); if (!root) { qWarning("GetLoginTokenRequest: failed to parse json:%s\n", error.text); emit failed(ApiError::fromJsonError()); return; } QScopedPointer<json_t, JsonPointerCustomDeleter> json(root); QMap<QString, QVariant> dict = mapFromJSON(json.data(), &error); if (!dict.contains("token")) { emit failed(ApiError::fromJsonError()); return; } emit success(dict["token"].toString()); }
void GetRepoTokensRequest::requestSuccess(QNetworkReply& reply) { json_error_t error; json_t* root = parseJSON(reply, &error); if (!root) { qWarning("GetRepoTokensRequest: failed to parse json:%s\n", error.text); emit failed(ApiError::fromJsonError()); return; } QScopedPointer<json_t, JsonPointerCustomDeleter> json(root); QMap<QString, QVariant> dict = mapFromJSON(json.data(), &error); foreach (const QString& repo_id, dict.keys()) { repo_tokens_[repo_id] = dict[repo_id].toString(); } emit success(); }
QMap<QString, QVariant> mapFromJSON(json_t *json, json_error_t *error) { QMap<QString, QVariant> dict; void *member; const char *key; json_t *value; for (member = json_object_iter(json); member; member = json_object_iter_next(json, member)) { key = json_object_iter_key(member); value = json_object_iter_value(member); QString k = QString::fromUtf8(key); QVariant v; // json_is_object(const json_t *json) // json_is_array(const json_t *json) // json_is_string(const json_t *json) // json_is_integer(const json_t *json) // json_is_real(const json_t *json) // json_is_true(const json_t *json) // json_is_false(const json_t *json) // json_is_null(const json_t *json) if (json_is_object(value)) { v = mapFromJSON(json, NULL); } else if (json_is_array(value)) { v = listFromJSON(value); } else if (json_is_string(value)) { v = QString::fromUtf8(json_string_value(value)); } else if (json_is_integer(value)) { v = json_integer_value(value); } else if (json_is_real(value)) { v = json_real_value(value); } else if (json_is_boolean(value)) { v = json_is_true(value); } if (v.isValid()) { dict[k] = v; } } return dict; }
void GetIndexProgressRequest::requestSuccess(QNetworkReply& reply) { json_error_t error; json_t *root = parseJSON(reply, &error); if (!root) { qWarning("GetIndexProgressRequest: failed to parse json:%s\n", error.text); emit failed(ApiError::fromJsonError()); return; } QScopedPointer<json_t, JsonPointerCustomDeleter> json(root); QMap<QString, QVariant> dict = mapFromJSON(json.data(), &error); ServerIndexProgress result; result.total = dict.value("total").toInt(); result.indexed = dict.value("indexed").toInt(); result.status = dict.value("status").toInt(); emit success(result); }
void GetUnseenSeahubNotificationsRequest::requestSuccess(QNetworkReply& reply) { json_error_t error; json_t *root = parseJSON(reply, &error); if (!root) { qDebug("GetUnseenSeahubNotificationsRequest: failed to parse json:%s\n", error.text); emit failed(ApiError::fromJsonError()); return; } QScopedPointer<json_t, JsonPointerCustomDeleter> json(root); QMap<QString, QVariant> ret = mapFromJSON(root, &error); if (!ret.contains("count")) { emit failed(ApiError::fromJsonError()); return; } int count = ret.value("count").toInt(); emit success(count); }
void GetLatestVersionRequest::requestSuccess(QNetworkReply& reply) { json_error_t error; json_t *root = parseJSON(reply, &error); if (!root) { qDebug("GetLatestVersionRequest: failed to parse json:%s\n", error.text); emit failed(ApiError::fromJsonError()); return; } QScopedPointer<json_t, JsonPointerCustomDeleter> json(root); QMap<QString, QVariant> dict = mapFromJSON(json.data(), &error); if (dict.contains(kOsName)) { QString version = dict.value(kOsName).toString(); qDebug("The latest version is %s", toCStr(version)); emit success(version); return; } emit failed(ApiError::fromJsonError()); }