Files
kapow/internal/server/data/resource.go

65 lines
1.8 KiB
Go

package data
import (
"io"
"net/http"
"github.com/BBVA/kapow/internal/server/model"
"github.com/gorilla/mux"
)
func getRequestBody(w http.ResponseWriter, r *http.Request, h *model.Handler) {
w.Header().Add("Content-Type", "application/octet-stream")
n, err := io.Copy(w, h.Request.Body)
if err != nil {
if n == 0 {
w.WriteHeader(http.StatusInternalServerError)
} else {
// Only way to abort current connection as of go 1.13
// https://github.com/golang/go/issues/16542
panic("Truncated body")
}
}
}
func getRequestMethod(w http.ResponseWriter, r *http.Request, h *model.Handler) {
w.Header().Add("Content-Type", "application/octet-stream")
w.Write([]byte(h.Request.Method))
}
func getRequestHost(w http.ResponseWriter, r *http.Request, h *model.Handler) {
w.Header().Add("Content-Type", "application/octet-stream")
w.Write([]byte(h.Request.Host))
}
func getRequestPath(w http.ResponseWriter, r *http.Request, h *model.Handler) {
w.Header().Add("Content-Type", "application/octet-stream")
// TODO: Discuss a how to obtain URL.EscapedPath() instead
w.Write([]byte(h.Request.URL.Path))
}
func getRequestMatches(w http.ResponseWriter, r *http.Request, h *model.Handler) {
w.Header().Add("Content-Type", "application/octet-stream")
name := mux.Vars(r)["name"]
vars := mux.Vars(h.Request)
if value, ok := vars[name]; ok {
w.Write([]byte(value))
} else {
w.WriteHeader(http.StatusNotFound)
}
}
func getRequestParams(w http.ResponseWriter, r *http.Request, h *model.Handler) {
w.Header().Add("Content-Type", "application/octet-stream")
name := mux.Vars(r)["name"]
if value, ok := h.Request.URL.Query()[name]; ok {
w.Write([]byte(value[0]))
} else {
w.WriteHeader(http.StatusNotFound)
}
}
func getRequestHeaders(w http.ResponseWriter, r *http.Request, h *model.Handler) {
// DELETE ON START
}