main.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/vladimirok5959/golang-server-sessions/session"
  6. )
  7. func main() {
  8. http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
  9. // Init session
  10. sess := session.New(w, r, "./tmp")
  11. defer sess.Close()
  12. if r.URL.Path == "/" {
  13. var counter int
  14. // Get value or set default
  15. if sess.IsSetInt("counter") {
  16. counter = sess.GetInt("counter", 0)
  17. } else {
  18. counter = 0
  19. }
  20. // Increment value
  21. counter++
  22. // Update
  23. sess.SetInt("counter", counter)
  24. w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
  25. w.Header().Set("Content-Type", "text/html")
  26. w.Write([]byte(`
  27. <div>Hello World!</div>
  28. <div>Counter: ` + fmt.Sprintf("%d", counter) + `</div>
  29. `))
  30. } else {
  31. w.WriteHeader(http.StatusNotFound)
  32. w.Write([]byte(`<div>Error 404!</div>`))
  33. }
  34. })
  35. // Delete expired session files
  36. if err := session.Clean("./tmp"); err != nil {
  37. fmt.Printf("%s\n", err.Error())
  38. }
  39. if err := http.ListenAndServe(":8080", nil); err != nil {
  40. fmt.Printf("%s\n", err.Error())
  41. }
  42. }