fasthttp替换完成

This commit is contained in:
Liujian
2021-08-06 17:44:40 +08:00
parent 49c8886615
commit 4f9250c552
20 changed files with 1896 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
package http_context
import (
"io/ioutil"
"net/http"
"strconv"
"strings"
"github.com/valyala/fasthttp"
)
//ResponseReader 响应结构体
type ResponseReader struct {
*CookiesHandler
*Header
*BodyHandler
*StatusHandler
}
func newResponseReader(response *http.Response) *ResponseReader {
if response == nil {
return nil
}
r := new(ResponseReader)
r.Header = NewHeader(response.Header)
r.CookiesHandler = newCookieHandle(response.Header)
r.StatusHandler = NewStatusHandler()
r.SetStatus(response.StatusCode, response.Status)
// if response.ContentLength > 0 {
// body, _ := ioutil.ReadAll(response.body)
// r.BodyHandler = NewBodyHandler(body)
// } else {
// r.BodyHandler = NewBodyHandler(nil)
// }
body, _ := ioutil.ReadAll(response.Body)
r.BodyHandler = NewBodyHandler(body)
return r
}
//NewResponseReader 新增ResponseReader
func NewResponseReader(header *fasthttp.ResponseHeader, statusCode int, body []byte) *ResponseReader {
r := new(ResponseReader)
tmpHeader := http.Header{}
hs := strings.Split(string(header.Header()), "\r\n")
for i, h := range hs {
if i == 0 {
continue
}
values := strings.Split(h, ":")
vLen := len(values)
if vLen < 2 {
if values[0] != "" {
tmpHeader.Set(values[0], "")
}
} else {
tmpHeader.Set(values[0], values[1])
}
}
r.Header = &Header{header: tmpHeader}
r.StatusHandler = NewStatusHandler()
r.SetStatus(statusCode, strconv.Itoa(statusCode))
r.BodyHandler = NewBodyHandler(body)
return r
}