-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.go
83 lines (70 loc) · 2.61 KB
/
server.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package server
import (
"Scouting-2022/server/database"
"Scouting-2022/server/toa_api"
"net/http"
"sync"
"github.com/NYTimes/gziphandler"
)
type Server struct {
db *database.Database
client *toa_api.TOAClient
sessions map[string]Session
http http.Server
servMux *http.ServeMux
mu sync.Mutex
}
func NewServer(TOAApiKey string, eventKey string) (*Server, error) {
var self *Server
var db *database.Database
var err error
db, err = database.NewDataBase("./database.sqlite3")
if err != nil {
return nil, err
}
_ = db.NewUser("Admin", "password", "Admin", "Admin")
self = &Server{db: db, // client: toa_api.NewTOAClient(TOAApiKey, "Megiddo Lions Scouting System"),
sessions: make(map[string]Session),
http: http.Server{Addr: ":80"},
servMux: http.NewServeMux()}
// get event info from The orange alliance api
// _, err = self.getEvent(eventKey)
if err != nil {
return nil, err
}
// config
self.configHTTP()
return self, nil
}
func serveFile(w http.ResponseWriter, req *http.Request) {
http.ServeFile(w, req, "www"+req.URL.Path)
}
func (server *Server) configHTTP() {
server.http.Handler = server.servMux
server.servMux.HandleFunc("/", server.handleIndex)
server.servMux.HandleFunc("/index.html", server.handleIndex)
server.servMux.HandleFunc("/robots.html", server.handleRobots)
server.servMux.HandleFunc("/main.css", serveFile)
server.servMux.HandleFunc("/favicon.ico", serveFile)
server.servMux.HandleFunc("/login.html", server.handleLogin)
server.servMux.HandleFunc("/users.html", server.handleUsers)
server.servMux.HandleFunc("/management.html", server.handleManagement)
server.servMux.HandleFunc("/form.html", server.handleForm)
server.servMux.HandleFunc("/post-form.html", server.handlePostForm)
server.servMux.HandleFunc("/assign.html", server.handleAssign)
server.servMux.HandleFunc("/create-user.html", server.handleCreateUser)
server.servMux.HandleFunc("/match-data.html", server.handleMatchData)
server.servMux.HandleFunc("/team.html", server.handleTeamPage)
server.servMux.HandleFunc("/ranking.html", server.handleRanking)
server.servMux.HandleFunc("/user-management.html", server.handleUserManagement)
server.servMux.HandleFunc("/pit-form.html", server.handlePitForm)
server.servMux.HandleFunc("/schedule.html", server.handleSchedule)
server.servMux.HandleFunc("/sql.html", server.handleRunSQL)
// API
server.servMux.HandleFunc("/api/get_team_games", server.handleGetTeamGames)
server.http.Handler = gziphandler.GzipHandler(server.http.Handler)
}
func (server *Server) Run() error {
println("Server running at localhost:80")
return server.http.ListenAndServe()
}