in resources/resources.go [227:287]
func (k *Kernel) UnmarshalJSON(b []byte) error {
rawFields := make(map[string]any)
if err := json.Unmarshal(b, &rawFields); err != nil {
return err
}
if len(rawFields) == 0 {
// The JSON object was empty; leave the structured object empty too.
return nil
}
if idVal, ok := rawFields["id"]; ok {
idString, ok := idVal.(string)
if !ok {
return fmt.Errorf("invalid value for the field 'id': %+v: %w", idVal, util.HTTPError(http.StatusBadRequest))
}
k.ID = idString
}
if specIDVal, ok := rawFields["name"]; ok {
specIDString, ok := specIDVal.(string)
if !ok {
return fmt.Errorf("invalid value for the field 'name': %+v: %w", specIDVal, util.HTTPError(http.StatusBadRequest))
}
k.SpecID = specIDString
}
if lastActivityVal, ok := rawFields["last_activity"]; ok {
lastActivityString, ok := lastActivityVal.(string)
if !ok {
return fmt.Errorf("invalid value for the field 'last_activity': %+v: %w", lastActivityVal, util.HTTPError(http.StatusBadRequest))
}
k.LastActivity = lastActivityString
}
if connectionsVal, ok := rawFields["connections"]; ok {
connectionsNumber, ok := connectionsVal.(float64)
if !ok {
return fmt.Errorf("invalid type for the field 'connections': %+v: %w", connectionsVal, util.HTTPError(http.StatusBadRequest))
}
k.Connections = int(connectionsNumber)
}
if executionStateVal, ok := rawFields["execution_state"]; ok {
executionStateString, ok := executionStateVal.(string)
if !ok {
return fmt.Errorf("invalid value for the field 'execution_state': %+v: %w", executionStateVal, util.HTTPError(http.StatusBadRequest))
}
k.ExecutionState = executionStateString
}
if envVal, ok := rawFields["env"]; ok {
envMap, ok := envVal.(map[string]any)
if !ok {
return fmt.Errorf("invalid value for the field 'env': %+v: %w", envVal, util.HTTPError(http.StatusBadRequest))
}
k.Env = envMap
}
if metadataVal, ok := rawFields["metadata"]; ok {
metadataMap, ok := metadataVal.(map[string]any)
if !ok {
return fmt.Errorf("invalid value for the field 'metadata': %+v: %w", metadataVal, util.HTTPError(http.StatusBadRequest))
}
k.Metadata = metadataMap
}
k.rawFields = rawFields
return nil
}