fix: Refactor relay/channel, upgrade deps, improve request handling and error messages.

* Updated relay/channel/gemini package to use gin-gonic/gin for routing
* Added timeouts, environment variable for proxy, and error handling for HTTP clients in relay/util/init.go
* Improved error handling, URL path cases, and channel selection logic in middleware/distributor.go
* Added Content-Type header, closed request bodies, and added context to requests in relay/channel/common.go
* Upgraded various dependencies in go.mod
* Modified the GetRequestURL method in relay/channel/gemini/adaptor.go to include a "key" parameter in the URL and set a default version of "v1beta"
* Added io and net/http packages in relay/channel/gemini/adaptor.go and relay/channel/gemini/main.go
* Added a struct for GeminiStreamResp and modified response handling in relay/channel/gemini/main.go
* Imported packages for io and net/http added, gin-gonic/gin package added, and error handling improved in relay/channel/gemini/main.go
This commit is contained in:
Laisky.Cai
2024-03-19 03:11:19 +00:00
parent d379377eca
commit ddd2dd1041
8 changed files with 371 additions and 184 deletions

View File

@@ -22,10 +22,15 @@ func DoRequestHelper(a Adaptor, c *gin.Context, meta *util.RelayMeta, requestBod
if err != nil {
return nil, errors.Wrap(err, "get request url failed")
}
req, err := http.NewRequest(c.Request.Method, fullRequestURL, requestBody)
req, err := http.NewRequestWithContext(c.Request.Context(),
c.Request.Method, fullRequestURL, requestBody)
if err != nil {
return nil, errors.Wrap(err, "new request failed")
}
req.Header.Add("Content-Type", "application/json")
err = a.SetupRequestHeader(c, req, meta)
if err != nil {
return nil, errors.Wrap(err, "setup request header failed")
@@ -47,5 +52,6 @@ func DoRequest(c *gin.Context, req *http.Request) (*http.Response, error) {
}
_ = req.Body.Close()
_ = c.Request.Body.Close()
return resp, nil
}