(c *gin.Context)
| 1196 | } |
| 1197 | |
| 1198 | func (s *Server) loadHomeModelEntries(c *gin.Context) ([]homeModelEntry, bool) { |
| 1199 | if s == nil || c == nil || c.Request == nil { |
| 1200 | return nil, false |
| 1201 | } |
| 1202 | client := home.Current() |
| 1203 | if client == nil { |
| 1204 | c.JSON(http.StatusServiceUnavailable, handlers.ErrorResponse{ |
| 1205 | Error: handlers.ErrorDetail{ |
| 1206 | Message: "home control center unavailable", |
| 1207 | Type: "server_error", |
| 1208 | }, |
| 1209 | }) |
| 1210 | return nil, false |
| 1211 | } |
| 1212 | |
| 1213 | raw, errGet := client.GetModels(c.Request.Context(), c.Request.Header, c.Request.URL.Query()) |
| 1214 | if errGet != nil { |
| 1215 | c.JSON(http.StatusBadGateway, handlers.ErrorResponse{ |
| 1216 | Error: handlers.ErrorDetail{ |
| 1217 | Message: errGet.Error(), |
| 1218 | Type: "server_error", |
| 1219 | }, |
| 1220 | }) |
| 1221 | return nil, false |
| 1222 | } |
| 1223 | |
| 1224 | if statusCode, ok := homeModelsAuthStatus(raw); ok { |
| 1225 | c.JSON(statusCode, handlers.ErrorResponse{ |
| 1226 | Error: handlers.ErrorDetail{ |
| 1227 | Message: homeModelsErrorMessage(raw), |
| 1228 | Type: "authentication_error", |
| 1229 | }, |
| 1230 | }) |
| 1231 | return nil, false |
| 1232 | } |
| 1233 | |
| 1234 | entries, errDecode := decodeHomeModels(raw) |
| 1235 | if errDecode != nil { |
| 1236 | c.JSON(http.StatusBadGateway, handlers.ErrorResponse{ |
| 1237 | Error: handlers.ErrorDetail{ |
| 1238 | Message: errDecode.Error(), |
| 1239 | Type: "server_error", |
| 1240 | }, |
| 1241 | }) |
| 1242 | return nil, false |
| 1243 | } |
| 1244 | |
| 1245 | return entries, true |
| 1246 | } |
| 1247 | |
| 1248 | func formatHomeGeminiModels(entries []homeModelEntry) []map[string]any { |
| 1249 | out := make([]map[string]any, 0, len(entries)) |
no test coverage detected