BtsApiNotifier *BtsApi::getFolderPeers(const QString &secret) { QueryList ql; ql << QueryPair("secret", secret); QUrl apiUrl = getApiUrl(p, "get_folder_peers", ql); QNetworkReply *reply = p->nam->get(QNetworkRequest(apiUrl)); BtsApiNotifier *notifier = new BtsApiNotifier(this); connect(reply, &QNetworkReply::finished, [this, reply, notifier, secret]() { notifier->deleteLater(); if(checkForError(reply, notifier)) return; QJsonDocument doc = QJsonDocument::fromJson(reply->readAll()); if(checkForError(doc, notifier)) return; QJsonArray arr = doc.array(); QVector<BtsGetFolderPeersResult> res; res.reserve(arr.size()); for(const QJsonValue &val: arr) { QJsonObject peerObj = val.toObject(); if(peerObj.isEmpty()) { emit error("Got an unexpected get_folder_peers reply format"); return; } BtsGetFolderPeersResult resObj; resObj.id = peerObj.value("id").toString(); resObj.connection = peerObj.value("connection").toString(); resObj.name = peerObj.value("name").toString(); resObj.synced = peerObj.value("synced").toVariant().toLongLong(); resObj.download = peerObj.value("download").toVariant().toLongLong(); resObj.upload = peerObj.value("upload").toVariant().toLongLong(); res << resObj; } emit getFolderPeersResult(res, secret); emit notifier->getFolderPeersResult(res, secret); }); return notifier; }
BtsApiNotifier *BtsApi::getFiles(const QString &secret, const QString &path) { QueryList ql; ql << QueryPair("secret", secret); if(!path.isEmpty()) ql << QueryPair("path", path); QUrl apiUrl = getApiUrl(p, "get_files", ql); QNetworkReply *reply = p->nam->get(QNetworkRequest(apiUrl)); BtsApiNotifier *notifier = new BtsApiNotifier(this); connect(reply, &QNetworkReply::finished, [this, reply, notifier, secret]() { notifier->deleteLater(); if(checkForError(reply, notifier)) return; QJsonDocument doc = QJsonDocument::fromJson(reply->readAll()); if(checkForError(doc, notifier)) return; QJsonArray arr = doc.array(); QVector<BtsGetFilesResult> res; res.reserve(arr.size()); for(const QJsonValue &val: arr) { QJsonObject fileObj = val.toObject(); if(fileObj.isEmpty()) { emit error("Got an unexpected get_files reply format"); return; } BtsGetFilesResult resObj; parseGetFilesResult(fileObj, resObj); res << resObj; } emit getFilesResult(res, secret); emit notifier->getFilesResult(res, secret); }); return notifier; }
BtsApiNotifier *BtsApi::getSecrets(bool encryption, const QString &secret, const QUuid &uuid) { QueryList ql; if(!secret.isEmpty()) ql << QueryPair("secret", secret); if(encryption) ql << QueryPair("type", "encryption"); QUrl apiUrl = getApiUrl(p, "get_secrets", ql); QNetworkReply *reply = p->nam->get(QNetworkRequest(apiUrl)); BtsApiNotifier *notifier = new BtsApiNotifier(this); connect(reply, &QNetworkReply::finished, [this, reply, notifier, uuid]() { notifier->deleteLater(); if(checkForError(reply, notifier)) return; QJsonDocument doc = QJsonDocument::fromJson(reply->readAll()); if(checkForError(doc, notifier)) return; QJsonObject obj = doc.object(); QString rw = obj.value("read_write").toString(); QString ro = obj.value("read_only").toString(); QString ec = obj.value("encryption").toString(); if(uuid.isNull()) { emit getSecretsResult(rw, ro, ec); emit notifier->getSecretsResult(rw, ro, ec); } else { emit getSecretsResultUuid(uuid, rw, ro, ec); emit notifier->getSecretsResultUuid(uuid, rw, ro, ec); } }); return notifier; }
BtsApiNotifier *BtsApi::setFolderHosts(const QString &secret, const QStringList &hosts) { QueryList ql; ql << QueryPair("secret", secret) << QueryPair("hosts", hosts.join(',')); QUrl apiUrl = getApiUrl(p, "set_folder_hosts", ql); QString queryString = apiUrl.query(QUrl::FullyEncoded); QNetworkReply *reply = p->nam->get(QNetworkRequest(apiUrl)); BtsApiNotifier *notifier = new BtsApiNotifier(this); connect(reply, &QNetworkReply::finished, [this, reply, notifier, secret]() { notifier->deleteLater(); if(checkForError(reply, notifier)) return; QJsonDocument doc = QJsonDocument::fromJson(reply->readAll()); if(checkForError(doc, notifier)) return; QJsonObject obj = doc.object(); QJsonArray arr = obj.value("hosts").toArray(); QStringList res; for(const QJsonValue &val: arr) res << val.toString(); emit setFolderHostsResult(res, secret); emit notifier->setFolderHostsResult(res, secret); }); return notifier; }
BtsApiNotifier *BtsApi::setFolderPrefs(const QString &secret, const QVariantHash &prefs) { QueryList ql; ql << QueryPair("secret", secret); for(auto it = prefs.constBegin(); it != prefs.constEnd(); ++it) ql << QueryPair(it.key(), it.value().toString()); QUrl apiUrl = getApiUrl(p, "set_folder_prefs", ql); QNetworkReply *reply = p->nam->get(QNetworkRequest(apiUrl)); BtsApiNotifier *notifier = new BtsApiNotifier(this); connect(reply, &QNetworkReply::finished, [this, reply, notifier, secret]() { notifier->deleteLater(); if(checkForError(reply, notifier)) return; QJsonDocument doc = QJsonDocument::fromJson(reply->readAll()); if(checkForError(doc, notifier)) return; QJsonObject obj = doc.object(); QVariantHash res; for(auto it = obj.constBegin(); it != obj.constEnd(); ++it) res[it.key()] = it.value().toVariant(); emit setFolderPrefsResult(res, secret); emit notifier->setFolderPrefsResult(res, secret); }); return notifier; }
std::string ZDvidUrl::getApiLoadUrl() const { return GetFullUrl(getApiUrl(), "load"); }
std::string ZDvidUrl::getRepoInfoUrl() const { return GetFullUrl(getApiUrl(), "/repos/info"); }
std::string ZDvidUrl::getServerInfoUrl() const { return GetFullUrl(getApiUrl(), "server/info"); }
std::string ZDvidUrl::getHelpUrl() const { return GetFullUrl(getApiUrl(), "help"); }
std::string ZDvidUrl::getServerInfoUrl() const { return getApiUrl() + "/server/info"; }
std::string ZDvidUrl::getHelpUrl() const { return getApiUrl() + "/help"; }
std::string ZDvidUrl::getRepoInfoUrl() const { return getApiUrl() + "/repos/info"; }
std::string ZDvidUrl::getRepoUrl() const { return getApiUrl() + "/repo/" + m_dvidTarget.getUuid(); }