proxy.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package flexCdn
  2. import (
  3. "context"
  4. "encoding/json"
  5. v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
  6. "github.com/go-nunu/nunu-layout-advanced/internal/model"
  7. "github.com/go-nunu/nunu-layout-advanced/internal/repository/api/flexCdn"
  8. "github.com/go-nunu/nunu-layout-advanced/internal/service"
  9. )
  10. type ProxyService interface {
  11. GetProxyId (ctx context.Context, cdnWebId int64) (int64, error)
  12. GetProxy (ctx context.Context, id int64) (*model.Proxy, error)
  13. GetProxyData (ctx context.Context, cdnWebId int64) (*model.Proxy, error)
  14. EditProxy (ctx context.Context, cdnWebId int64, req v1.ProxyProtocolJSON) error
  15. }
  16. func NewProxyService(
  17. service *service.Service,
  18. proxyRep flexCdn.ProxyRepository,
  19. cdn CdnService,
  20. ) ProxyService {
  21. return &proxyService{
  22. Service: service,
  23. proxyRep: proxyRep,
  24. cdn: cdn,
  25. }
  26. }
  27. type proxyService struct {
  28. *service.Service
  29. proxyRep flexCdn.ProxyRepository
  30. cdn CdnService
  31. }
  32. func (s *proxyService) GetProxyId (ctx context.Context, cdnWebId int64) (int64, error) {
  33. id, err := s.proxyRep.GetProxyId(ctx, cdnWebId)
  34. if err != nil {
  35. return 0, err
  36. }
  37. return id, nil
  38. }
  39. func (s *proxyService) GetProxy (ctx context.Context, id int64) (*model.Proxy, error) {
  40. res, err := s.proxyRep.GetProxy(ctx, id)
  41. if err != nil {
  42. return nil, err
  43. }
  44. return res, nil
  45. }
  46. func (s *proxyService) GetProxyData (ctx context.Context, cdnWebId int64) (*model.Proxy, error) {
  47. id,err := s.proxyRep.GetProxyId(ctx, cdnWebId)
  48. if err != nil {
  49. return nil, err
  50. }
  51. data, err := s.proxyRep.GetProxy(ctx, id)
  52. if err != nil {
  53. return nil, err
  54. }
  55. return data, nil
  56. }
  57. func (r *proxyService) EditProxy(ctx context.Context,cdnWebId int64, req v1.ProxyProtocolJSON) error {
  58. proxyData, err := r.GetProxyData(ctx, cdnWebId)
  59. if err != nil {
  60. return err
  61. }
  62. var reqJson []byte
  63. reqJson, err = json.Marshal(req)
  64. if err != nil {
  65. return err
  66. }
  67. var addHeaders []string
  68. err = json.Unmarshal([]byte(proxyData.AddHeaders), &addHeaders)
  69. if err != nil {
  70. return err
  71. }
  72. if err := r.cdn.EditProxy(ctx, v1.Proxy{
  73. AddHeaders: addHeaders,
  74. ReverseProxyId: proxyData.Id,
  75. RequestHostType: proxyData.RequestHostType,
  76. RequestHost: proxyData.RequestHost,
  77. RequestHostExcludingPort: proxyData.RequestHostExcludingPort,
  78. RequestURI: proxyData.RequestURI,
  79. StripPrefix: proxyData.StripPrefix,
  80. AutoFlush: proxyData.AutoFlush,
  81. ProxyProtocolJSON: reqJson,
  82. FollowRedirects: proxyData.FollowRedirects,
  83. Retry50X: proxyData.Retry50X,
  84. Retry40X: proxyData.Retry40X,
  85. }); err != nil {
  86. return err
  87. }
  88. return nil
  89. }