bitbucket.org/Aishee/synsec@v0.0.0-20210414005726-236fc01a153d/pkg/apiclient/decisions_service.go (about)

     1  package apiclient
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"bitbucket.org/Aishee/synsec/pkg/models"
     8  	qs "github.com/google/go-querystring/query"
     9  )
    10  
    11  type DecisionsService service
    12  
    13  type DecisionsListOpts struct {
    14  	ScopeEquals *string `url:"scope,omitempty"`
    15  	ValueEquals *string `url:"value,omitempty"`
    16  	TypeEquals  *string `url:"type,omitempty"`
    17  	IPEquals    *string `url:"ip,omitempty"`
    18  	RangeEquals *string `url:"range,omitempty"`
    19  	Contains    *bool   `url:"contains,omitempty"`
    20  
    21  	ListOpts
    22  }
    23  
    24  type DecisionsDeleteOpts struct {
    25  	ScopeEquals *string `url:"scope,omitempty"`
    26  	ValueEquals *string `url:"value,omitempty"`
    27  	TypeEquals  *string `url:"type,omitempty"`
    28  	IPEquals    *string `url:"ip,omitempty"`
    29  	RangeEquals *string `url:"range,omitempty"`
    30  	Contains    *bool   `url:"contains,omitempty"`
    31  	ListOpts
    32  }
    33  
    34  //to demo query arguments
    35  func (s *DecisionsService) List(ctx context.Context, opts DecisionsListOpts) (*models.GetDecisionsResponse, *Response, error) {
    36  	var decisions models.GetDecisionsResponse
    37  	params, err := qs.Values(opts)
    38  	if err != nil {
    39  		return nil, nil, err
    40  	}
    41  	u := fmt.Sprintf("%s/decisions?%s", s.client.URLPrefix, params.Encode())
    42  
    43  	req, err := s.client.NewRequest("GET", u, nil)
    44  	if err != nil {
    45  		return nil, nil, err
    46  	}
    47  
    48  	resp, err := s.client.Do(ctx, req, &decisions)
    49  	if err != nil {
    50  		return nil, resp, err
    51  	}
    52  	return &decisions, resp, nil
    53  }
    54  
    55  func (s *DecisionsService) GetStream(ctx context.Context, startup bool) (*models.DecisionsStreamResponse, *Response, error) {
    56  	var decisions models.DecisionsStreamResponse
    57  
    58  	u := fmt.Sprintf("%s/decisions/stream?startup=%t", s.client.URLPrefix, startup)
    59  	req, err := s.client.NewRequest("GET", u, nil)
    60  	if err != nil {
    61  		return nil, nil, err
    62  	}
    63  
    64  	resp, err := s.client.Do(ctx, req, &decisions)
    65  	if err != nil {
    66  		return nil, resp, err
    67  	}
    68  
    69  	return &decisions, resp, nil
    70  }
    71  
    72  func (s *DecisionsService) StopStream(ctx context.Context) (*Response, error) {
    73  
    74  	u := fmt.Sprintf("%s/decisions", s.client.URLPrefix)
    75  	req, err := s.client.NewRequest("DELETE", u, nil)
    76  	if err != nil {
    77  		return nil, err
    78  	}
    79  
    80  	resp, err := s.client.Do(ctx, req, nil)
    81  	if err != nil {
    82  		return resp, err
    83  	}
    84  	return resp, nil
    85  }
    86  
    87  func (s *DecisionsService) Delete(ctx context.Context, opts DecisionsDeleteOpts) (*models.DeleteDecisionResponse, *Response, error) {
    88  	var deleteDecisionResponse models.DeleteDecisionResponse
    89  	params, err := qs.Values(opts)
    90  	if err != nil {
    91  		return nil, nil, err
    92  	}
    93  	u := fmt.Sprintf("%s/decisions?%s", s.client.URLPrefix, params.Encode())
    94  
    95  	req, err := s.client.NewRequest("DELETE", u, nil)
    96  	if err != nil {
    97  		return nil, nil, err
    98  	}
    99  
   100  	resp, err := s.client.Do(ctx, req, &deleteDecisionResponse)
   101  	if err != nil {
   102  		return nil, resp, err
   103  	}
   104  	return &deleteDecisionResponse, resp, nil
   105  }
   106  
   107  func (s *DecisionsService) DeleteOne(ctx context.Context, decision_id string) (*models.DeleteDecisionResponse, *Response, error) {
   108  	var deleteDecisionResponse models.DeleteDecisionResponse
   109  	u := fmt.Sprintf("%s/decisions/%s", s.client.URLPrefix, decision_id)
   110  
   111  	req, err := s.client.NewRequest("DELETE", u, nil)
   112  	if err != nil {
   113  		return nil, nil, err
   114  	}
   115  
   116  	resp, err := s.client.Do(ctx, req, &deleteDecisionResponse)
   117  	if err != nil {
   118  		return nil, resp, err
   119  	}
   120  	return &deleteDecisionResponse, resp, nil
   121  }