move request_builder into internal pkg (#304) (#329)

* move request_builder into internal pkg (#304)

* add some test for internal.RequestBuilder

* add a test for openai.GetEngine
This commit is contained in:
渡邉祐一 / Yuichi Watanabe
2023-05-31 17:01:42 +09:00
committed by GitHub
parent 62eb4beed2
commit 61ba5f3369
16 changed files with 273 additions and 208 deletions

View File

@@ -0,0 +1,40 @@
package openai
import (
"bytes"
"context"
"net/http"
)
type RequestBuilder interface {
Build(ctx context.Context, method, url string, request any) (*http.Request, error)
}
type HTTPRequestBuilder struct {
marshaller Marshaller
}
func NewRequestBuilder() *HTTPRequestBuilder {
return &HTTPRequestBuilder{
marshaller: &JSONMarshaller{},
}
}
func (b *HTTPRequestBuilder) Build(ctx context.Context, method, url string, request any) (*http.Request, error) {
if request == nil {
return http.NewRequestWithContext(ctx, method, url, nil)
}
var reqBytes []byte
reqBytes, err := b.marshaller.Marshal(request)
if err != nil {
return nil, err
}
return http.NewRequestWithContext(
ctx,
method,
url,
bytes.NewBuffer(reqBytes),
)
}