Skip to content

Instantly share code, notes, and snippets.

@uditalias
Last active February 23, 2019 20:44
Show Gist options
  • Save uditalias/f524fc704a4b60e4d07abedfafaef426 to your computer and use it in GitHub Desktop.
Save uditalias/f524fc704a4b60e4d07abedfafaef426 to your computer and use it in GitHub Desktop.
import { controller, Controller, inject, get, IRequest, IResponse, validation } from "appolo";
import { LangaugeModel } from "./langaugeModel";
import { LangaugeManager } from "../../managers/langaugeManager";
import { OutputFormatContentType } from "../../common/enums";
import { promisify } from "util";
import * as zlib from "zlib";
const gzip = promisify<Buffer, Buffer>(zlib.gzip);
@controller()
export class LangaugeController extends Controller {
@inject() private langaugeManager: LangaugeManager;
@get("/:owner/:repo")
@validation(LangaugeModel)
public async langauge(req: IRequest, res: IResponse, model: LangaugeModel) {
const { owner, repo, maxAge, ...rest } = model;
res.setHeader("Content-Type", OutputFormatContentType[model.output]);
res.setHeader("Content-Encoding", "gzip");
res.setHeader("Cache-Control", `max-age=${maxAge}`);
const bitmapBuffer = await this.langaugeManager.generate(owner, repo, rest);
return gzip(bitmapBuffer);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment