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