func buildResource()

in mmv1/openapi_generate/parser.go [228:276]


func buildResource(filePath, resourcePath, resourceName string, root *openapi3.T) api.Resource {
	resource := api.Resource{}

	parsedObjects := parseOpenApi(resourcePath, resourceName, root)

	parameters := parsedObjects[0].([]*api.Type)
	properties := parsedObjects[1].([]*api.Type)
	queryParam := parsedObjects[2].(string)

	baseUrl := baseUrl(resourcePath)
	selfLink := fmt.Sprintf("%s/{{%s}}", baseUrl, google.Underscore(queryParam))

	resource.Name = resourceName
	resource.BaseUrl = baseUrl
	resource.Parameters = parameters
	resource.Properties = properties
	resource.SelfLink = selfLink
	resource.IdFormat = selfLink
	resource.ImportFormat = []string{selfLink}
	resource.CreateUrl = fmt.Sprintf("%s?%s={{%s}}", baseUrl, queryParam, google.Underscore(queryParam))
	resource.Description = "Description"

	resource.AutogenAsync = true
	async := api.NewAsync()
	async.Operation.BaseUrl = "{{op_id}}"
	async.Result.ResourceInsideResponse = true
	resource.Async = async

	if hasUpdate(resourceName, root) {
		resource.UpdateVerb = "PATCH"
		resource.UpdateMask = true
	} else {
		resource.Immutable = true
	}

	example := r.Examples{}
	example.Name = "name_of_example_file"
	example.PrimaryResourceId = "example"
	example.Vars = map[string]string{"resource_name": "test-resource"}

	resource.Examples = []r.Examples{example}

	resourceNameBytes := []byte(resourceName)
	// Write the status as an encoded string to flag when a YAML file has been
	// copy and pasted without actually using this tool
	resource.AutogenStatus = base64.StdEncoding.EncodeToString(resourceNameBytes)

	return resource
}