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  }