mirror of
https://github.com/eolinker/apinto
synced 2025-10-05 16:57:03 +08:00
context修改
This commit is contained in:
115
node/http-context/proxy.go
Normal file
115
node/http-context/proxy.go
Normal 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
|
||||
}
|
Reference in New Issue
Block a user