1
0
mirror of https://github.com/ohwgiles/laminar.git synced 2026-10-17 16:43:26 +00:00

resolves #50: badge url

Implements serving of an SVG badge at the url /badge/JOB.svg which
prettily shows the job's current status
This commit is contained in:
Oliver Giles
2018-09-10 14:51:43 +03:00
parent ab7be5a6c9
commit 132d40e6a3
6 changed files with 67 additions and 0 deletions

View File

@@ -311,6 +311,7 @@ private:
} else {
// handle regular HTTP request
const char* start, *end, *content_type;
std::string badge;
responseHeaders.clear();
if(resource.compare(0, strlen("/archive/"), "/archive/") == 0) {
kj::Own<MappedFile> file = laminar.getArtefact(resource.substr(strlen("/archive/")));
@@ -331,6 +332,11 @@ private:
responseHeaders.add("Content-Transfer-Encoding", "binary");
auto stream = response.send(200, "OK", responseHeaders, end-start);
return stream->write(start, end-start).attach(kj::mv(stream));
} else if(url.startsWith("/badge/") && url.endsWith(".svg") && laminar.handleBadgeRequest(resource.substr(7,resource.length()-11), badge)) {
responseHeaders.set(kj::HttpHeaderId::CONTENT_TYPE, "image/svg+xml");
responseHeaders.add("Cache-Control", "no-cache");
auto stream = response.send(200, "OK", responseHeaders, badge.size());
return stream->write(badge.data(), badge.size()).attach(kj::mv(badge)).attach(kj::mv(stream));
}
return response.sendError(404, "Not Found", responseHeaders);
}