diff options
Diffstat (limited to 'tools/skiaserve/urlhandlers/OpsHandler.cpp')
-rw-r--r-- | tools/skiaserve/urlhandlers/OpsHandler.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/skiaserve/urlhandlers/OpsHandler.cpp b/tools/skiaserve/urlhandlers/OpsHandler.cpp new file mode 100644 index 0000000000..a44e594c6b --- /dev/null +++ b/tools/skiaserve/urlhandlers/OpsHandler.cpp @@ -0,0 +1,39 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "UrlHandler.h" + +#include "../Request.h" +#include "../Response.h" +#include "microhttpd.h" + +using namespace Response; + +bool OpsHandler::canHandle(const char* method, const char* url) { + const char* kBasePath = "/batches"; + return 0 == strncmp(url, kBasePath, strlen(kBasePath)); +} + +int OpsHandler::handle(Request* request, MHD_Connection* connection, const char* url, + const char* method, const char* upload_data, size_t* upload_data_size) { + SkTArray<SkString> commands; + SkStrSplit(url, "/", &commands); + + if (!request->hasPicture() || commands.count() > 1) { + return MHD_NO; + } + + // /batches + if (0 == strcmp(method, MHD_HTTP_METHOD_GET)) { + int n = request->getLastOp(); + + sk_sp<SkData> data(request->getJsonOpList(n)); + return SendData(connection, data.get(), "application/json"); + } + + return MHD_NO; +} |