/
main.go
58 lines (45 loc) · 1.49 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
package main
import (
"flag"
"log"
"net/http"
"strings"
"google.golang.org/api/option"
. "github.com/monstercat/asset-delivery"
)
func main() {
var address, credsFilename, allowedHosts, projectId string
flag.StringVar(&address, "address", "0.0.0.0:80", "The binding address for the application.")
flag.StringVar(&credsFilename, "credentials", "/secrets/google.json", "The location of the Google JWT file.")
flag.StringVar(&allowedHosts, "allow", "", "A comma separated list of domain hosts. An empty value allows any.")
flag.StringVar(&projectId, "project-id", "", "Project ID")
flag.Parse()
opts := option.WithCredentialsFile(credsFilename)
fs, err := NewGCloudFileSystem(opts)
if err != nil {
log.Fatalf("Failed to create file system: %s", err.Error())
}
log.Print("Project ID: ", projectId)
pb, err := NewGCloudPubSub(projectId, opts)
if err != nil {
log.Fatalf("Failed to create connection to pubsub: %s", err.Error())
}
defer pb.Close()
cloudClient, cloudLogger, err := NewGCloudLogger(projectId, "asset-delivery", opts)
if err != nil {
log.Fatalf("Failed to create connection to logger: %s", err.Error())
}
defer cloudClient.Close()
pb.Logger = cloudLogger
server := &Server{
Logger: cloudLogger,
FS: fs,
PB: pb,
PermittedHosts: strings.Split(allowedHosts, ","),
Prefix: "resized",
}
err = http.ListenAndServe(address, server)
if err != nil {
log.Fatalf("Failed to start listening on %s: %s", address, err.Error())
}
}