-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.go
70 lines (57 loc) · 1.92 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
62
63
64
65
66
67
68
69
70
package main
import (
"flag"
"net/http"
"os"
"path/filepath"
"github.com/OpenGLAMTools/ArtsParts/shortlink"
"github.com/Sirupsen/logrus"
"github.com/gorilla/mux"
)
var log = logrus.New()
func main() {
executable, err := os.Executable()
if err != nil {
log.Fatal("Can not get executable: ", err)
}
defaultConfPath := filepath.Join(
filepath.Dir(executable),
".conf.yml",
)
confFile := flag.String("conf", defaultConfPath, "Path to the configuration")
flag.Parse()
conf, err := loadConf(*confFile)
if err != nil {
log.Fatal("Can not load conf: ", confFile, err)
}
log.Level = logrus.Level(conf.LogLevel)
initAuth(conf)
initTwitter(conf)
r := mux.NewRouter()
r.PathPrefix("/lib/").Handler(http.StripPrefix("/lib/", http.FileServer(http.Dir("templates/lib"))))
// Auth routes
// /auth/twitter
r = shortlink.AddRoute(r)
r = addAuthRoutes(r)
app, err := NewArtsPartsApp(conf)
if err != nil {
log.Fatal("error initializing app:", err)
}
go app.TweetNewArtworks()
r = addAppRoutes(r, app)
log.Infoln("Starting server at: ", conf.ServerPort)
log.Fatal(http.ListenAndServe(conf.ServerPort, r))
}
func addAppRoutes(r *mux.Router, app *ArtsPartsApp) *mux.Router {
r.HandleFunc("/", app.Timeline)
r.HandleFunc("/page/{page}", app.Page)
r.HandleFunc("/data/admin", app.AdminInstitutions).Methods("GET")
r.HandleFunc("/data/{institution}/{collection}/{artwork}", app.ArtworkData).Methods("GET", "POST")
r.HandleFunc("/img/{institution}/{collection}/{artwork}", app.Img).Methods("GET")
r.HandleFunc("/data/{institution}/{collection}", app.Collection).Methods("GET")
r.HandleFunc("/data/{institution}", app.Institution).Methods("GET")
r.HandleFunc("/editor/{institution}/{collection}/{artwork}", app.Editor).Methods("GET")
r.HandleFunc("/artpart/{institution}/{collection}/{artwork}", app.Artpart).Methods("POST")
r.HandleFunc("/artwork/{institution}/{collection}/{artwork}", app.ArtworkPage).Methods("GET")
return r
}