MCPcopy
hub / github.com/QuantumNous/new-api / DoFormRequest

Function DoFormRequest

relay/channel/api_request.go:337–367  ·  view source on GitHub ↗
(a Adaptor, c *gin.Context, info *common.RelayInfo, requestBody io.Reader)

Source from the content-addressed store, hash-verified

335}
336
337func DoFormRequest(a Adaptor, c *gin.Context, info *common.RelayInfo, requestBody io.Reader) (*http.Response, error) {
338 fullRequestURL, err := a.GetRequestURL(info)
339 if err != nil {
340 return nil, fmt.Errorf("get request url failed: %w", err)
341 }
342 logger.LogDebug(c, "fullRequestURL: %s", fullRequestURL)
343 req, err := http.NewRequest(c.Request.Method, fullRequestURL, requestBody)
344 if err != nil {
345 return nil, fmt.Errorf("new request failed: %w", err)
346 }
347 applyUpstreamContentLength(req, info)
348 // set form data
349 req.Header.Set("Content-Type", c.Request.Header.Get("Content-Type"))
350 headers := req.Header
351 err = a.SetupRequestHeader(c, &headers, info)
352 if err != nil {
353 return nil, fmt.Errorf("setup request header failed: %w", err)
354 }
355 // 在 SetupRequestHeader 之后应用 Header Override,确保用户设置优先级最高
356 // 这样可以覆盖默认的 Authorization header 设置
357 headerOverride, err := processHeaderOverride(info, c)
358 if err != nil {
359 return nil, err
360 }
361 applyHeaderOverrideToRequest(req, headerOverride)
362 resp, err := doRequest(c, req, info)
363 if err != nil {
364 return nil, fmt.Errorf("do request failed: %w", err)
365 }
366 return resp, nil
367}
368
369func DoWssRequest(a Adaptor, c *gin.Context, info *common.RelayInfo, requestBody io.Reader) (*websocket.Conn, error) {
370 fullRequestURL, err := a.GetRequestURL(info)

Callers 2

DoRequestMethod · 0.92
DoRequestMethod · 0.92

Calls 9

LogDebugFunction · 0.92
processHeaderOverrideFunction · 0.85
SetMethod · 0.80
doRequestFunction · 0.70
GetRequestURLMethod · 0.65
SetupRequestHeaderMethod · 0.65
GetMethod · 0.45

Tested by

no test coverage detected