Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

81 line
1.8KB

  1. package main
  2. import (
  3. "biukop.com/sfm/loan"
  4. "encoding/gob"
  5. "encoding/json"
  6. "fmt"
  7. log "github.com/sirupsen/logrus"
  8. "net/http"
  9. )
  10. type httpEntry func(http.ResponseWriter, *http.Request)
  11. var httpEntryMap = map[string]httpEntry{
  12. apiV1Prefix: apiV1Main,
  13. apiV1WebSocket: apiV1WebSocketHandler,
  14. "/dummy/": dummyHandler,
  15. }
  16. func main() {
  17. err := config.readConfig() //wechat API config
  18. if err != nil {
  19. log.Println(err)
  20. log.Fatalf("unable to read %s, program quit\n", configFile)
  21. return
  22. }
  23. setupRootFileServer()
  24. //always the last one
  25. setupHTTPHandler()
  26. }
  27. func init() {
  28. gob.Register(loginForm{})
  29. customFormatter := new(log.TextFormatter)
  30. customFormatter.TimestampFormat = "2006-01-02 15:04:05"
  31. log.SetFormatter(customFormatter)
  32. log.Info("Change Log Format before FullTimestamp=true")
  33. customFormatter.FullTimestamp = true
  34. }
  35. func setupRootFileServer() {
  36. //root of doc
  37. for idx, node := range config.Static {
  38. log.Printf("setting up static %d with %+v\n", idx, node)
  39. fs := http.FileServer(http.Dir(node.Dir))
  40. http.Handle(node.StaticUrl, http.StripPrefix(node.StripPrefix, fs))
  41. }
  42. }
  43. func setupHTTPHandler() {
  44. for key, val := range httpEntryMap {
  45. http.HandleFunc(key, val)
  46. }
  47. log.Printf("Server started at %s:%s\n", config.Host, config.Port)
  48. //log.Fatal(http.ListenAndServe(config.Host+":"+config.Port, nil))
  49. log.Fatal(http.ListenAndServeTLS(config.Host+":"+config.Port, config.TlsCert, config.TlsKey, nil))
  50. }
  51. func dummyHandler(w http.ResponseWriter, r *http.Request) {
  52. p := loan.People{}
  53. p.FakeNew()
  54. fmt.Fprintf(w, "Hello, there %s, %+v\n", loan.Version, p)
  55. }
  56. func apiSendJson(p interface{}, w http.ResponseWriter) {
  57. b, e := json.Marshal(p)
  58. w.Header().Set("Content-Type", "text/json; charset=utf-8")
  59. if e == nil {
  60. fmt.Fprint(w, string(b))
  61. } else {
  62. apiV1DumpRequest(w, nil, nil)
  63. }
  64. }