github.com/akamai/AkamaiOPEN-edgegrid-golang/v8@v8.1.0/pkg/papi/ruleformats.go (about) 1 package papi 2 3 import ( 4 "context" 5 "errors" 6 "fmt" 7 "net/http" 8 ) 9 10 type ( 11 // RuleFormats contains operations available on RuleFormat resource 12 RuleFormats interface { 13 // GetRuleFormats provides a list of rule formats 14 // 15 // See: https://techdocs.akamai.com/property-mgr/reference/get-rule-formats 16 GetRuleFormats(context.Context) (*GetRuleFormatsResponse, error) 17 } 18 19 // GetRuleFormatsResponse contains the response body of GET /rule-formats request 20 GetRuleFormatsResponse struct { 21 RuleFormats RuleFormatItems `json:"ruleFormats"` 22 } 23 24 // RuleFormatItems contains a list of rule formats 25 RuleFormatItems struct { 26 Items []string `json:"items"` 27 } 28 ) 29 30 var ( 31 // ErrGetRuleFormats represents error when fetching rule formats fails 32 ErrGetRuleFormats = errors.New("fetching rule formats") 33 ) 34 35 func (p *papi) GetRuleFormats(ctx context.Context) (*GetRuleFormatsResponse, error) { 36 var ruleFormats GetRuleFormatsResponse 37 38 logger := p.Log(ctx) 39 logger.Debug("GetRuleFormats") 40 41 req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/papi/v1/rule-formats", nil) 42 if err != nil { 43 return nil, fmt.Errorf("%w: failed to create request: %s", ErrGetRuleFormats, err) 44 } 45 46 resp, err := p.Exec(req, &ruleFormats) 47 if err != nil { 48 return nil, fmt.Errorf("%w: request failed: %s", ErrGetRuleFormats, err) 49 } 50 51 if resp.StatusCode != http.StatusOK { 52 return nil, fmt.Errorf("%s: %w", ErrGetRuleFormats, p.Error(resp)) 53 } 54 55 return &ruleFormats, nil 56 }