This repository has been archived by the owner on Oct 6, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
61 lines (52 loc) · 2.25 KB
/
main.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
package main
import (
"github.com/gorilla/mux"
"github.com/julienc91/heygo/database"
"github.com/julienc91/heygo/globals"
"github.com/julienc91/heygo/tools"
"github.com/julienc91/heygo/views"
"github.com/julienc91/heygo/views/admin"
"net/http"
)
// The main function, from where routes are defined
func main() {
defer tools.OpenSubtitlesClose()
defer close(globals.LoadConfiguration)
database.LoadConfiguration()
tools.InitFromConfiguration()
go reloadConfiguration()
var rtr = mux.NewRouter()
rtr = rtr.StrictSlash(true)
rtr.HandleFunc("/about", views.AboutHandler)
rtr.HandleFunc("/videos/get/{slug:[a-z0-9_]+}", views.VideoDetailHandler)
rtr.HandleFunc("/videos/get", views.VideoGetAllHandler)
rtr.HandleFunc("/videos", views.VideoMenuHandler)
rtr.HandleFunc("/signin", views.SignInHandler)
rtr.HandleFunc("/signup", views.Signup)
rtr.HandleFunc("/signout", views.Signout)
rtr.HandleFunc("/login", views.Login)
rtr.HandleFunc("/media/{type:videos}/{slug:[a-z0-9_]+}", views.StreamMedia)
rtr.HandleFunc("/media/thumbnail/{url}", views.MediaThumbnailHandler)
rtr.HandleFunc("/media/subtitles/list/{slug:[a-z0-9_]+}/{lang:fre|eng}", views.VideoGetSubtitles)
rtr.HandleFunc("/media/subtitles/get/{hash:[a-zA-Z0-9/_=-]+}", views.SubtitlesServerHandler)
rtr.HandleFunc("/admin/get/{table:[a-z_]+}", admin.AdminGetAll)
rtr.HandleFunc("/admin/get/{table:[a-z_]+}/{id:[0-9]+}", admin.AdminGetFromId)
rtr.HandleFunc("/admin/update/{table:[a-z_]+}/{id:[0-9]+}", admin.AdminUpdate)
rtr.HandleFunc("/admin/insert/{table:[a-z_]+}", admin.AdminInsert)
rtr.HandleFunc("/admin/batchinsert/{table:videos}", admin.AdminBatchInsertVideos)
rtr.HandleFunc("/admin/delete/{table:[a-z_]+}", admin.AdminDelete)
rtr.HandleFunc("/admin/media/check", admin.AdminMediaCheck)
rtr.HandleFunc("/admin", admin.AdminHandler)
rtr.HandleFunc("/", views.MainPageHandler)
// serve static files
rtr.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("./static/"))))
http.Handle("/", rtr)
http.ListenAndServe(globals.CONFIGURATION.Domain+":"+globals.CONFIGURATION.Port, nil)
}
// Hot reloading of the configuration
func reloadConfiguration() {
for _ = range globals.LoadConfiguration {
database.LoadConfiguration()
tools.InitFromConfiguration()
}
}