mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-05 01:20:26 +08:00
83 lines
1.6 KiB
Go
83 lines
1.6 KiB
Go
|
|
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
||
|
|
|
||
|
|
package js
|
||
|
|
|
||
|
|
import (
|
||
|
|
"bytes"
|
||
|
|
"io/ioutil"
|
||
|
|
"net"
|
||
|
|
)
|
||
|
|
|
||
|
|
type Request struct {
|
||
|
|
r RequestInterface
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewRequest(r RequestInterface) *Request {
|
||
|
|
return &Request{
|
||
|
|
r: r,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (this *Request) Proto() string {
|
||
|
|
return this.r.JSRequest().Proto
|
||
|
|
}
|
||
|
|
|
||
|
|
func (this *Request) Method() string {
|
||
|
|
return this.r.JSRequest().Method
|
||
|
|
}
|
||
|
|
|
||
|
|
func (this *Request) Header() map[string][]string {
|
||
|
|
return this.r.JSRequest().Header
|
||
|
|
}
|
||
|
|
|
||
|
|
func (this *Request) AddHeader(name string, value string) {
|
||
|
|
this.r.JSRequest().Header[name] = append(this.r.JSRequest().Header[name], value)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (this *Request) SetHeader(name string, value string) {
|
||
|
|
this.r.JSRequest().Header[name] = []string{value}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (this *Request) RemoteAddr() string {
|
||
|
|
var remoteAddr = this.r.JSRequest().RemoteAddr
|
||
|
|
host, _, err := net.SplitHostPort(remoteAddr)
|
||
|
|
if err == nil {
|
||
|
|
return host
|
||
|
|
}
|
||
|
|
return remoteAddr
|
||
|
|
}
|
||
|
|
|
||
|
|
func (this *Request) Url() *URL {
|
||
|
|
return NewURL(this.r.JSRequest().URL)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (this *Request) ContentLength() int64 {
|
||
|
|
return this.r.JSRequest().ContentLength
|
||
|
|
}
|
||
|
|
|
||
|
|
func (this *Request) Body() []byte {
|
||
|
|
var bodyReader = this.r.JSRequest().Body
|
||
|
|
if bodyReader == nil {
|
||
|
|
return []byte{}
|
||
|
|
}
|
||
|
|
data, err := ioutil.ReadAll(bodyReader)
|
||
|
|
if err != nil {
|
||
|
|
this.r.JSLog("read body failed: " + err.Error())
|
||
|
|
}
|
||
|
|
return data
|
||
|
|
}
|
||
|
|
|
||
|
|
func (this *Request) CopyBody() []byte {
|
||
|
|
var bodyReader = this.r.JSRequest().Body
|
||
|
|
if bodyReader == nil {
|
||
|
|
return []byte{}
|
||
|
|
}
|
||
|
|
|
||
|
|
data, err := ioutil.ReadAll(bodyReader)
|
||
|
|
if err != nil {
|
||
|
|
this.r.JSLog("read body failed: " + err.Error())
|
||
|
|
}
|
||
|
|
this.r.JSRequest().Body = ioutil.NopCloser(bytes.NewReader(data))
|
||
|
|
return data
|
||
|
|
}
|