func()

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")
}