234
234
--- @param player_id PlayerId
235
235
--- @return string ? device_id
236
236
function SonosState :get_device_id_for_player (household_id , player_id )
237
+ if type (player_id ) ~= " string" then
238
+ log .error (string.format (" invalid player id provided: %s" , player_id ))
239
+ return nil
240
+ end
237
241
local household = _STATE .households [household_id ]
238
242
if not household then
239
243
log .error (string.format (" No record of Sonos household with id %s" , household_id ))
245
249
--- @param id HouseholdId
246
250
--- @return SonosHousehold
247
251
function SonosState :get_household (id )
252
+ if type (id ) ~= " string" then
253
+ log .error (string.format (" invalid household id provided: %s" , id ))
254
+ return nil
255
+ end
248
256
return _STATE .households [id ]
249
257
end
250
258
@@ -311,6 +319,10 @@ function SonosState:get_group_for_player(household_id, player_id)
311
319
true
312
320
)
313
321
)
322
+ if type (player_id ) ~= " string" then
323
+ log .error (string.format (" invalid player id provided: %s" , player_id ))
324
+ return nil
325
+ end
314
326
local household = _STATE .households [household_id ]
315
327
if household == nil then
316
328
log .error (
@@ -334,6 +346,10 @@ function SonosState:get_coordinator_for_player(household_id, player_id)
334
346
true
335
347
)
336
348
)
349
+ if type (player_id ) ~= " string" then
350
+ log .error (string.format (" invalid player id provided: %s" , player_id ))
351
+ return nil
352
+ end
337
353
return self :get_coordinator_for_group (
338
354
household_id ,
339
355
self :get_group_for_player (household_id , player_id )
@@ -352,6 +368,10 @@ function SonosState:get_coordinator_for_group(household_id, group_id)
352
368
true
353
369
)
354
370
)
371
+ if type (group_id ) ~= " string" then
372
+ log .error (string.format (" invalid group id provided: %s" , group_id ))
373
+ return nil
374
+ end
355
375
local household = _STATE .households [household_id ]
356
376
if household == nil then
357
377
log .error (
@@ -368,7 +388,14 @@ function SonosState:get_coordinator_for_group(household_id, group_id)
368
388
false
369
389
)
370
390
end
371
- return household .groups [group_id ].coordinatorId
391
+
392
+ local group = (household .groups or {})[group_id ]
393
+ if type (group ) ~= " table" then
394
+ log .error (string.format (" No known group for id %s in household %s" , group_id , household_id ))
395
+ return
396
+ end
397
+
398
+ return group .coordinatorId
372
399
end
373
400
374
401
--- @param device SonosDevice
421
448
--- @return PlayerId | nil player_id nil on error
422
449
--- @return nil | string error nil on success
423
450
function SonosState :get_player_for_device (device )
451
+ if type (device ) ~= " table" then
452
+ return nil , string.format (" Invalid device argument for get_player_for_device: %s" , device )
453
+ end
424
454
local household_id , _ , player_id , err = self :get_sonos_ids_for_device (device )
425
455
if err then
426
456
return nil , nil , err
433
463
--- @return GroupId | nil group_id nil on error
434
464
--- @return nil | string error nil on success
435
465
function SonosState :get_group_for_device (device )
466
+ if type (device ) ~= " table" then
467
+ return nil , string.format (" Invalid device argument for get_player_for_device: %s" , device )
468
+ end
436
469
local household_id , group_id , _ , err = self :get_sonos_ids_for_device (device )
437
470
if err then
438
471
return nil , nil , err
445
478
--- @return PlayerId | nil coordinator_id nil on error
446
479
--- @return nil | string error nil on success
447
480
function SonosState :get_coordinator_for_device (device )
481
+ if type (device ) ~= " table" then
482
+ return nil , string.format (" Invalid device argument for get_player_for_device: %s" , device )
483
+ end
448
484
local household_id , group_id , _ , err = self :get_sonos_ids_for_device (device )
449
485
if err then
450
486
return nil , nil , err
0 commit comments