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 }