|
@@ -23,6 +23,14 @@ type HTTPServerResponse struct {
|
|
|
Data any
|
|
Data any
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func ResponseOK() *HTTPServerResponse {
|
|
|
|
|
+ return &HTTPServerResponse{
|
|
|
|
|
+ Headers: HTTPHeaders{},
|
|
|
|
|
+ Plain: []byte{},
|
|
|
|
|
+ Encoding: ENCODING_PLAIN,
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func ResponsePlain(headers HTTPHeaders, plain []byte) *HTTPServerResponse {
|
|
func ResponsePlain(headers HTTPHeaders, plain []byte) *HTTPServerResponse {
|
|
|
return &HTTPServerResponse{
|
|
return &HTTPServerResponse{
|
|
|
Headers: headers,
|
|
Headers: headers,
|
|
@@ -46,7 +54,7 @@ func ResponseErr(status int, err error) *HTTPServerResponse {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-type HTTPServerCallback func(log *Log, request *HTTPServerRequest) *HTTPServerResponse
|
|
|
|
|
|
|
+type HTTPServerCallback func(request *HTTPServerRequest) *HTTPServerResponse
|
|
|
|
|
|
|
|
type HTTPServerHandler struct {
|
|
type HTTPServerHandler struct {
|
|
|
Callback HTTPServerCallback
|
|
Callback HTTPServerCallback
|
|
@@ -122,19 +130,31 @@ func (this *HTTPServer) ServeHTTP(responseStream http.ResponseWriter, requestStr
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Parse GET query
|
|
// Parse GET query
|
|
|
- if method == METHOD_GET {
|
|
|
|
|
- query := map[string]string{}
|
|
|
|
|
|
|
+ if method == METHOD_GET && handler.Data != nil {
|
|
|
|
|
+ query := map[string]any{}
|
|
|
for key, values := range requestStream.URL.Query() {
|
|
for key, values := range requestStream.URL.Query() {
|
|
|
for _, value := range values {
|
|
for _, value := range values {
|
|
|
query[key] = value
|
|
query[key] = value
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- handler.Data = query
|
|
|
|
|
|
|
+ buffer, err := json.Marshal(query)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ this.log.Error("malformed request body", LogValue("path", requestStream.URL.Path), LogError(err))
|
|
|
|
|
+ responseStream.WriteHeader(http.StatusInternalServerError)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ err = json.Unmarshal(buffer, handler.Data)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ this.log.Error("malformed request body", LogValue("path", requestStream.URL.Path), LogError(err))
|
|
|
|
|
+ responseStream.WriteHeader(http.StatusInternalServerError)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Parse POST body
|
|
// Parse POST body
|
|
|
- if method == METHOD_POST {
|
|
|
|
|
|
|
+ if method == METHOD_POST && handler.Data != nil {
|
|
|
size := 1
|
|
size := 1
|
|
|
if handler.Buffer > 0 {
|
|
if handler.Buffer > 0 {
|
|
|
size = handler.Buffer
|
|
size = handler.Buffer
|
|
@@ -176,7 +196,6 @@ func (this *HTTPServer) ServeHTTP(responseStream http.ResponseWriter, requestStr
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
response := handler.Callback(
|
|
response := handler.Callback(
|
|
|
- this.log,
|
|
|
|
|
&HTTPServerRequest{
|
|
&HTTPServerRequest{
|
|
|
Headers: requestHeaders,
|
|
Headers: requestHeaders,
|
|
|
Data: handler.Data,
|
|
Data: handler.Data,
|