Initial Commit
This commit is contained in:
60
Services/BaseRadarrService.cs
Normal file
60
Services/BaseRadarrService.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Services/Implementation/MovieService.cs
Normal file
60
Services/Implementation/MovieService.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
23
Services/Implementation/QualityService.cs
Normal file
23
Services/Implementation/QualityService.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
17
Services/Interface/IMovieService.cs
Normal file
17
Services/Interface/IMovieService.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
11
Services/Interface/IQualityService.cs
Normal file
11
Services/Interface/IQualityService.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user