Skip to content

Commit f7a827b

Browse files
committed
Change HTTP server to be compatible with the latest version
1 parent 5ebd17a commit f7a827b

File tree

2 files changed

+35
-35
lines changed

2 files changed

+35
-35
lines changed

src/server/http.cpp

+26-26
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ static HttpResponse errInvalidParameter(const QString &description) {
5252
return errBadRequest("invalid_parameter", description);
5353
}
5454

55-
static HttpResponse errInvalidTerms() { return errBadRequest("invalid_terms", "invalid terms"); }
55+
static HttpResponse errInvalidTerms() { return errBadRequest("invalid_hashes", "invalid hashes"); }
5656

5757
static QString getIndexName(const HttpRequest &request) {
5858
auto indexName = request.param(":index");
@@ -170,7 +170,7 @@ static HttpResponse handlePutDocumentRequest(const HttpRequest &request, const Q
170170
if (body.isEmpty()) {
171171
return errInvalidTerms();
172172
}
173-
auto terms = parseTerms(body.value("terms"));
173+
auto terms = parseTerms(body.value("hashes"));
174174

175175
try {
176176
auto writer = index->openWriter(true, 1000);
@@ -222,48 +222,48 @@ static HttpResponse handleSearchRequest(const HttpRequest &request, const QShare
222222
return HttpResponse(HTTP_OK, QJsonDocument(responseJson));
223223
}
224224

225-
// Handle bulk requests.
226-
static HttpResponse handleBulkRequest(const HttpRequest &request, const QSharedPointer<Index> &indexes) {
225+
// Handle bulk update requests.
226+
static HttpResponse handleUpdateRequest(const HttpRequest &request, const QSharedPointer<Index> &indexes) {
227227
auto index = getIndex(request, indexes);
228228

229229
QJsonArray opsJsonArray;
230230

231231
auto doc = request.json();
232232
if (doc.isObject()) {
233233
auto obj = doc.object();
234-
if (obj.contains("operations")) {
235-
auto value = obj.value("operations");
234+
if (obj.contains("changes")) {
235+
auto value = obj.value("changes");
236236
if (value.isArray()) {
237237
opsJsonArray = value.toArray();
238238
} else {
239-
return errBadRequest("invalid_bulk_operation", "'operations' must be an array");
239+
return errBadRequest("invalid_bulk_update", "'changes' must be an array");
240240
}
241241
}
242242
} else if (doc.isArray()) {
243243
opsJsonArray = doc.array();
244244
} else {
245-
return errBadRequest("invalid_bulk_operation",
246-
"request body must be either an array or an object with 'operations' key in it");
245+
return errBadRequest("invalid_bulk_update",
246+
"request body must be either an array or an object with 'changes' key in it");
247247
}
248248

249249
try {
250250
auto writer = index->openWriter(true, 1000);
251-
for (auto operation : opsJsonArray) {
252-
if (!operation.isObject()) {
253-
return errBadRequest("invalid_bulk_operation", "operation must be an object");
251+
for (auto change : opsJsonArray) {
252+
if (!change.isObject()) {
253+
return errBadRequest("invalid_bulk_update", "change must be an object");
254254
}
255-
auto operationObj = operation.toObject();
256-
if (operationObj.contains("upsert")) {
257-
auto docObj = operationObj.value("upsert").toObject();
255+
auto changeObj = change.toObject();
256+
if (changeObj.contains("insert")) {
257+
auto docObj = changeObj.value("insert").toObject();
258258
auto docId = docObj.value("id").toInt();
259-
auto terms = parseTerms(docObj.value("terms"));
259+
auto terms = parseTerms(docObj.value("hashes"));
260260
writer->addDocument(docId, terms.data(), terms.size());
261261
}
262-
if (operationObj.contains("delete")) {
262+
if (changeObj.contains("delete")) {
263263
return errNotImplemented("not implemented in this version of acoustid-index");
264264
}
265-
if (operationObj.contains("set")) {
266-
auto attrObj = operationObj.value("set").toObject();
265+
if (changeObj.contains("set_attribute")) {
266+
auto attrObj = changeObj.value("set").toObject();
267267
auto name = attrObj.value("name").toString();
268268
auto value = attrObj.value("value").toString();
269269
writer->setAttribute(name, value);
@@ -294,22 +294,22 @@ HttpRequestHandler::HttpRequestHandler(QSharedPointer<Index> indexes, QSharedPoi
294294
});
295295

296296
// Document API
297-
m_router.route(HTTP_HEAD, "/:index/_doc/:docId", [=](auto req) {
297+
m_router.route(HTTP_HEAD, "/:index/:docId", [=](auto req) {
298298
return handleHeadDocumentRequest(req, m_indexes);
299299
});
300-
m_router.route(HTTP_GET, "/:index/_doc/:docId", [=](auto req) {
300+
m_router.route(HTTP_GET, "/:index/:docId", [=](auto req) {
301301
return handleGetDocumentRequest(req, m_indexes);
302302
});
303-
m_router.route(HTTP_PUT, "/:index/_doc/:docId", [=](auto req) {
303+
m_router.route(HTTP_PUT, "/:index/:docId", [=](auto req) {
304304
return handlePutDocumentRequest(req, m_indexes);
305305
});
306-
m_router.route(HTTP_DELETE, "/:index/_doc/:docId", [=](auto req) {
306+
m_router.route(HTTP_DELETE, "/:index/:docId", [=](auto req) {
307307
return handleDeleteDocumentRequest(req, m_indexes);
308308
});
309309

310-
// Bulk API
311-
m_router.route(HTTP_POST, "/:index/_bulk", [=](auto req) {
312-
return handleBulkRequest(req, m_indexes);
310+
// Update API
311+
m_router.route(HTTP_POST, "/:index/_update", [=](auto req) {
312+
return handleUpdateRequest(req, m_indexes);
313313
});
314314

315315
// Search API

src/server/http_test.cpp

+9-9
Original file line numberDiff line numberDiff line change
@@ -87,16 +87,16 @@ TEST_F(HttpTest, TestGetIndexNotFound) {
8787
}
8888

8989
TEST_F(HttpTest, TestPutDocumentStringTerms) {
90-
auto request = HttpRequest(HTTP_PUT, QUrl("/main/_doc/111"));
91-
request.setBody(QJsonDocument(QJsonObject{{"terms", "1,2,3"}}));
90+
auto request = HttpRequest(HTTP_PUT, QUrl("/main/111"));
91+
request.setBody(QJsonDocument(QJsonObject{{"hashes", "1,2,3"}}));
9292
auto response = handler->router().handle(request);
9393
ASSERT_EQ(response.status(), HTTP_OK);
9494
ASSERT_EQ(response.body().toStdString(), "{}");
9595
}
9696

9797
TEST_F(HttpTest, TestPutDocumentArrayTerms) {
98-
auto request = HttpRequest(HTTP_PUT, QUrl("/main/_doc/111"));
99-
request.setBody(QJsonDocument(QJsonObject{{"terms", QJsonArray{1, 2, 3}}}));
98+
auto request = HttpRequest(HTTP_PUT, QUrl("/main/111"));
99+
request.setBody(QJsonDocument(QJsonObject{{"hashes", QJsonArray{1, 2, 3}}}));
100100
auto response = handler->router().handle(request);
101101
ASSERT_EQ(response.status(), HTTP_OK);
102102
ASSERT_EQ(response.body().toStdString(), "{}");
@@ -159,12 +159,12 @@ TEST_F(HttpTest, TestBulkArray) {
159159
}*/
160160

161161
TEST_F(HttpTest, TestBulkObject) {
162-
auto request = HttpRequest(HTTP_POST, QUrl("/main/_bulk"));
162+
auto request = HttpRequest(HTTP_POST, QUrl("/main/_update"));
163163
request.setBody(QJsonDocument(QJsonObject{
164-
{"operations", QJsonArray{
165-
QJsonObject{{"upsert", QJsonObject{{"id", 111}, {"terms", QJsonArray{1, 2, 3}}}}},
166-
QJsonObject{{"upsert", QJsonObject{{"id", 112}, {"terms", QJsonArray{3, 4, 5}}}}},
167-
QJsonObject{{"set", QJsonObject{{"name", "foo"}, {"value", "bar"}}}},
164+
{"changes", QJsonArray{
165+
QJsonObject{{"insert", QJsonObject{{"id", 111}, {"hashes", QJsonArray{1, 2, 3}}}}},
166+
QJsonObject{{"insert", QJsonObject{{"id", 112}, {"hashes", QJsonArray{3, 4, 5}}}}},
167+
QJsonObject{{"set_attribute", QJsonObject{{"name", "foo"}, {"value", "bar"}}}},
168168
}},
169169
}));
170170

0 commit comments

Comments
 (0)