gatewaygroup.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package service
  2. import (
  3. "context"
  4. "fmt"
  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"
  8. "github.com/spf13/cast"
  9. )
  10. type GatewayGroupService interface {
  11. GetGatewayGroup(ctx context.Context, id int64) (*model.GatewayGroup, error)
  12. AddGatewayGroup(ctx context.Context, req v1.AddGateWayGroupRequest) (int, error)
  13. }
  14. func NewGatewayGroupService(
  15. service *Service,
  16. gatewayGroupRepository repository.GatewayGroupRepository,
  17. required RequiredService,
  18. parser ParserService,
  19. ) GatewayGroupService {
  20. return &gatewayGroupService{
  21. Service: service,
  22. gatewayGroupRepository: gatewayGroupRepository,
  23. required: required,
  24. parser: parser,
  25. }
  26. }
  27. type gatewayGroupService struct {
  28. *Service
  29. gatewayGroupRepository repository.GatewayGroupRepository
  30. required RequiredService
  31. parser ParserService
  32. }
  33. func (s *gatewayGroupService) GetGatewayGroup(ctx context.Context, id int64) (*model.GatewayGroup, error) {
  34. return s.gatewayGroupRepository.GetGatewayGroup(ctx, id)
  35. }
  36. func (s *gatewayGroupService) AddGatewayGroup(ctx context.Context, req v1.AddGateWayGroupRequest) (int, error) {
  37. formData := map[string]interface{}{
  38. "name": req.Name,
  39. "comment": req.Comment,
  40. }
  41. respBody, err := s.required.SendForm(ctx, "admin/info/waf_gateway_group/new", "admin/new/waf_gateway_group", formData)
  42. if err != nil {
  43. return 0, err
  44. }
  45. gateWayGroupIdBase, err := s.parser.GetRuleIdByColumnName(ctx, respBody, req.Name)
  46. if err != nil {
  47. return 0, err
  48. }
  49. if gateWayGroupIdBase == "" {
  50. res, err := s.parser.ParseAlert(string(respBody))
  51. if err != nil {
  52. return 0, err
  53. }
  54. return 0, fmt.Errorf(res)
  55. }
  56. gateWayGroupId, err := cast.ToIntE(gateWayGroupIdBase)
  57. if err != nil {
  58. return 0, err
  59. }
  60. return gateWayGroupId, nil
  61. }