Skip to content

Commit eb935a5

Browse files
committed
LiveControl PermCheck cleanup
1 parent a1548cf commit eb935a5

1 file changed

Lines changed: 10 additions & 36 deletions

File tree

LiveControlGateway/Controllers/LiveControlController.cs

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -418,45 +418,21 @@ await QueueMessage(new LiveControlResponse<LiveResponseType>
418418
private async Task ProcessFrameInternal(ClientLiveFrame frame)
419419
{
420420
var permCheck = CheckFramePermissions(frame.Shocker, frame.Type);
421-
if (permCheck.IsT1)
421+
if (!permCheck.TryPickT0(out var perms, out var error))
422422
{
423423
await QueueMessage(new LiveControlResponse<LiveResponseType>
424424
{
425-
ResponseType = LiveResponseType.ShockerNotFound
426-
});
427-
return;
428-
}
429-
430-
if (permCheck.IsT2)
431-
{
432-
await QueueMessage(new LiveControlResponse<LiveResponseType>
433-
{
434-
ResponseType = LiveResponseType.ShockerMissingLivePermission
435-
});
436-
return;
437-
}
438-
439-
if (permCheck.IsT3)
440-
{
441-
await QueueMessage(new LiveControlResponse<LiveResponseType>
442-
{
443-
ResponseType = LiveResponseType.ShockerMissingPermission
444-
});
445-
return;
446-
}
447-
448-
if (permCheck.IsT4)
449-
{
450-
await QueueMessage(new LiveControlResponse<LiveResponseType>()
451-
{
452-
ResponseType = LiveResponseType.ShockerPaused
425+
ResponseType = error.Match(
426+
notFound => LiveResponseType.ShockerNotFound,
427+
liveNotEnabled => LiveResponseType.ShockerMissingLivePermission,
428+
noPermission => LiveResponseType.ShockerMissingPermission,
429+
shockerPaused => LiveResponseType.ShockerPaused
430+
)
453431
});
432+
454433
return;
455434
}
456435

457-
458-
var perms = permCheck.AsT0.Value;
459-
460436
// Clamp to limits
461437
var intensity = Math.Clamp(frame.Intensity, HardLimits.MinControlIntensity,
462438
perms.Intensity ?? HardLimits.MaxControlIntensity);
@@ -481,16 +457,14 @@ await result.Match(
481457
);
482458
}
483459

484-
private OneOf<Success<SharePermsAndLimits>, NotFound, LiveNotEnabled, NoPermission, ShockerPaused>
485-
CheckFramePermissions(
486-
Guid shocker, ControlType controlType)
460+
private OneOf<SharePermsAndLimits, NotFound, LiveNotEnabled, NoPermission, ShockerPaused> CheckFramePermissions(Guid shocker, ControlType controlType)
487461
{
488462
if (!_sharedShockers.TryGetValue(shocker, out var shockerShare)) return new NotFound();
489463

490464
if (shockerShare.Paused) return new ShockerPaused();
491465
if (!PermissionUtils.IsAllowed(controlType, true, shockerShare.PermsAndLimits)) return new NoPermission();
492466

493-
return new Success<SharePermsAndLimits>(shockerShare.PermsAndLimits);
467+
return shockerShare.PermsAndLimits;
494468
}
495469

496470

0 commit comments

Comments
 (0)