Public/Get-FrigateReview.ps1
|
function Get-FrigateReview { [CmdletBinding()] param ( [Parameter()] [ValidateNotNullOrEmpty()] [string[]] $Camera, [Parameter()] [ValidateNotNullOrEmpty()] [string[]] $Label, [Parameter()] [datetime] $After, [Parameter()] [datetime] $Before, [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)] [ValidateScript({ TestSession -Session $_ -ErrorAction Stop })] [object] $Session = (GetLastSession -ErrorAction Stop) ) process { $splat = @{ Session = $Session Path = 'api/review' Method = 'Get' Query = @{} } if ($PSCmdlet.MyInvocation.BoundParameters.ContainsKey('Camera')) { $splat.Query['cameras'] = $Camera -join ',' } if ($PSCmdlet.MyInvocation.BoundParameters.ContainsKey('Label')) { $splat.Query['label'] = ($Label -join ',').ToLower() } if ($PSCmdlet.MyInvocation.BoundParameters.ContainsKey('After')) { $splat.Query['after'] = [datetimeoffset]::new($After).ToUnixTimeMilliseconds() / 1000 } if ($PSCmdlet.MyInvocation.BoundParameters.ContainsKey('Before')) { $splat.Query['before'] = [datetimeoffset]::new($Before).ToUnixTimeMilliseconds() / 1000 } $events = Invoke-FrigateApi @splat foreach ($e in $events) { $startTime = [datetime]::SpecifyKind([datetimeoffset]::FromUnixTimeMilliseconds($e.start_time * 1000).DateTime, [datetimekind]::Utc).ToLocalTime() $endTime = [datetime]::SpecifyKind([datetimeoffset]::FromUnixTimeMilliseconds($e.end_time * 1000).DateTime, [datetimekind]::Utc).ToLocalTime() $e | Add-Member -MemberType NoteProperty -Name StartTime -Value $startTime $e | Add-Member -MemberType NoteProperty -Name EndTime -Value $endTime $e } } } |