(c *gin.Context)
| 206 | } |
| 207 | |
| 208 | func getModelFromJSONBody(c *gin.Context) (*ModelRequest, error) { |
| 209 | storage, err := common.GetBodyStorage(c) |
| 210 | if err != nil { |
| 211 | return nil, err |
| 212 | } |
| 213 | requestBody, err := storage.Bytes() |
| 214 | if err != nil { |
| 215 | return nil, err |
| 216 | } |
| 217 | if !gjson.ValidBytes(requestBody) { |
| 218 | return nil, errors.New("invalid JSON request body") |
| 219 | } |
| 220 | |
| 221 | values := gjson.GetManyBytes(requestBody, "model", "group") |
| 222 | model, err := getJSONStringValue(values[0], "model") |
| 223 | if err != nil { |
| 224 | return nil, err |
| 225 | } |
| 226 | group, err := getJSONStringValue(values[1], "group") |
| 227 | if err != nil { |
| 228 | return nil, err |
| 229 | } |
| 230 | |
| 231 | if _, seekErr := storage.Seek(0, io.SeekStart); seekErr != nil { |
| 232 | return nil, seekErr |
| 233 | } |
| 234 | c.Request.Body = io.NopCloser(storage) |
| 235 | |
| 236 | return &ModelRequest{ |
| 237 | Model: model, |
| 238 | Group: group, |
| 239 | }, nil |
| 240 | } |
| 241 | |
| 242 | func getJSONStringValue(result gjson.Result, field string) (string, error) { |
| 243 | if !result.Exists() || result.Type == gjson.Null { |
no test coverage detected