context修改

This commit is contained in:
Liujian
2021-11-11 20:23:52 +08:00
parent b296406448
commit c223628ef9
17 changed files with 625 additions and 373 deletions

115
node/http-context/proxy.go Normal file
View File

@@ -0,0 +1,115 @@
package http_context
import (
"net/http"
"net/url"
http_service "github.com/eolinker/eosc/http-service"
)
var _ http_service.IRequest = (*ProxyRequest)(nil)
type ProxyRequest struct {
*RequestReader
headers http.Header
form url.Values
file map[string]*http_service.FileHeader
contentType string
body []byte
uri *url.URL
method string
}
func NewProxyRequest(requestReader *RequestReader) *ProxyRequest {
return &ProxyRequest{RequestReader: requestReader}
}
func (r *ProxyRequest) SetHeader(key, value string) {
if r.headers == nil {
r.headers = r.Headers()
}
r.headers.Set(key, value)
}
func (r *ProxyRequest) AddHeader(key, value string) {
if r.headers == nil {
r.headers = r.Headers()
}
r.headers.Add(key, value)
}
func (r *ProxyRequest) DelHeader(key string) {
if r.headers == nil {
r.headers = r.Headers()
}
r.headers.Del(key)
}
func (r *ProxyRequest) SetForm(values url.Values) error {
r.form = values
return nil
}
func (r *ProxyRequest) SetToForm(key, value string) error {
if r.form == nil {
form, err := r.BodyForm()
if err != nil {
return err
}
r.form = form
}
r.form.Set(key, value)
return nil
}
func (r *ProxyRequest) AddForm(key, value string) error {
if r.form == nil {
form, err := r.BodyForm()
if err != nil {
return err
}
r.form = form
}
r.form.Set(key, value)
return nil
}
func (r *ProxyRequest) AddFile(key string, file *http_service.FileHeader) error {
if r.form == nil {
file, err := r.Files()
if err != nil {
return err
}
r.file = file
}
r.file[key] = file
return nil
}
func (r *ProxyRequest) SetRaw(contentType string, body []byte) {
r.contentType, r.body = contentType, body
}
func (r *ProxyRequest) TargetServer() string {
if r.uri == nil {
uri := r.URL()
r.uri = &uri
}
return r.uri.Host
}
func (r *ProxyRequest) TargetURL() string {
if r.uri == nil {
uri := r.URL()
r.uri = &uri
}
return r.uri.Path
}
func (r *ProxyRequest) SetMethod(s string) {
r.method = s
}
func (r *ProxyRequest) SetURL(url url.URL) {
r.uri = &url
}