Initial Commit
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing

This commit is contained in:
2022-01-18 12:09:42 -08:00
commit 46e403f880
63 changed files with 5482 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
using RadarrSharp.Proxies;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace RadarrSharp.Services
{
public abstract class BaseRadarrService
{
private IRadarrProxy _proxy;
private string _ip, _port, _apiKey;
protected BaseRadarrService(string ip, string port, string apiKey)
{
_proxy = new RadarrProxy();
this._ip = ip;
this._port = port;
this._apiKey = apiKey;
}
public async Task<T> GetAsync<T>(string endpoint, IEnumerable<Tuple<string, string>> qParams = null)
{
var resp = await _proxy.GetAsync<T>(GenerateApiUrl(endpoint, qParams));
return resp;
}
public async Task<T> PostAsync<T,U>(string endpoint, U data, IEnumerable<Tuple<string, string>> qParams = null)
{
var resp = await _proxy.PostAsync<T, U>(GenerateApiUrl(endpoint, qParams), data);
return resp;
}
public async Task<T> PutAsync<T, U>(string endpoint, U data, IEnumerable<Tuple<string, string>> qParams = null)
{
var resp = await _proxy.PutAsync<T, U>(GenerateApiUrl(endpoint, qParams), data);
return resp;
}
public async Task<HttpResponseMessage> DeleteAsync(string endpoint, IEnumerable<Tuple<string, string>> qParams = null)
{
var resp = await _proxy.DeleteAsync(GenerateApiUrl(endpoint, qParams));
return resp;
}
protected string GenerateApiUrl(string endpoint, IEnumerable<Tuple<string,string>> qParams = null)
{
StringBuilder url = new StringBuilder($"{_ip}:{_port}/api/v3/{endpoint}?apikey={_apiKey}");
if (qParams != null)
{
foreach (var param in qParams)
{
url.Append($"&{param.Item1}={param.Item2}");
}
}
return url.ToString();
}
}
}

View File

@@ -0,0 +1,60 @@
using RadarrSharp.Services.Interface;
using RadarrSharp.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using RadarrSharp.Helpers;
using System.Threading.Tasks;
using System.Web;
namespace RadarrSharp.Services.Implementation
{
public class MovieService : BaseRadarrService, IMovieService
{
public MovieService(string ip, string port, string apiKey) : base(ip, port, apiKey)
{
}
public async Task<IEnumerable<Movie>> GetMovies(string tmdbId = null)
{
var movies = await base.GetAsync<IEnumerable<Movie>>("movie", tmdbId.ToTuple("tmdbId").ToList());
return movies;
}
public async Task<Movie> AddMovie(Movie movie)
{
var resp = await base.PostAsync<Movie, Movie>("movie", movie);
return resp;
}
public async Task<Movie> PutMovie(Movie movie, bool moveFiles)
{
var resp = await base.PutAsync<Movie, Movie>("movie", movie, moveFiles.ToTuple("moveFiles").ToList());
return resp;
}
public async Task<IEnumerable<Movie>> GetMovie(int id)
{
var movies = await base.GetAsync<IEnumerable<Movie>>($"movie/{id}");
return movies;
}
public async Task<bool> DeleteMovie(int id, bool addImportExclusion, bool deleteFiles)
{
var responseMessage = await base.DeleteAsync($"movie/{id}",
RadarrExtensions.ParamList(
addImportExclusion.ToTuple("addImportExclusion"),
deleteFiles.ToTuple("deleteFiles")));
return responseMessage.IsSuccessStatusCode;
}
public async Task<IEnumerable<Movie>> MovieLookup(string searchTerm)
{
searchTerm = HttpUtility.UrlEncode(searchTerm);
var movies = await base.GetAsync<IEnumerable<Movie>>("movie/lookup", searchTerm.ToTuple("term").ToList());
return movies;
}
}
}

View File

@@ -0,0 +1,23 @@
using RadarrSharp.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RadarrSharp.Services.Implementation
{
public class QualityService : BaseRadarrService, IQualityService
{
public QualityService(string ip, string port, string apiKey) : base(ip, port, apiKey)
{
}
public async Task<IEnumerable<QualityProfile>> GetQualities()
{
var qualityProfiles = await base.GetAsync<IEnumerable<QualityProfile>>("qualityProfile");
return qualityProfiles;
}
}
}

View File

@@ -0,0 +1,17 @@
using RadarrSharp.Models;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace RadarrSharp.Services.Interface
{
public interface IMovieService
{
Task<Movie> AddMovie(Movie movie);
Task<bool> DeleteMovie(int id, bool addImportExclusion, bool deleteFiles);
Task<IEnumerable<Movie>> GetMovie(int id);
Task<IEnumerable<Movie>> GetMovies(string tmdbId = null);
Task<IEnumerable<Movie>> MovieLookup(string searchTerm);
Task<Movie> PutMovie(Movie movie, bool moveFiles);
}
}

View File

@@ -0,0 +1,11 @@
using RadarrSharp.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace RadarrSharp.Services.Implementation
{
public interface IQualityService
{
Task<IEnumerable<QualityProfile>> GetQualities();
}
}