github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/api/cloudcontroller/ccv2/domain.go (about) 1 package ccv2 2 3 import ( 4 "encoding/json" 5 6 "code.cloudfoundry.org/cli/api/cloudcontroller" 7 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror" 8 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2/internal" 9 ) 10 11 // Domain represents a Cloud Controller Domain. 12 type Domain struct { 13 GUID string 14 Name string 15 } 16 17 // UnmarshalJSON helps unmarshal a Cloud Controller Domain response. 18 func (domain *Domain) UnmarshalJSON(data []byte) error { 19 var ccDomain struct { 20 Metadata internal.Metadata `json:"metadata"` 21 Entity struct { 22 Name string `json:"name"` 23 } `json:"entity"` 24 } 25 if err := json.Unmarshal(data, &ccDomain); err != nil { 26 return err 27 } 28 29 domain.GUID = ccDomain.Metadata.GUID 30 domain.Name = ccDomain.Entity.Name 31 return nil 32 } 33 34 // GetSharedDomain returns the Shared Domain associated with the provided 35 // Domain GUID. 36 func (client *Client) GetSharedDomain(domainGUID string) (Domain, Warnings, error) { 37 request, err := client.newHTTPRequest(requestOptions{ 38 RequestName: internal.GetSharedDomainRequest, 39 URIParams: map[string]string{"shared_domain_guid": domainGUID}, 40 }) 41 if err != nil { 42 return Domain{}, nil, err 43 } 44 45 var domain Domain 46 response := cloudcontroller.Response{ 47 Result: &domain, 48 } 49 50 err = client.connection.Make(request, &response) 51 if err != nil { 52 return Domain{}, response.Warnings, err 53 } 54 55 return domain, response.Warnings, nil 56 } 57 58 // GetPrivateDomain returns the Private Domain associated with the provided 59 // Domain GUID. 60 func (client *Client) GetPrivateDomain(domainGUID string) (Domain, Warnings, error) { 61 request, err := client.newHTTPRequest(requestOptions{ 62 RequestName: internal.GetPrivateDomainRequest, 63 URIParams: map[string]string{"private_domain_guid": domainGUID}, 64 }) 65 if err != nil { 66 return Domain{}, nil, err 67 } 68 69 var domain Domain 70 response := cloudcontroller.Response{ 71 Result: &domain, 72 } 73 74 err = client.connection.Make(request, &response) 75 if err != nil { 76 return Domain{}, response.Warnings, err 77 } 78 79 return domain, response.Warnings, nil 80 } 81 82 // GetSharedDomains returns the global shared domains. 83 func (client *Client) GetSharedDomains() ([]Domain, Warnings, error) { 84 request, err := client.newHTTPRequest(requestOptions{ 85 RequestName: internal.GetSharedDomainsRequest, 86 }) 87 if err != nil { 88 return []Domain{}, nil, err 89 } 90 91 fullDomainsList := []Domain{} 92 warnings, err := client.paginate(request, Domain{}, func(item interface{}) error { 93 if domain, ok := item.(Domain); ok { 94 fullDomainsList = append(fullDomainsList, domain) 95 } else { 96 return ccerror.UnknownObjectInListError{ 97 Expected: Domain{}, 98 Unexpected: item, 99 } 100 } 101 return nil 102 }) 103 104 return fullDomainsList, warnings, err 105 } 106 107 // GetOrganizationPrivateDomains returns the private domains associated with an organization. 108 func (client *Client) GetOrganizationPrivateDomains(orgGUID string, queries []Query) ([]Domain, Warnings, error) { 109 request, err := client.newHTTPRequest(requestOptions{ 110 RequestName: internal.GetOrganizationPrivateDomainsRequest, 111 Query: FormatQueryParameters(queries), 112 URIParams: map[string]string{"organization_guid": orgGUID}, 113 }) 114 if err != nil { 115 return []Domain{}, nil, err 116 } 117 118 fullDomainsList := []Domain{} 119 warnings, err := client.paginate(request, Domain{}, func(item interface{}) error { 120 if domain, ok := item.(Domain); ok { 121 fullDomainsList = append(fullDomainsList, domain) 122 } else { 123 return ccerror.UnknownObjectInListError{ 124 Expected: Domain{}, 125 Unexpected: item, 126 } 127 } 128 return nil 129 }) 130 131 return fullDomainsList, warnings, err 132 }