From f848116e1b9cd8957283d0dad6037147064a1cee Mon Sep 17 00:00:00 2001 From: Dan Sosedoff Date: Mon, 13 Oct 2014 14:40:56 -0500 Subject: [PATCH] Serve assets with bindata --- .gitignore | 3 ++- Makefile | 2 ++ api.go | 43 ++++++++++++++++++++++++++++++++++++++++++- main.go | 2 +- 4 files changed, 47 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 7c01d0e..e641ce1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .DS_Store pgweb -bin \ No newline at end of file +bin +bindata.go \ No newline at end of file diff --git a/Makefile b/Makefile index e397d77..11c9d13 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,6 @@ build: + rm -f bindata.go + go-bindata static/... gox -osarch="darwin/amd64" -output="./bin/pgweb_{{.OS}}_{{.Arch}}" deps: diff --git a/api.go b/api.go index a4f2693..8a07f6f 100644 --- a/api.go +++ b/api.go @@ -11,8 +11,27 @@ type Error struct { Message string `json:"error"` } +func assetContentType(name string) string { + if strings.Contains(name, ".css") { + return "text/css" + } + + if strings.Contains(name, ".js") { + return "application/javascript" + } + + return "text/plain" +} + func API_Home(c *gin.Context) { - c.File("./static/index.html") + data, err := Asset("static/index.html") + + if err != nil { + c.String(400, err.Error()) + return + } + + c.Data(200, "text/html", data) } func API_RunQuery(c *gin.Context) { @@ -104,3 +123,25 @@ func API_HandleQuery(query string, c *gin.Context) { c.JSON(200, result) } + +func API_ServeAsset(c *gin.Context) { + file := fmt.Sprintf( + "static/%s/%s", + c.Params.ByName("type"), + c.Params.ByName("name"), + ) + + data, err := Asset(file) + + if err != nil { + c.String(400, err.Error()) + return + } + + if len(data) == 0 { + c.String(404, "Asset is empty") + return + } + + c.Data(200, assetContentType(file), data) +} diff --git a/main.go b/main.go index b23bbcc..37e42ae 100644 --- a/main.go +++ b/main.go @@ -88,7 +88,7 @@ func main() { router.GET("/explain", API_ExplainQuery) router.POST("/explain", API_ExplainQuery) router.GET("/history", API_History) - router.Static("/static", options.Static) + router.GET("/static/:type/:name", API_ServeAsset) fmt.Println("Starting server at 0.0.0.0:8080") router.Run(":8080")