func()

in openapi/restful.go [35:99]


func (a *RestfulInvoker) Prepare(ctx *cli.Context) error {
	a.request.Headers["Date"] = time.Now().Format(time.RFC1123Z)
	a.request.PathPattern = a.path
	a.request.Method = a.method

	if a.request.RegionId != "" {
		a.request.Headers["x-acs-region-id"] = a.request.RegionId
	}

	if v, ok := BodyFlag(ctx.Flags()).GetValue(); ok {
		a.request.SetContent([]byte(v))
	}

	if v, ok := BodyFileFlag(ctx.Flags()).GetValue(); ok {
		buf, _ := os.ReadFile(v)
		a.request.SetContent(buf)
	}

	if _, ok := a.request.Headers["Content-Type"]; !ok {
		content := string(a.request.Content)
		if strings.HasPrefix(content, "{") {
			a.request.SetContentType("application/json")
		} else if strings.HasPrefix(content, "<") {
			a.request.SetContentType("application/xml")
		}
	}
	// assign parameters
	if a.api == nil {
		for _, f := range ctx.UnknownFlags().Flags() {
			a.request.QueryParams[f.Name], _ = f.GetValue()
		}
		// default to https
		a.request.Scheme = "https"
	} else {
		for _, f := range ctx.UnknownFlags().Flags() {
			param := a.api.FindParameter(f.Name)
			if param == nil {
				return &InvalidParameterError{Name: f.Name, api: a.api, flags: ctx.Flags()}
			}
			if param.Position == "Query" {
				a.request.QueryParams[f.Name], _ = f.GetValue()
			} else if param.Position == "Body" {
				a.request.FormParams[f.Name], _ = f.GetValue()
			} else if param.Position == "Path" {
				a.request.PathParams[f.Name], _ = f.GetValue()
			} else if param.Position == "Domain" {
				continue
			} else {
				return fmt.Errorf("unknown parameter position; %s is %s", param.Name, param.Position)
			}
		}

		a.request.Scheme = a.api.GetProtocol()
	}

	if _, ok := InsecureFlag(ctx.Flags()).GetValue(); ok {
		a.request.Scheme = "http"
	}

	if _, ok := SecureFlag(ctx.Flags()).GetValue(); ok {
		a.request.Scheme = "https"
	}

	return nil
}