diff --git a/PlexRequests.Api.Interfaces/ICouchPotatoApi.cs b/PlexRequests.Api.Interfaces/ICouchPotatoApi.cs index bcfdb3dfd..288f09d67 100644 --- a/PlexRequests.Api.Interfaces/ICouchPotatoApi.cs +++ b/PlexRequests.Api.Interfaces/ICouchPotatoApi.cs @@ -33,7 +33,8 @@ namespace PlexRequests.Api.Interfaces { public interface ICouchPotatoApi { - bool AddMovie(string imdbid, string apiKey, string title, Uri baseUrl); + bool AddMovie(string imdbid, string apiKey, string title, Uri baseUrl, string profileID = default(string)); CouchPotatoStatus GetStatus(Uri url, string apiKey); + CouchPotatoProfiles GetProfiles(Uri url, string apiKey); } } \ No newline at end of file diff --git a/PlexRequests.Api.Interfaces/IPlexApi.cs b/PlexRequests.Api.Interfaces/IPlexApi.cs index 473bf3237..e0c8029e6 100644 --- a/PlexRequests.Api.Interfaces/IPlexApi.cs +++ b/PlexRequests.Api.Interfaces/IPlexApi.cs @@ -37,6 +37,6 @@ public interface IPlexApi PlexFriends GetUsers(string authToken); PlexSearch SearchContent(string authToken, string searchTerm, Uri plexFullHost); PlexStatus GetStatus(string authToken, Uri uri); - + PlexAccount GetAccount(string authToken); } } \ No newline at end of file diff --git a/PlexRequests.Api.Interfaces/ISickRageApi.cs b/PlexRequests.Api.Interfaces/ISickRageApi.cs new file mode 100644 index 000000000..516b8784f --- /dev/null +++ b/PlexRequests.Api.Interfaces/ISickRageApi.cs @@ -0,0 +1,40 @@ +#region Copyright +// /************************************************************************ +// Copyright (c) 2016 Jamie Rees +// File: ISickRageApi.cs +// Created By: Jamie Rees +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// ************************************************************************/ +#endregion + +using System; +using PlexRequests.Api.Models.SickRage; + +namespace PlexRequests.Api.Interfaces +{ + public interface ISickRageApi + { + SickRageTvAdd AddSeries(int tvdbId, bool latest, string quality, string apiKey, + Uri baseUrl); + + SickRagePing Ping(string apiKey, Uri baseUrl); + } +} \ No newline at end of file diff --git a/PlexRequests.Api.Interfaces/PlexRequests.Api.Interfaces.csproj b/PlexRequests.Api.Interfaces/PlexRequests.Api.Interfaces.csproj index b76996490..3ea7be621 100644 --- a/PlexRequests.Api.Interfaces/PlexRequests.Api.Interfaces.csproj +++ b/PlexRequests.Api.Interfaces/PlexRequests.Api.Interfaces.csproj @@ -49,6 +49,7 @@ + diff --git a/PlexRequests.Api.Models/Movie/CouchPotatoProfiles.cs b/PlexRequests.Api.Models/Movie/CouchPotatoProfiles.cs new file mode 100644 index 000000000..f63661ecb --- /dev/null +++ b/PlexRequests.Api.Models/Movie/CouchPotatoProfiles.cs @@ -0,0 +1,53 @@ +#region Copyright +// /************************************************************************ +// Copyright (c) 2016 Jamie Rees +// File: CouchPotatoProfiles.cs +// Created By: Jamie Rees +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// ************************************************************************/ +#endregion + +using System.Collections.Generic; + +namespace PlexRequests.Api.Models.Movie +{ + public class ProfileList + { + public bool core { get; set; } + public string _rev { get; set; } + public List finish { get; set; } + public List qualities { get; set; } + public string _id { get; set; } + public string _t { get; set; } + public string label { get; set; } + public int minimum_score { get; set; } + public List stop_after { get; set; } + public List wait_for { get; set; } + public int order { get; set; } + public List __invalid_name__3d { get; set; } + } + + public class CouchPotatoProfiles + { + public List list { get; set; } + public bool success { get; set; } + } +} \ No newline at end of file diff --git a/PlexRequests.Api.Models/Plex/PlexAccount.cs b/PlexRequests.Api.Models/Plex/PlexAccount.cs new file mode 100644 index 000000000..be1fbef24 --- /dev/null +++ b/PlexRequests.Api.Models/Plex/PlexAccount.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Serialization; + +namespace PlexRequests.Api.Models.Plex +{ + [XmlRoot(ElementName = "user")] + public class PlexAccount + { + [XmlAttribute(AttributeName = "id")] + public string Id { get; set; } + [XmlAttribute(AttributeName = "username")] + public string Username { get; set; } + [XmlAttribute(AttributeName = "email")] + public string Email { get; set; } + [XmlAttribute(AttributeName = "authenticationToken")] + public string AuthToken { get; set; } + } +} diff --git a/PlexRequests.Api.Models/Plex/PlexSearch.cs b/PlexRequests.Api.Models/Plex/PlexSearch.cs index 1d19b18bd..f95efce64 100644 --- a/PlexRequests.Api.Models/Plex/PlexSearch.cs +++ b/PlexRequests.Api.Models/Plex/PlexSearch.cs @@ -238,9 +238,79 @@ public class Provider public string Type { get; set; } } + [XmlRoot(ElementName = "Directory")] + public class Directory1 + { + [XmlElement(ElementName = "Genre")] + public List Genre { get; set; } + [XmlElement(ElementName = "Role")] + public List Role { get; set; } + [XmlAttribute(AttributeName = "allowSync")] + public string AllowSync { get; set; } + [XmlAttribute(AttributeName = "librarySectionID")] + public string LibrarySectionID { get; set; } + [XmlAttribute(AttributeName = "librarySectionTitle")] + public string LibrarySectionTitle { get; set; } + [XmlAttribute(AttributeName = "librarySectionUUID")] + public string LibrarySectionUUID { get; set; } + [XmlAttribute(AttributeName = "personal")] + public string Personal { get; set; } + [XmlAttribute(AttributeName = "sourceTitle")] + public string SourceTitle { get; set; } + [XmlAttribute(AttributeName = "ratingKey")] + public string RatingKey { get; set; } + [XmlAttribute(AttributeName = "key")] + public string Key { get; set; } + [XmlAttribute(AttributeName = "studio")] + public string Studio { get; set; } + [XmlAttribute(AttributeName = "type")] + public string Type { get; set; } + [XmlAttribute(AttributeName = "title")] + public string Title { get; set; } + [XmlAttribute(AttributeName = "contentRating")] + public string ContentRating { get; set; } + [XmlAttribute(AttributeName = "summary")] + public string Summary { get; set; } + [XmlAttribute(AttributeName = "index")] + public string Index { get; set; } + [XmlAttribute(AttributeName = "rating")] + public string Rating { get; set; } + [XmlAttribute(AttributeName = "viewCount")] + public string ViewCount { get; set; } + [XmlAttribute(AttributeName = "lastViewedAt")] + public string LastViewedAt { get; set; } + [XmlAttribute(AttributeName = "year")] + public string Year { get; set; } + [XmlAttribute(AttributeName = "thumb")] + public string Thumb { get; set; } + [XmlAttribute(AttributeName = "art")] + public string Art { get; set; } + [XmlAttribute(AttributeName = "banner")] + public string Banner { get; set; } + [XmlAttribute(AttributeName = "theme")] + public string Theme { get; set; } + [XmlAttribute(AttributeName = "duration")] + public string Duration { get; set; } + [XmlAttribute(AttributeName = "originallyAvailableAt")] + public string OriginallyAvailableAt { get; set; } + [XmlAttribute(AttributeName = "leafCount")] + public string LeafCount { get; set; } + [XmlAttribute(AttributeName = "viewedLeafCount")] + public string ViewedLeafCount { get; set; } + [XmlAttribute(AttributeName = "childCount")] + public string ChildCount { get; set; } + [XmlAttribute(AttributeName = "addedAt")] + public string AddedAt { get; set; } + [XmlAttribute(AttributeName = "updatedAt")] + public string UpdatedAt { get; set; } + } + + [XmlRoot(ElementName = "MediaContainer")] public class PlexSearch { + [XmlElement(ElementName = "Directory")] + public Directory1 Directory { get; set; } [XmlElement(ElementName = "Video")] public List