Draft version.

This commit is contained in:
Alex Myasoedov 2016-02-29 21:16:20 +02:00
parent d8becc44a2
commit 50a780483f
4 changed files with 144 additions and 0 deletions

24
.gitignore vendored Normal file
View file

@ -0,0 +1,24 @@
# Compiled Object files, Static and Dynamic libs (Shared Objects)
*.o
*.a
*.so
# Folders
_obj
_test
# Architecture specific extensions/prefixes
*.[568vq]
[568vq].out
*.cgo1.go
*.cgo2.c
_cgo_defun.c
_cgo_gotypes.go
_cgo_export.*
_testmain.go
*.exe
bin/
src/

40
app_test.go Normal file
View file

@ -0,0 +1,40 @@
package main
import (
. "github.com/franela/goblin"
"net/http"
"net/http/httptest"
"testing"
)
func performRequest(method, path string) *httptest.ResponseRecorder {
app := NewApp()
req, _ := http.NewRequest(method, path, nil)
w := httptest.NewRecorder()
app.ServeHTTP(w, req)
return w
}
func Test(t *testing.T) {
g := Goblin(t)
g.Describe("App api", func() {
g.It("Should return 200 on / ", func() {
w := performRequest("GET", "/")
g.Assert(w.Code).Equal(200)
})
g.It("Should return 200 on /slides.md ", func() {
w := performRequest("GET", "/slides.md")
g.Assert(w.Code).Equal(200)
})
g.It("Should return 200 on PUT /slides.md ", func() {
w := performRequest("PUT", "/slides.md")
g.Assert(w.Code).Equal(200)
})
g.It("Should works")
})
}

46
main.go Normal file
View file

@ -0,0 +1,46 @@
package main
import (
"github.com/gin-gonic/gin"
"io/ioutil"
)
var DB = make(map[string]string)
func NewApp() *gin.Engine {
r := gin.Default()
r.GET("/slides.md", func(c *gin.Context) {
body, err := ioutil.ReadFile("initial-slides.md")
if err != nil {
panic(err)
}
c.String(200, string(body))
})
r.GET("/", func(c *gin.Context) {
c.HTML(200, "index.tmpl", gin.H{
"pubTo": "Users",
})
})
// Get user value
r.GET("/user/:name", func(c *gin.Context) {
user := c.Params.ByName("name")
value, ok := DB[user]
if ok {
c.JSON(200, gin.H{"user": user, "value": value})
} else {
c.JSON(200, gin.H{"user": user, "status": "no value"})
}
})
return r
}
func main() {
r := NewApp()
r.Run(":8080")
}

34
templates/index.tmpl Normal file
View file

@ -0,0 +1,34 @@
{{ define "users/index.tmpl" }}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Hacker Slides</title>
<link rel="stylesheet" href="/static/css/index.css">
</head>
<body>
<div id="edit-pane">
<div id="controls">
<a href="{{ .pubTo }}" target="_blank" onclick="save();"> Present</a>
</div>
<div id="editor"></div>
</div>
<div id="preview">
<iframe id="slides-frame" src="/static/slides.html?preview"></iframe>
</div>
<script src="/static/revealjs/js/ace-1.1.8/ace.js" type="text/javascript" charset="utf-8"></script>
<script src="/static/revealjs/js/jquery-2.1.3.min.js" type="text/javascript" charset="utf-8"></script>
<script src="/static/revealjs/js/jquery-debounce-1.0.5.js" type="text/javascript" charset="utf-8"></script>
<script src="/static/js/save.js" type="text/javascript" charset="utf-8"></script>
<script src="/static/js/index.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>
{{ end }}