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 }