mirror of https://github.com/Ombi-app/Ombi
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
180 lines
5.5 KiB
180 lines
5.5 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Ombi.Api.Sonarr;
|
|
using Ombi.Api.Sonarr.Models;
|
|
using Ombi.Api.Sonarr.Models.V3;
|
|
using Ombi.Attributes;
|
|
using Ombi.Core.Settings;
|
|
using Ombi.Settings.Settings.Models.External;
|
|
|
|
namespace Ombi.Controllers.V1.External
|
|
{
|
|
[Authorize]
|
|
[ApiV1]
|
|
[Produces("application/json")]
|
|
public class SonarrController : Controller
|
|
{
|
|
public SonarrController(ISonarrApi sonarr, ISonarrV3Api sonarrv3, ISettingsService<SonarrSettings> settings)
|
|
{
|
|
SonarrApi = sonarr;
|
|
SonarrV3Api = sonarrv3;
|
|
SonarrSettings = settings;
|
|
}
|
|
|
|
private ISonarrApi SonarrApi { get; }
|
|
private ISonarrV3Api SonarrV3Api { get; }
|
|
private ISettingsService<SonarrSettings> SonarrSettings { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the Sonarr profiles.
|
|
/// </summary>
|
|
/// <param name="settings">The settings.</param>
|
|
/// <returns></returns>
|
|
[HttpPost("Profiles")]
|
|
[PowerUser]
|
|
public Task<IEnumerable<SonarrProfile>> GetProfiles([FromBody] SonarrSettings settings)
|
|
{
|
|
return SonarrV3Api.GetProfiles(settings.ApiKey, settings.FullUri);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the Sonarr root folders.
|
|
/// </summary>
|
|
/// <param name="settings">The settings.</param>
|
|
/// <returns></returns>
|
|
[HttpPost("RootFolders")]
|
|
[PowerUser]
|
|
public Task<IEnumerable<SonarrRootFolder>> GetRootFolders([FromBody] SonarrSettings settings)
|
|
{
|
|
return SonarrV3Api.GetRootFolders(settings.ApiKey, settings.FullUri);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the Sonarr profiles.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("Profiles")]
|
|
[PowerUser]
|
|
public async Task<IEnumerable<SonarrProfile>> GetProfiles()
|
|
{
|
|
SonarrSettings.ClearCache();
|
|
var settings = await SonarrSettings.GetSettingsAsync();
|
|
if (settings.Enabled)
|
|
{
|
|
return await SonarrV3Api.GetProfiles(settings.ApiKey, settings.FullUri);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the Sonarr root folders.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("RootFolders")]
|
|
[PowerUser]
|
|
public async Task<IEnumerable<SonarrRootFolder>> GetRootFolders()
|
|
{
|
|
SonarrSettings.ClearCache();
|
|
var settings = await SonarrSettings.GetSettingsAsync();
|
|
if (settings.Enabled)
|
|
{
|
|
return await SonarrV3Api.GetRootFolders(settings.ApiKey, settings.FullUri);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the Sonarr V3 language profiles
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("v3/LanguageProfiles")]
|
|
[PowerUser]
|
|
public async Task<IEnumerable<LanguageProfiles>> GetLanguageProfiles()
|
|
{
|
|
SonarrSettings.ClearCache();
|
|
var settings = await SonarrSettings.GetSettingsAsync();
|
|
if (settings.Enabled)
|
|
{
|
|
return await SonarrV3Api.LanguageProfiles(settings.ApiKey, settings.FullUri);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the Sonarr tags
|
|
/// </summary>
|
|
/// <param name="settings">The settings.</param>
|
|
/// <returns></returns>
|
|
[HttpPost("tags")]
|
|
[PowerUser]
|
|
public async Task<IEnumerable<Tag>> GetTags([FromBody] SonarrSettings settings)
|
|
{
|
|
return await SonarrV3Api.GetTags(settings.ApiKey, settings.FullUri);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Gets the Sonarr tags
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("tags")]
|
|
[PowerUser]
|
|
public async Task<IEnumerable<Tag>> GetTags()
|
|
{
|
|
var settings = await SonarrSettings.GetSettingsAsync();
|
|
if (settings.Enabled)
|
|
{
|
|
return await SonarrV3Api.GetTags(settings.ApiKey, settings.FullUri);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the Sonarr V3 language profiles
|
|
/// </summary>
|
|
/// <param name="settings">The settings.</param>
|
|
/// <returns></returns>
|
|
[HttpPost("v3/LanguageProfiles")]
|
|
[PowerUser]
|
|
public async Task<IEnumerable<LanguageProfiles>> GetLanguageProfiles([FromBody] SonarrSettings settings)
|
|
{
|
|
return await SonarrV3Api.LanguageProfiles(settings.ApiKey, settings.FullUri);
|
|
}
|
|
|
|
[HttpGet("enabled")]
|
|
[PowerUser]
|
|
public async Task<bool> Enabled()
|
|
{
|
|
SonarrSettings.ClearCache();
|
|
var settings = await SonarrSettings.GetSettingsAsync();
|
|
return settings.Enabled;
|
|
}
|
|
|
|
[HttpGet("version")]
|
|
[PowerUser]
|
|
public async Task<string> SonarrVersion()
|
|
{
|
|
SonarrSettings.ClearCache();
|
|
var settings = await SonarrSettings.GetSettingsAsync();
|
|
if (!settings.Enabled)
|
|
{
|
|
return string.Empty;
|
|
}
|
|
try
|
|
{
|
|
var status = await SonarrV3Api.SystemStatus(settings.ApiKey, settings.FullUri);
|
|
return status.version;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return string.Empty;
|
|
}
|
|
}
|
|
}
|
|
} |