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 }