github.com/swisscom/cloudfoundry-cli@v7.1.0+incompatible/api/cloudcontroller/ccv3/feature_flag.go (about) 1 package ccv3 2 3 import ( 4 "encoding/json" 5 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/internal" 7 ) 8 9 // FeatureFlag represents a Cloud Controller V3 Feature Flag. 10 type FeatureFlag struct { 11 Name string `json:"name"` 12 Enabled bool `json:"enabled"` 13 } 14 15 func (f FeatureFlag) MarshalJSON() ([]byte, error) { 16 var ccBodyFlag struct { 17 Enabled bool `json:"enabled"` 18 } 19 20 ccBodyFlag.Enabled = f.Enabled 21 22 return json.Marshal(ccBodyFlag) 23 } 24 25 func (client *Client) GetFeatureFlag(flagName string) (FeatureFlag, Warnings, error) { 26 var responseBody FeatureFlag 27 28 _, warnings, err := client.MakeRequest(RequestParams{ 29 RequestName: internal.GetFeatureFlagRequest, 30 URIParams: internal.Params{"name": flagName}, 31 ResponseBody: &responseBody, 32 }) 33 34 return responseBody, warnings, err 35 } 36 37 // GetFeatureFlags lists feature flags. 38 func (client *Client) GetFeatureFlags() ([]FeatureFlag, Warnings, error) { 39 var resources []FeatureFlag 40 41 _, warnings, err := client.MakeListRequest(RequestParams{ 42 RequestName: internal.GetFeatureFlagsRequest, 43 ResponseBody: FeatureFlag{}, 44 AppendToList: func(item interface{}) error { 45 resources = append(resources, item.(FeatureFlag)) 46 return nil 47 }, 48 }) 49 50 return resources, warnings, err 51 } 52 53 func (client *Client) UpdateFeatureFlag(flag FeatureFlag) (FeatureFlag, Warnings, error) { 54 var responseBody FeatureFlag 55 56 _, warnings, err := client.MakeRequest(RequestParams{ 57 RequestName: internal.PatchFeatureFlagRequest, 58 URIParams: internal.Params{"name": flag.Name}, 59 RequestBody: flag, 60 ResponseBody: &responseBody, 61 }) 62 63 return responseBody, warnings, err 64 }