mirror of
				https://github.com/TeaOSLab/EdgeNode.git
				synced 2025-11-04 07:40:56 +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
 | 
						|
}
 |