From 1f94bb0246b00bbfbca83df368f76c2287acd7e7 Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Fri, 6 Feb 2015 16:17:16 -0800 Subject: [PATCH] Add olegdb-cached readme parser Will take any of my projects and render a README.md --- controllers/projects.moon | 35 ++++++++++++++++++++++++++++++++++- views/readme.moon | 6 ++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 views/readme.moon diff --git a/controllers/projects.moon b/controllers/projects.moon index 719cb34..860aa62 100644 --- a/controllers/projects.moon +++ b/controllers/projects.moon @@ -1,5 +1,38 @@ -lapis = require "lapis" +config = require("lapis.config").get! +discount = require "discount" +lapis = require "lapis" +http = require "lapis.nginx.http" +oleg = require "lib/oleg" + +require "base64" + +gh = require('github').new({access_token: os.getenv "GITHUB_TOKEN", httpclient_driver: 'httpclient.ngx_driver'}) class Projects extends lapis.Application [projects: "/projects"]: => render: true + + [readme: "/projects/:name"]: => + @ret, @err = oleg.get "readmes", @params.name + + ngx.log ngx.NOTICE, "Got content from oleg, code #{@err}" + + if @err + ngx.log ngx.NOTICE, "Need to download readme for #{@params.name}" + + reply, err = gh\authed_request "/repos/Xe/#{@params.name}/contents/README.md" + readme = base64.decode reply.content + + if code == 404 + return render: "notfound", status_code: 404 + + oleg.set "readmes", @params.name, readme + @ret = readme + + elseif @err + @err = "OlegDB returned code #{@err}." + return render: "error", status_code: 500 + + @doc = discount @ret, "toc", "nopants", "autolink" + + render: true diff --git a/views/readme.moon b/views/readme.moon new file mode 100644 index 0000000..d739747 --- /dev/null +++ b/views/readme.moon @@ -0,0 +1,6 @@ +import Widget from require "lapis.html" + +class Readme extends Widget + content: => + raw @doc +