package service import ( "bytes" "city_chips/internal/model" "city_chips/internal/repository" "encoding/json" "fmt" "io" "net/http" ) type AccessControlService interface { GetAccessControl(id int64) (*model.AccessControl, error) SendRequest(client HTTPClient, method, url string, body interface{}) ([]byte, error) } func NewAccessControlService(service *Service, accessControlRepository repository.AccessControlRepository) AccessControlService { return &accessControlService{ Service: service, accessControlRepository: accessControlRepository, } } type accessControlService struct { *Service accessControlRepository repository.AccessControlRepository } func (s *accessControlService) SendRequest(client HTTPClient, method, url string, body interface{}) ([]byte, error) { var requestBody io.Reader if body != nil { jsonBytes, err := json.Marshal(body) if err != nil { return nil, err } requestBody = bytes.NewBuffer(jsonBytes) } req, err := http.NewRequest(method, url, requestBody) if err != nil { return nil, err } resp, err := client.Do(req) if err != nil { return nil, err } defer resp.Body.Close() responseBody, err := io.ReadAll(resp.Body) if err != nil { return nil, err } if resp.StatusCode >= 400 { return nil, fmt.Errorf("bad status: %s", resp.Status) } return responseBody, nil } func (s *accessControlService) GetAccessControl(id int64) (*model.AccessControl, error) { return s.accessControlRepository.GetAccessControl(id) }