main.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/atrox/haikunatorgo"
  5. "github.com/gin-gonic/contrib/sessions"
  6. "github.com/gin-gonic/gin"
  7. "io/ioutil"
  8. "os"
  9. )
  10. func NewApp() *gin.Engine {
  11. r := gin.Default()
  12. store := sessions.NewCookieStore([]byte("secret"))
  13. r.Use(sessions.Sessions("mysession", store))
  14. r.LoadHTMLGlob("templates/index.tmpl")
  15. r.Static("/static", "./static")
  16. r.GET("/", func(c *gin.Context) {
  17. haikunator := haikunator.NewHaikunator()
  18. haikunator.TokenLength = 0
  19. name := haikunator.Haikunate()
  20. path := fmt.Sprintf("%s.md", name)
  21. session := sessions.Default(c)
  22. session.Set("name", path)
  23. session.Save()
  24. c.HTML(200, "users/index.tmpl", gin.H{
  25. "pubTo": path,
  26. })
  27. })
  28. r.GET("/slides.md", func(c *gin.Context) {
  29. session := sessions.Default(c)
  30. val := session.Get("name")
  31. path, ok := val.(string)
  32. if !ok {
  33. panic("unlucky")
  34. }
  35. if _, err := os.Stat(path); err != nil {
  36. body, err := ioutil.ReadFile("initial-slides.md")
  37. if err != nil {
  38. panic(err)
  39. }
  40. ioutil.WriteFile(path, body, 0644)
  41. }
  42. body, err := ioutil.ReadFile(path)
  43. if err != nil {
  44. panic(err)
  45. }
  46. c.String(200, string(body))
  47. })
  48. r.PUT("/slides.md", func(c *gin.Context) {
  49. session := sessions.Default(c)
  50. val := session.Get("name")
  51. path, ok := val.(string)
  52. if !ok {
  53. panic("unlucky")
  54. }
  55. body, _ := ioutil.ReadAll(c.Request.Body)
  56. ioutil.WriteFile(path, body, 0644)
  57. c.String(200, "")
  58. })
  59. return r
  60. }
  61. func main() {
  62. r := NewApp()
  63. r.Run(":8080")
  64. }