github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/api/resources/service_offerings.go (about) 1 package resources 2 3 import ( 4 "encoding/json" 5 "strconv" 6 7 "github.com/cloudfoundry/cli/cf/models" 8 ) 9 10 type PaginatedServiceOfferingResources struct { 11 Resources []ServiceOfferingResource 12 } 13 14 type ServiceOfferingResource struct { 15 Resource 16 Entity ServiceOfferingEntity 17 } 18 19 type ServiceOfferingEntity struct { 20 Label string `json:"label"` 21 Version string `json:"version"` 22 Description string `json:"description"` 23 Provider string `json:"provider"` 24 BrokerGuid string `json:"service_broker_guid"` 25 ServicePlans []ServicePlanResource `json:"service_plans"` 26 Extra ServiceOfferingExtra 27 } 28 29 type ServiceOfferingExtra struct { 30 DocumentationURL string `json:"documentationUrl"` 31 } 32 33 func (resource ServiceOfferingResource) ToFields() (fields models.ServiceOfferingFields) { 34 fields.Label = resource.Entity.Label 35 fields.Version = resource.Entity.Version 36 fields.Provider = resource.Entity.Provider 37 fields.Description = resource.Entity.Description 38 fields.BrokerGuid = resource.Entity.BrokerGuid 39 fields.Guid = resource.Metadata.Guid 40 fields.DocumentationUrl = resource.Entity.Extra.DocumentationURL 41 42 return 43 } 44 45 func (resource ServiceOfferingResource) ToModel() (offering models.ServiceOffering) { 46 offering.ServiceOfferingFields = resource.ToFields() 47 for _, p := range resource.Entity.ServicePlans { 48 servicePlan := models.ServicePlanFields{} 49 servicePlan.Name = p.Entity.Name 50 servicePlan.Guid = p.Metadata.Guid 51 offering.Plans = append(offering.Plans, servicePlan) 52 } 53 return offering 54 } 55 56 type serviceOfferingExtra ServiceOfferingExtra 57 58 func (resource *ServiceOfferingExtra) UnmarshalJSON(rawData []byte) error { 59 if string(rawData) == "null" { 60 return nil 61 } 62 63 extra := serviceOfferingExtra{} 64 65 unquoted, err := strconv.Unquote(string(rawData)) 66 if err != nil { 67 return err 68 } 69 70 err = json.Unmarshal([]byte(unquoted), &extra) 71 if err != nil { 72 return err 73 } 74 75 *resource = ServiceOfferingExtra(extra) 76 77 return nil 78 }