github.com/akamai/AkamaiOPEN-edgegrid-golang/v2@v2.17.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  	// See: https://developer.akamai.com/api/core_features/property_manager/v1.html#clientsettingsgroup
    13  	ClientSettings interface {
    14  		// GetClientSettings returns client's settings.
    15  		// See: https://developer.akamai.com/api/core_features/property_manager/v1.html#getclientsettings
    16  		GetClientSettings(context.Context) (*ClientSettingsBody, error)
    17  		// UpdateClientSettings updates client's settings.
    18  		// See: https://developer.akamai.com/api/core_features/property_manager/v1.html#putclientsettings
    19  		UpdateClientSettings(context.Context, ClientSettingsBody) (*ClientSettingsBody, error)
    20  	}
    21  
    22  	// ClientSettingsBody represents both the request and response bodies for operating on client settings resource
    23  	ClientSettingsBody struct {
    24  		RuleFormat  string `json:"ruleFormat"`
    25  		UsePrefixes bool   `json:"usePrefixes"`
    26  	}
    27  )
    28  
    29  var (
    30  	// ErrGetClientSettings represents error when fetching client setting fails
    31  	ErrGetClientSettings = errors.New("fetching client settings")
    32  	// ErrUpdateClientSettings represents error when updating client setting fails
    33  	ErrUpdateClientSettings = errors.New("updating client settings")
    34  )
    35  
    36  // GetClientSettings is used to list the client settings
    37  func (p *papi) GetClientSettings(ctx context.Context) (*ClientSettingsBody, error) {
    38  	logger := p.Log(ctx)
    39  	logger.Debug("GetClientSettings")
    40  
    41  	getURL := "/papi/v1/client-settings"
    42  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, getURL, nil)
    43  	if err != nil {
    44  		return nil, fmt.Errorf("%w: failed to create request: %s", ErrGetClientSettings, err)
    45  	}
    46  
    47  	var clientSettings ClientSettingsBody
    48  	resp, err := p.Exec(req, &clientSettings)
    49  	if err != nil {
    50  		return nil, fmt.Errorf("%w: request failed: %s", ErrGetClientSettings, err)
    51  	}
    52  
    53  	if resp.StatusCode != http.StatusOK {
    54  		return nil, fmt.Errorf("%s: %w", ErrGetClientSettings, p.Error(resp))
    55  	}
    56  
    57  	return &clientSettings, nil
    58  }
    59  
    60  // UpdateClientSettings is used to update the client settings
    61  // fixme body structure
    62  func (p *papi) UpdateClientSettings(ctx context.Context, params ClientSettingsBody) (*ClientSettingsBody, error) {
    63  	logger := p.Log(ctx)
    64  	logger.Debug("UpdateClientSettings")
    65  
    66  	putURL := "/papi/v1/client-settings"
    67  	req, err := http.NewRequestWithContext(ctx, http.MethodPut, putURL, nil)
    68  	if err != nil {
    69  		return nil, fmt.Errorf("%w: failed to create request: %s", ErrUpdateClientSettings, err)
    70  	}
    71  
    72  	var clientSettings ClientSettingsBody
    73  	resp, err := p.Exec(req, &clientSettings, params)
    74  	if err != nil {
    75  		return nil, fmt.Errorf("%w: request failed: %s", ErrUpdateClientSettings, err)
    76  	}
    77  
    78  	if resp.StatusCode != http.StatusOK {
    79  		return nil, fmt.Errorf("%s: %w", ErrGetClientSettings, p.Error(resp))
    80  	}
    81  
    82  	return &clientSettings, nil
    83  }