Draft version.
This commit is contained in:
parent
d8becc44a2
commit
50a780483f
4 changed files with 144 additions and 0 deletions
24
.gitignore
vendored
Normal file
24
.gitignore
vendored
Normal 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
40
app_test.go
Normal 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
46
main.go
Normal 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
34
templates/index.tmpl
Normal 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 }}
|
Loading…
Reference in a new issue