myPrayerJournal/src/my-prayer-journal.go

50 lines
1.1 KiB
Go
Raw Normal View History

2018-01-18 05:00:26 +00:00
// myPrayerJournal API Server
package main
import (
"encoding/json"
2018-01-18 17:29:01 +00:00
"log"
"net/http"
"os"
2018-01-18 17:29:01 +00:00
"github.com/danieljsummers/myPrayerJournal/src/api/data"
"github.com/danieljsummers/myPrayerJournal/src/api/routes"
2018-01-18 05:00:26 +00:00
)
// Web contains configuration for the web server.
type Web struct {
Port string `json:"port"`
}
// Settings contains configuration for the myPrayerJournal API.
type Settings struct {
Data *data.Settings `json:"data"`
Web *Web `json:"web"`
Auth *routes.AuthConfig `json:"auth"`
}
// readSettings parses the JSON configuration file into the Settings struct.
func readSettings(f string) *Settings {
config, err := os.Open(f)
if err != nil {
log.Fatal(err)
}
defer config.Close()
parser := json.NewDecoder(config)
settings := Settings{}
if err = parser.Decode(&settings); err != nil {
log.Fatal(err)
}
return &settings
}
2018-01-18 05:00:26 +00:00
func main() {
cfg := readSettings("config.json")
db, ok := data.Connect(cfg.Data)
2018-01-18 17:29:01 +00:00
if !ok {
log.Fatal("Unable to connect to database; exiting")
}
log.Printf("myPrayerJournal API listening on %s", cfg.Web.Port)
log.Fatal(http.ListenAndServe(cfg.Web.Port, routes.NewRouter(db, cfg.Auth)))
2018-01-18 05:00:26 +00:00
}