handle.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package controller
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/labring/aiproxy/core/common"
  5. "github.com/labring/aiproxy/core/common/config"
  6. "github.com/labring/aiproxy/core/model"
  7. "github.com/labring/aiproxy/core/relay/adaptor"
  8. "github.com/labring/aiproxy/core/relay/meta"
  9. )
  10. // HandleResult contains all the information needed for consumption recording
  11. type HandleResult struct {
  12. Error adaptor.Error
  13. Usage model.Usage
  14. Detail *RequestDetail
  15. }
  16. func Handle(
  17. adaptor adaptor.Adaptor,
  18. c *gin.Context,
  19. meta *meta.Meta,
  20. store adaptor.Store,
  21. ) *HandleResult {
  22. log := common.GetLogger(c)
  23. usage, detail, respErr := DoHelper(adaptor, c, meta, store)
  24. if respErr != nil {
  25. var logDetail *RequestDetail
  26. if detail != nil && config.DebugEnabled {
  27. logDetail = detail
  28. log.Errorf(
  29. "handle failed: %+v\nrequest detail:\n%s\nresponse detail:\n%s",
  30. respErr,
  31. logDetail.RequestBody,
  32. logDetail.ResponseBody,
  33. )
  34. } else {
  35. log.Errorf("handle failed: %+v", respErr)
  36. }
  37. return &HandleResult{
  38. Error: respErr,
  39. Usage: usage,
  40. Detail: detail,
  41. }
  42. }
  43. return &HandleResult{
  44. Usage: usage,
  45. Detail: detail,
  46. }
  47. }