64 lines
1.3 KiB
Go
Raw Permalink Normal View History

2024-03-22 14:08:24 +00:00
package web
2024-03-16 14:22:47 +00:00
import (
"context"
"net/http"
)
// Request is an interface for HTTP requests.
type Request interface {
Context() context.Context
Header(key string) string
Host() string
Method() string
Path() string
Protocol() string
Read([]byte) (int, error)
Scheme() string
}
// request represents the HTTP request used in the given context.
type request struct {
*http.Request
}
// Context returns the request context.
func (req request) Context() context.Context {
return req.Request.Context()
}
// Header returns the header value for the given key.
func (req request) Header(key string) string {
return req.Request.Header.Get(key)
}
// Method returns the request method.
func (req request) Method() string {
return req.Request.Method
}
// Protocol returns the request protocol.
func (req request) Protocol() string {
return req.Request.Proto
}
// Host returns the requested host.
func (req request) Host() string {
return req.Request.Host
}
// Path returns the requested path.
func (req request) Path() string {
return req.Request.URL.Path
}
// // Read implements the io.Reader interface and reads the request body.
func (req request) Read(buffer []byte) (int, error) {
return req.Request.Body.Read(buffer)
}
// Scheme returns either `http` or `https`.
func (req request) Scheme() string {
return req.Request.URL.Scheme
}