diff options
author | dev <navdgo@gmail.com> | 2019-05-14 10:35:41 -0400 |
---|---|---|
committer | dev <navdgo@gmail.com> | 2019-05-20 14:48:26 -0400 |
commit | 043eb1d9e5db456b9b78c0423cb44716fc81a932 (patch) | |
tree | a78aee0752b03c4f3c3cb45d409107e64faa10e3 /internal/caddyscript/lib/http.go | |
parent | fec7fa8bfda713e8042b9bbf9a480c7792b78c41 (diff) |
move internal packages to pkg folder and update reverse proxy
* set automatic https error type for cert-magic failures
* add state to onload and unload methods
* update reverse proxy to use Provision() and Cleanup()
Diffstat (limited to 'internal/caddyscript/lib/http.go')
-rw-r--r-- | internal/caddyscript/lib/http.go | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/internal/caddyscript/lib/http.go b/internal/caddyscript/lib/http.go deleted file mode 100644 index 233b43f..0000000 --- a/internal/caddyscript/lib/http.go +++ /dev/null @@ -1,72 +0,0 @@ -package caddyscript - -import ( - "fmt" - "net/http" - - "go.starlark.net/starlark" -) - -// HTTPRequest represents an http request type in caddyscript. -type HTTPRequest struct{ Req *http.Request } - -// AttrNames defines what properties and methods are available on the HTTPRequest type. -func (r HTTPRequest) AttrNames() []string { - return []string{"header", "query", "url", "method", "host", "tls"} -} - -func (r HTTPRequest) Freeze() {} -func (r HTTPRequest) Hash() (uint32, error) { return 0, fmt.Errorf("unhashable: HTTPRequest") } -func (r HTTPRequest) String() string { return fmt.Sprint(r.Req) } -func (r HTTPRequest) Type() string { return "HTTPRequest" } -func (r HTTPRequest) Truth() starlark.Bool { return true } - -// Header handles returning a header key. -func (r HTTPRequest) Header(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var key string - err := starlark.UnpackPositionalArgs(fn.Name(), args, kwargs, 1, &key) - if err != nil { - return starlark.None, fmt.Errorf("get request header: %v", err.Error()) - } - - return starlark.String(r.Req.Header.Get(key)), nil -} - -// Attr defines what happens when props or methods are called on the HTTPRequest type. -func (r HTTPRequest) Attr(name string) (starlark.Value, error) { - switch name { - case "tls": - tls := new(starlark.Dict) - tls.SetKey(starlark.String("cipher_suite"), starlark.MakeUint(uint(r.Req.TLS.CipherSuite))) - tls.SetKey(starlark.String("did_resume"), starlark.Bool(r.Req.TLS.DidResume)) - tls.SetKey(starlark.String("handshake_complete"), starlark.Bool(r.Req.TLS.HandshakeComplete)) - tls.SetKey(starlark.String("negotiated_protocol"), starlark.String(r.Req.TLS.NegotiatedProtocol)) - tls.SetKey(starlark.String("negotiated_protocol_is_mutual"), starlark.Bool(r.Req.TLS.NegotiatedProtocolIsMutual)) - tls.SetKey(starlark.String("server_name"), starlark.String(r.Req.TLS.ServerName)) - tls.SetKey(starlark.String("version"), starlark.String(r.Req.TLS.Version)) - - return tls, nil - case "header": - b := starlark.NewBuiltin("Header", r.Header) - b = b.BindReceiver(r) - - return b, nil - case "query": - qVals := r.Req.URL.Query() - query := starlark.NewDict(len(qVals)) - - for k, v := range qVals { - query.SetKey(starlark.String(k), starlark.String(v[0])) - } - - return query, nil - case "url": - return starlark.String(r.Req.URL.Path), nil - case "method": - return starlark.String(r.Req.Method), nil - case "host": - return starlark.String(r.Req.Host), nil - } - - return nil, nil -} |