Public/Set-RadarrMovieMonitorStatus.ps1
function Set-RadarrMovieMonitorStatus { [CmdletBinding()] param( [Parameter(Mandatory = $true)] [String]$Id, [Parameter(Mandatory = $true)] [bool]$Monitor ) #################################################################################################### #Region Import configuration try { Import-Configuration -ErrorAction Stop } catch { throw $_ } #EndRegion #################################################################################################### #Region Get the movie from Radarr Write-Verbose -Message "Getting movie" try { $Movie = Get-RadarrMovie -Id $Id -ErrorAction Stop if(!$Movie) { throw "Movie with ID $Id not found. We cannot modify this." } } catch { throw $_ } #EndRegion #################################################################################################### #Region Compare monitor status to user submitted status if($Monitor -eq $Movie.monitored) { Write-Warning -Message "Monitor status is already set to $Monitor" return } else { Write-Verbose -Message "Setting monitor status to $Monitor" $Movie.monitored = $Monitor } #EndRegion #################################################################################################### #Region Define the path, parameters, headers and URI try { $Path = '/movie/' + $Id $Uri = Get-APIUri -RestEndpoint $Path $Headers = Get-Headers $global:UpdateJSON = $Movie | ConvertTo-Json -Depth 5 $DataEncoded = ([System.Text.Encoding]::UTF8.GetBytes($UpdateJSON)) } catch { throw $_ } #EndRegion #################################################################################################### #Region make the main request Write-Verbose "Updating: $Uri" try { $UpdateResult = Invoke-RestMethod -Uri $Uri -Headers $Headers -Method Put -ContentType "application/json" -Body $DataEncoded -ErrorAction Stop if($UpdateResult) { return $UpdateResult } else { Write-Verbose -Message 'No update result.' return } } catch { throw $_ } #EndRegion } |