From fa3272edca41882027f6b22f70bc61d9a182bd0d Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sun, 3 Apr 2016 19:47:03 +0200 Subject: Add NewRoute --- route.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/route.go b/route.go index 19e0115..cc5bc05 100644 --- a/route.go +++ b/route.go @@ -63,3 +63,30 @@ func (r Routes) ServeHTTP(w http.ResponseWriter, _ *http.Request) { fmt.Fprintln(w, v) } } + +func NewRoute(e Entry) (Route, error) { + fail := func(err error) (Route, error) { return Route{}, err } + host, err := url.Parse(e.Host) + if err != nil { + return fail(err) + } + up, err := url.Parse(e.Upstream) + if err != nil { + return fail(err) + } + r := Route{ + ServerName: host, + Upstream: up, + } + if host.Scheme == "https" { + if e.Cert == nil || e.Key == nil { + return fail(ErrNoCert) + } + cert, err := tls.X509KeyPair(e.Cert, e.Key) + if err != nil { + return fail(err) + } + r.Certificate = &cert + } + return r, nil +} -- cgit v1.2.3