github.com/cloudfoundry-community/cloudfoundry-cli@v6.44.1-0.20240130060226-cda5ed8e89a5+incompatible/resources/organization_resource.go (about)

     1  package resources
     2  
     3  import (
     4  	"encoding/json"
     5  )
     6  
     7  // Organization represents a Cloud Controller V3 Organization.
     8  type Organization struct {
     9  	// GUID is the unique organization identifier.
    10  	GUID string `json:"guid,omitempty"`
    11  	// Name is the name of the organization.
    12  	Name string `json:"name"`
    13  	// QuotaGUID is the GUID of the organization Quota applied to this Organization
    14  	QuotaGUID string `json:"-"`
    15  
    16  	// Metadata is used for custom tagging of API resources
    17  	Metadata *Metadata `json:"metadata,omitempty"`
    18  }
    19  
    20  func (org *Organization) UnmarshalJSON(data []byte) error {
    21  	type alias Organization
    22  	var aliasOrg alias
    23  	err := json.Unmarshal(data, &aliasOrg)
    24  	if err != nil {
    25  		return err
    26  	}
    27  
    28  	*org = Organization(aliasOrg)
    29  
    30  	remainingFields := new(struct {
    31  		Relationships struct {
    32  			Quota struct {
    33  				Data struct {
    34  					GUID string
    35  				}
    36  			}
    37  		}
    38  	})
    39  
    40  	err = json.Unmarshal(data, &remainingFields)
    41  	if err != nil {
    42  		return err
    43  	}
    44  
    45  	org.QuotaGUID = remainingFields.Relationships.Quota.Data.GUID
    46  
    47  	return nil
    48  }