github.com/crowdsecurity/crowdsec@v1.6.1/pkg/apiclient/auth_service.go (about) 1 package apiclient 2 3 import ( 4 "context" 5 "fmt" 6 "net/http" 7 8 "github.com/crowdsecurity/crowdsec/pkg/models" 9 ) 10 11 // type ApiAlerts service 12 13 type AuthService service 14 15 // Don't add it to the models, as they are used with LAPI, but the enroll endpoint is specific to CAPI 16 type enrollRequest struct { 17 EnrollKey string `json:"attachment_key"` 18 Name string `json:"name"` 19 Tags []string `json:"tags"` 20 Overwrite bool `json:"overwrite"` 21 } 22 23 func (s *AuthService) UnregisterWatcher(ctx context.Context) (*Response, error) { 24 u := fmt.Sprintf("%s/watchers", s.client.URLPrefix) 25 26 req, err := s.client.NewRequest(http.MethodDelete, u, nil) 27 if err != nil { 28 return nil, err 29 } 30 31 resp, err := s.client.Do(ctx, req, nil) 32 if err != nil { 33 return resp, err 34 } 35 36 return resp, nil 37 } 38 39 func (s *AuthService) RegisterWatcher(ctx context.Context, registration models.WatcherRegistrationRequest) (*Response, error) { 40 u := fmt.Sprintf("%s/watchers", s.client.URLPrefix) 41 42 req, err := s.client.NewRequest(http.MethodPost, u, ®istration) 43 if err != nil { 44 return nil, err 45 } 46 47 resp, err := s.client.Do(ctx, req, nil) 48 if err != nil { 49 return resp, err 50 } 51 52 return resp, nil 53 } 54 55 func (s *AuthService) AuthenticateWatcher(ctx context.Context, auth models.WatcherAuthRequest) (models.WatcherAuthResponse, *Response, error) { 56 var authResp models.WatcherAuthResponse 57 58 u := fmt.Sprintf("%s/watchers/login", s.client.URLPrefix) 59 60 req, err := s.client.NewRequest(http.MethodPost, u, &auth) 61 if err != nil { 62 return authResp, nil, err 63 } 64 65 resp, err := s.client.Do(ctx, req, &authResp) 66 if err != nil { 67 return authResp, resp, err 68 } 69 70 return authResp, resp, nil 71 } 72 73 func (s *AuthService) EnrollWatcher(ctx context.Context, enrollKey string, name string, tags []string, overwrite bool) (*Response, error) { 74 u := fmt.Sprintf("%s/watchers/enroll", s.client.URLPrefix) 75 76 req, err := s.client.NewRequest(http.MethodPost, u, &enrollRequest{EnrollKey: enrollKey, Name: name, Tags: tags, Overwrite: overwrite}) 77 if err != nil { 78 return nil, err 79 } 80 81 resp, err := s.client.Do(ctx, req, nil) 82 if err != nil { 83 return resp, err 84 } 85 86 return resp, nil 87 }