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, &registration)
    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  }