relay-image.go 903 B

12345678910111213141516171819202122232425262728293031323334
  1. package controller
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "io"
  5. "net/http"
  6. )
  7. func relayImageHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode {
  8. // TODO: this part is not finished
  9. req, err := http.NewRequest(c.Request.Method, c.Request.RequestURI, c.Request.Body)
  10. client := &http.Client{}
  11. resp, err := client.Do(req)
  12. if err != nil {
  13. return errorWrapper(err, "do_request_failed", http.StatusOK)
  14. }
  15. err = req.Body.Close()
  16. if err != nil {
  17. return errorWrapper(err, "close_request_body_failed", http.StatusOK)
  18. }
  19. for k, v := range resp.Header {
  20. c.Writer.Header().Set(k, v[0])
  21. }
  22. c.Writer.WriteHeader(resp.StatusCode)
  23. _, err = io.Copy(c.Writer, resp.Body)
  24. if err != nil {
  25. return errorWrapper(err, "copy_response_body_failed", http.StatusOK)
  26. }
  27. err = resp.Body.Close()
  28. if err != nil {
  29. return errorWrapper(err, "close_response_body_failed", http.StatusOK)
  30. }
  31. return nil
  32. }