59 lines
1.1 KiB
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),
|
|
}
|
|
}
|