AnP/Go/Models/RequestModel.go

59 lines
1.1 KiB
Go

package Models
import (
"AnP/Utils"
"net/http"
"strconv"
"strings"
)
type RequestModel struct {
Domain string
Method string
URL string
Port int
}
func NewRequestModel(request *http.Request) RequestModel {
DebugPrint(strings.ToLower(request.Method) + ":" + request.Host + request.RequestURI)
var host []string = strings.Split(request.Host, ":")
var port int64 = 80
if len(host) > 1 {
var error error
port, error = strconv.ParseInt(host[1], 10, 32)
if error != nil {
port = 80
}
}
return RequestModel{
Domain: host[0],
Method: strings.ToLower(request.Method),
URL: request.RequestURI,
Port: int(port),
}
}
func (_self RequestModel) ToJSON(header string) string {
return Utils.JSONEncode(map[string]any{
header + "domain": _self.Domain,
header + "method": _self.Method,
header + "url": _self.URL,
header + "port": _self.Port,
})
}
func (_self RequestModel) ToJSONItem(header string) map[string]string {
return map[string]string{
header + "domain": _self.Domain,
header + "method": _self.Method,
header + "url": _self.URL,
header + "port": strconv.FormatInt(int64(_self.Port), 10),
}
}