diff options
| -rw-r--r-- | config.go | 16 | ||||
| -rw-r--r-- | icalproxy.go | 6 |
2 files changed, 20 insertions, 2 deletions
| @@ -1,6 +1,7 @@ | |||
| 1 | package main | 1 | package main |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "encoding" | ||
| 4 | "encoding/base64" | 5 | "encoding/base64" |
| 5 | "encoding/json" | 6 | "encoding/json" |
| 6 | "log" | 7 | "log" |
| @@ -14,8 +15,21 @@ type userToken struct { | |||
| 14 | Salt []byte `json:"salt"` | 15 | Salt []byte `json:"salt"` |
| 15 | } | 16 | } |
| 16 | 17 | ||
| 18 | type jsonURL url.URL | ||
| 19 | |||
| 20 | func (u *jsonURL) UnmarshalText(v []byte) error { | ||
| 21 | parsed, err := url.Parse(string(v)) | ||
| 22 | if err != nil { | ||
| 23 | return err | ||
| 24 | } | ||
| 25 | *u = jsonURL(*parsed) | ||
| 26 | return nil | ||
| 27 | } | ||
| 28 | |||
| 29 | var _ encoding.TextUnmarshaler = new(jsonURL) | ||
| 30 | |||
| 17 | type config struct { | 31 | type config struct { |
| 18 | CalendarURL url.URL `json:"calendar_url"` | 32 | CalendarURL jsonURL `json:"calendar_url"` |
| 19 | Ignore ignoreRules `json:"ignore"` | 33 | Ignore ignoreRules `json:"ignore"` |
| 20 | Port string `json:"port"` | 34 | Port string `json:"port"` |
| 21 | UserTokens map[string]userToken `json:"user_tokens"` | 35 | UserTokens map[string]userToken `json:"user_tokens"` |
diff --git a/icalproxy.go b/icalproxy.go index cf09e5d..9ca1b33 100644 --- a/icalproxy.go +++ b/icalproxy.go | |||
| @@ -15,7 +15,11 @@ func main() { | |||
| 15 | cfg := loadConfig() | 15 | cfg := loadConfig() |
| 16 | printConfig(&cfg) | 16 | printConfig(&cfg) |
| 17 | 17 | ||
| 18 | handler := handler{ignore: cfg.Ignore, tokens: cfg.UserTokens} | 18 | handler := handler{ |
| 19 | calURL: url.URL(cfg.CalendarURL), | ||
| 20 | ignore: cfg.Ignore, | ||
| 21 | tokens: cfg.UserTokens, | ||
| 22 | } | ||
| 19 | 23 | ||
| 20 | mux := http.ServeMux{} | 24 | mux := http.ServeMux{} |
| 21 | mux.HandleFunc("/", handler.handle) | 25 | mux.HandleFunc("/", handler.handle) |