Advertisement
Guest User

Untitled

a guest
Dec 15th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "html/template"
  6. "log"
  7. "net/http"
  8. "os"
  9. "path/filepath"
  10. "strings"
  11. )
  12.  
  13. //Page title
  14. type Page struct {
  15. Title string
  16. }
  17.  
  18. //------------------------------Global Variables-------------------------------------//
  19. //Compile templates on start
  20. var templ = ParseTemplates()
  21.  
  22. //ParseTemplates use for multi directory html parsing
  23. func ParseTemplates() *template.Template {
  24. t := template.New("Base")
  25. err := filepath.Walk("./", func(path string, info os.FileInfo, err error) error {
  26. if strings.Contains(path, ".html") {
  27. _, err = t.ParseFiles(path)
  28. fmt.Println(path)
  29. if err != nil {
  30. logger.Println(err)
  31. fmt.Println(err)
  32. }
  33. }
  34.  
  35. return err
  36. })
  37.  
  38. if err != nil {
  39. panic(err)
  40. }
  41.  
  42. return t
  43. }
  44.  
  45. //logging
  46. var errorlog *os.File
  47. var logger *log.Logger
  48.  
  49. //---------------------------------------Page Handlers----------------------------------//
  50. //Handler for homepage
  51. func homepageHandler(w http.ResponseWriter, r *http.Request) {
  52. fmt.Println("Home")
  53. err := templ.ExecuteTemplate(w, "index", &Page{Title: "Welcome to TL;DR"})
  54. if err != nil {
  55. fmt.Println(err)
  56. logger.Println(err)
  57. http.Error(w, err.Error(), http.StatusInternalServerError)
  58. }
  59. }
  60.  
  61. //Handler for about page
  62. func aboutHandler(w http.ResponseWriter, r *http.Request) {
  63. fmt.Println("About")
  64. err := templ.ExecuteTemplate(w, "about", &Page{Title: "About TL;DR"})
  65. if err != nil {
  66. fmt.Println(err)
  67. logger.Println(err)
  68. http.Error(w, err.Error(), http.StatusInternalServerError)
  69. }
  70. }
  71.  
  72. //Server log to file
  73. func init() {
  74. errorlog, err := os.OpenFile("serverlog.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
  75. if err != nil {
  76. fmt.Printf("Error opening file: %v", err)
  77. os.Exit(1)
  78. }
  79. log.SetOutput(errorlog)
  80. logger = log.New(errorlog, "rnTDLR : ", log.Lshortfile|log.LstdFlags)
  81. }
  82.  
  83. func main() {
  84. //--------------------------------------Routers-------------------------------------//
  85. http.HandleFunc("/", homepageHandler)
  86. http.HandleFunc("/index", homepageHandler)
  87. http.HandleFunc("/about", aboutHandler)
  88.  
  89. http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
  90. //---------------------------------------------------------------------------------//
  91. //start server
  92. fmt.Println("Starting server on port 9090")
  93. logger.Println("Starting server on port 9090")
  94. logger.Fatal(http.ListenAndServe(":9090", nil))
  95.  
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement