in generate/generate.go [1186:1270]
func (s *service) generateInterfaceType() {
p, pn := s.p, s.pn
pn("type %sIface interface {", capitalize(s.name))
for _, api := range s.apis {
n := capitalize(api.Name)
tn := capitalize(api.Name + "Params")
// API Calls
pn(" %s(p *%s) (*%s, error)", n, n+"Params", strings.TrimPrefix(n, "Configure")+"Response")
// NewParam funcs
p("New%s(", tn)
for _, ap := range api.Params {
if ap.Required {
// rp = append(rp, ap)
p("%s %s, ", s.parseParamName(ap.Name), mapType(api.Name, ap.Name, ap.Type))
}
}
pn(") *%s", tn)
// Helper funcs
if strings.HasPrefix(api.Name, "list") {
v, found := hasNameOrKeywordParamField(api.Name, api.Params)
if found && hasIDAndNameResponseField(api.Name, api.Response) {
ln := strings.TrimPrefix(api.Name, "list")
// Check if ID is a required parameters and bail if so
for _, ap := range api.Params {
if ap.Required && ap.Name == "id" {
return
}
}
// Generate the function signature
p("Get%sID(%s string, ", parseSingular(ln), v)
for _, ap := range api.Params {
if ap.Required {
p("%s %s, ", s.parseParamName(ap.Name), mapType(api.Name, ap.Name, ap.Type))
}
}
if parseSingular(ln) == "Iso" {
p("isofilter string, ")
}
if parseSingular(ln) == "Template" || parseSingular(ln) == "Iso" {
p("zoneid string, ")
}
pn("opts ...OptionFunc) (string, int, error)")
if hasIDParamField(api.Name, api.Params) {
p("Get%sByName(name string, ", parseSingular(ln))
for _, ap := range api.Params {
if ap.Required {
p("%s %s, ", s.parseParamName(ap.Name), mapType(api.Name, ap.Name, ap.Type))
}
}
if parseSingular(ln) == "Iso" {
p("isofilter string, ")
}
if parseSingular(ln) == "Template" || parseSingular(ln) == "Iso" {
p("zoneid string, ")
}
pn("opts ...OptionFunc) (*%s, int, error)", parseSingular(ln))
}
}
if hasIDParamField(api.Name, api.Params) {
ln := strings.TrimPrefix(api.Name, "list")
// Generate the function signature
p("Get%sByID(id string, ", parseSingular(ln))
for _, ap := range api.Params {
if ap.Required && s.parseParamName(ap.Name) != "id" {
p("%s %s, ", ap.Name, mapType(api.Name, ap.Name, ap.Type))
}
}
if ln == "LoadBalancerRuleInstances" {
pn("opts ...OptionFunc) (*VirtualMachine, int, error)")
} else {
pn("opts ...OptionFunc) (*%s, int, error)", parseSingular(ln))
}
}
}
}
pn("}\n")
}