github.com/akamai/AkamaiOPEN-edgegrid-golang/v8@v8.1.0/pkg/papi/clientsettings.go (about)

     1  package papi
     2  
     3  import (
     4  	"context"
     5  	"errors"
     6  	"fmt"
     7  	"net/http"
     8  )
     9  
    10  type (
    11  	// ClientSettings contains operations available on ClientSettings resource
    12  	ClientSettings interface {
    13  		// GetClientSettings returns client's settings.
    14  		//
    15  		// See: https://techdocs.akamai.com/property-mgr/reference/get-client-settings
    16  		GetClientSettings(context.Context) (*ClientSettingsBody, error)
    17  
    18  		// UpdateClientSettings updates client's settings.
    19  		//
    20  		// See: https://techdocs.akamai.com/property-mgr/reference/put-client-settings
    21  		UpdateClientSettings(context.Context, ClientSettingsBody) (*ClientSettingsBody, error)
    22  	}
    23  
    24  	// ClientSettingsBody represents both the request and response bodies for operating on client settings resource
    25  	ClientSettingsBody struct {
    26  		RuleFormat  string `json:"ruleFormat"`
    27  		UsePrefixes bool   `json:"usePrefixes"`
    28  	}
    29  )
    30  
    31  var (
    32  	// ErrGetClientSettings represents error when fetching client setting fails
    33  	ErrGetClientSettings = errors.New("fetching client settings")
    34  	// ErrUpdateClientSettings represents error when updating client setting fails
    35  	ErrUpdateClientSettings = errors.New("updating client settings")
    36  )
    37  
    38  // GetClientSettings is used to list the client settings
    39  func (p *papi) GetClientSettings(ctx context.Context) (*ClientSettingsBody, error) {
    40  	logger := p.Log(ctx)
    41  	logger.Debug("GetClientSettings")
    42  
    43  	getURL := "/papi/v1/client-settings"
    44  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, getURL, nil)
    45  	if err != nil {
    46  		return nil, fmt.Errorf("%w: failed to create request: %s", ErrGetClientSettings, err)
    47  	}
    48  
    49  	var clientSettings ClientSettingsBody
    50  	resp, err := p.Exec(req, &clientSettings)
    51  	if err != nil {
    52  		return nil, fmt.Errorf("%w: request failed: %s", ErrGetClientSettings, err)
    53  	}
    54  
    55  	if resp.StatusCode != http.StatusOK {
    56  		return nil, fmt.Errorf("%s: %w", ErrGetClientSettings, p.Error(resp))
    57  	}
    58  
    59  	return &clientSettings, nil
    60  }
    61  
    62  // UpdateClientSettings is used to update the client settings
    63  // fixme body structure
    64  func (p *papi) UpdateClientSettings(ctx context.Context, params ClientSettingsBody) (*ClientSettingsBody, error) {
    65  	logger := p.Log(ctx)
    66  	logger.Debug("UpdateClientSettings")
    67  
    68  	putURL := "/papi/v1/client-settings"
    69  	req, err := http.NewRequestWithContext(ctx, http.MethodPut, putURL, nil)
    70  	if err != nil {
    71  		return nil, fmt.Errorf("%w: failed to create request: %s", ErrUpdateClientSettings, err)
    72  	}
    73  
    74  	var clientSettings ClientSettingsBody
    75  	resp, err := p.Exec(req, &clientSettings, params)
    76  	if err != nil {
    77  		return nil, fmt.Errorf("%w: request failed: %s", ErrUpdateClientSettings, err)
    78  	}
    79  
    80  	if resp.StatusCode != http.StatusOK {
    81  		return nil, fmt.Errorf("%s: %w", ErrGetClientSettings, p.Error(resp))
    82  	}
    83  
    84  	return &clientSettings, nil
    85  }