MCPcopy
hub / github.com/QuantumNous/new-api / getModelFromJSONBody

Function getModelFromJSONBody

middleware/distributor.go:208–240  ·  view source on GitHub ↗
(c *gin.Context)

Source from the content-addressed store, hash-verified

206}
207
208func 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
242func getJSONStringValue(result gjson.Result, field string) (string, error) {
243 if !result.Exists() || result.Type == gjson.Null {

Callers 1

getModelFromRequestFunction · 0.85

Calls 4

GetBodyStorageFunction · 0.92
getJSONStringValueFunction · 0.85
BytesMethod · 0.65
SeekMethod · 0.45

Tested by

no test coverage detected