(e *EndpointData, args []*InitArgData)
| 168 | } |
| 169 | |
| 170 | func makeFlags(e *EndpointData, args []*InitArgData) ([]*cli.FlagData, *cli.BuildFunctionData) { |
| 171 | var ( |
| 172 | fdata = make([]*cli.FieldData, 0, len(args)) |
| 173 | flags = make([]*cli.FlagData, len(args)) |
| 174 | params = make([]string, len(args)) |
| 175 | pInitArgs = make([]*codegen.InitArgData, len(args)) |
| 176 | check bool |
| 177 | pinit *cli.PayloadInitData |
| 178 | ) |
| 179 | for i, arg := range args { |
| 180 | pInitArgs[i] = &codegen.InitArgData{ |
| 181 | Name: arg.Name, |
| 182 | FieldName: arg.FieldName, |
| 183 | FieldType: arg.FieldType, |
| 184 | Type: arg.Type, |
| 185 | } |
| 186 | |
| 187 | f := cli.NewFlagData(e.ServiceName, e.Method.Name, arg.Name, arg.TypeName, arg.Description, arg.Required, arg.Example, arg.DefaultValue) |
| 188 | flags[i] = f |
| 189 | params[i] = f.FullName |
| 190 | code, chek := cli.FieldLoadCode(f, arg.Name, arg.TypeName, arg.Validate, arg.DefaultValue, e.PayloadType, e.PayloadRef) |
| 191 | check = check || chek |
| 192 | tn := arg.TypeRef |
| 193 | if f.Type == "JSON" { |
| 194 | // We need to declare the variable without |
| 195 | // a pointer to be able to unmarshal the JSON |
| 196 | // using its address. |
| 197 | tn = arg.TypeName |
| 198 | } |
| 199 | fdata = append(fdata, &cli.FieldData{ |
| 200 | Name: arg.Name, |
| 201 | VarName: arg.Name, |
| 202 | TypeRef: tn, |
| 203 | Init: code, |
| 204 | }) |
| 205 | } |
| 206 | if e.Method.PayloadRef == "" { |
| 207 | return flags, nil |
| 208 | } |
| 209 | if e.Request.ServerConvert != nil { |
| 210 | pinit = &cli.PayloadInitData{ |
| 211 | Code: e.Request.ServerConvert.Init.Code, |
| 212 | ReturnIsStruct: e.Request.ServerConvert.Init.ReturnIsStruct, |
| 213 | ReturnTypePkg: e.Request.ServerConvert.Init.ReturnTypePkg, |
| 214 | Args: pInitArgs, |
| 215 | } |
| 216 | } |
| 217 | |
| 218 | return flags, &cli.BuildFunctionData{ |
| 219 | Name: "Build" + e.Method.VarName + "Payload", |
| 220 | ActualParams: params, |
| 221 | FormalParams: params, |
| 222 | ServiceName: e.ServiceName, |
| 223 | MethodName: e.Method.Name, |
| 224 | ResultType: e.PayloadRef, |
| 225 | Fields: fdata, |
| 226 | PayloadInit: pinit, |
| 227 | CheckErr: check, |
no test coverage detected