🔖 chore: add chat image request proxy address

This commit is contained in:
MartialBE
2024-05-29 04:01:28 +08:00
parent 3d8a51e139
commit b5a4283b28
11 changed files with 76 additions and 53 deletions

View File

@@ -20,7 +20,7 @@ import (
type HttpErrorHandler func(*http.Response) *types.OpenAIError
type HTTPRequester struct {
requestBuilder RequestBuilder
// requestBuilder utils.RequestBuilder
CreateFormBuilder func(io.Writer) FormBuilder
ErrorHandler HttpErrorHandler
proxyAddr string
@@ -34,7 +34,6 @@ type HTTPRequester struct {
// 如果 errorHandler 为 nil那么会使用一个默认的错误处理函数。
func NewHTTPRequester(proxyAddr string, errorHandler HttpErrorHandler) *HTTPRequester {
return &HTTPRequester{
requestBuilder: NewRequestBuilder(),
CreateFormBuilder: func(body io.Writer) FormBuilder {
return NewFormBuilder(body)
},
@@ -53,7 +52,7 @@ type requestOptions struct {
type requestOption func(*requestOptions)
func (r *HTTPRequester) setProxy() context.Context {
return utils.SetProxy(r.Context, r.proxyAddr)
return utils.SetProxy(r.proxyAddr, r.Context)
}
// 创建请求
@@ -65,7 +64,7 @@ func (r *HTTPRequester) NewRequest(method, url string, setters ...requestOption)
for _, setter := range setters {
setter(args)
}
req, err := r.requestBuilder.Build(r.setProxy(), method, url, args.body, args.header)
req, err := utils.RequestBuilder(r.setProxy(), method, url, args.body, args.header)
if err != nil {
return nil, err
}

View File

@@ -1,15 +0,0 @@
package requester
import (
"encoding/json"
)
type Marshaller interface {
Marshal(value any) ([]byte, error)
}
type JSONMarshaller struct{}
func (jm *JSONMarshaller) Marshal(value any) ([]byte, error) {
return json.Marshal(value)
}

View File

@@ -1,52 +0,0 @@
package requester
import (
"bytes"
"context"
"io"
"net/http"
)
type RequestBuilder interface {
Build(ctx context.Context, method, url string, body any, header http.Header) (*http.Request, error)
}
type HTTPRequestBuilder struct {
marshaller Marshaller
}
func NewRequestBuilder() *HTTPRequestBuilder {
return &HTTPRequestBuilder{
marshaller: &JSONMarshaller{},
}
}
func (b *HTTPRequestBuilder) Build(
ctx context.Context,
method string,
url string,
body any,
header http.Header,
) (req *http.Request, err error) {
var bodyReader io.Reader
if body != nil {
if v, ok := body.(io.Reader); ok {
bodyReader = v
} else {
var reqBytes []byte
reqBytes, err = b.marshaller.Marshal(body)
if err != nil {
return
}
bodyReader = bytes.NewBuffer(reqBytes)
}
}
req, err = http.NewRequestWithContext(ctx, method, url, bodyReader)
if err != nil {
return
}
if header != nil {
req.Header = header
}
return
}