github.com/sleungcy-sap/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  }