Reformat and apply Stylecop rules

This commit is contained in:
ta264 2019-12-22 22:08:53 +00:00 committed by Qstick
parent d4fa9b7345
commit f02fa629cc
1186 changed files with 7105 additions and 5616 deletions

View File

@ -9,6 +9,35 @@ insert_final_newline = true
indent_style = space
indent_size = 4
# Sort using and Import directives with System.* appearing first
dotnet_sort_system_directives_first = true
# Avoid "this." and "Me." if not necessary
dotnet_style_qualification_for_field = false:refactoring
dotnet_style_qualification_for_property = false:refactoring
dotnet_style_qualification_for_method = false:refactoring
dotnet_style_qualification_for_event = false:refactoring
# Indentation preferences
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = true
csharp_indent_switch_labels = true
csharp_indent_labels = flush_left
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion
dotnet_naming_style.instance_field_style.capitalization = camel_case
dotnet_naming_style.instance_field_style.required_prefix = _
# Prefer "var" everywhere
csharp_style_var_for_built_in_types = true:suggestion
csharp_style_var_when_type_is_apparent = true:suggestion
csharp_style_var_elsewhere = true:suggestion
[*.{js,html,js,hbs,less,css}]
charset = utf-8
trim_trailing_whitespace = true

1
.gitignore vendored
View File

@ -85,7 +85,6 @@ TestResults
[Tt]est[Rr]esult*
*.Cache
ClientBin
[Ss]tyle[Cc]op.*
~$*
*.dbmdl
Generated_Code #added for RIA/Silverlight projects

View File

@ -2,7 +2,7 @@
<!-- Common to all Radarr Projects -->
<PropertyGroup>
<CodeAnalysisRuleSet>$(SolutionDir)Stylecop.ruleset</CodeAnalysisRuleSet>
<!-- <TreatWarningsAsErrors>true</TreatWarningsAsErrors> -->
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<PlatformTarget>AnyCPU</PlatformTarget>
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
@ -94,7 +94,7 @@
</ItemGroup>
<!-- Set up stylecop -->
<ItemGroup Condition="'$(RadarrProject)'=='true' and '$(RadarrOutputType)'!='Test'">
<ItemGroup Condition="'$(RadarrProject)'=='true'">
<!-- StyleCop analysis -->
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
<PrivateAssets>all</PrivateAssets>

View File

@ -45,7 +45,7 @@ namespace Marr.Data.Converters
public object FromDB(ColumnMap map, object dbValue)
{
return FromDB(new ConverterContext {ColumnMap = map, DbValue = dbValue});
return FromDB(new ConverterContext { ColumnMap = map, DbValue = dbValue });
}
public object ToDB(object clrValue)

View File

@ -50,4 +50,3 @@ namespace Marr.Data.Converters
#endregion
}
}

View File

@ -29,7 +29,7 @@ namespace Marr.Data
{
public static bool HasColumn(this IDataReader dr, string columnName)
{
for (int i=0; i < dr.FieldCount; i++)
for (int i = 0; i < dr.FieldCount; i++)
{
if (dr.GetName(i).Equals(columnName, StringComparison.InvariantCultureIgnoreCase))
return true;

View File

@ -19,9 +19,9 @@ namespace Marr.Data.Mapping
{
public interface IColumnInfo
{
string Name { get; set; }
string Name { get; set; }
string AltName { get; set; }
int Size { get; set; }
int Size { get; set; }
bool IsPrimaryKey { get; set; }
bool IsAutoIncrement { get; set; }
bool ReturnValue { get; set; }

View File

@ -167,7 +167,7 @@ namespace Marr.Data.QGen
var methodExp = memberExp.Expression as MethodCallExpression;
if (methodExp != null)
{
var errMsg = string.Format("Function calls are not supported by the Where clause expression parser. Please evaluate your function call, '{0}', manually and then use the resulting paremeter value in your Where expression.", methodExp.Method.Name);
var errMsg = string.Format("Function calls are not supported by the Where clause expression parser. Please evaluate your function call, '{0}', manually and then use the resulting paremeter value in your Where expression.", methodExp.Method.Name);
throw new NotSupportedException(errMsg);
}

View File

@ -99,7 +99,7 @@ namespace MonoTorrent.BEncoding
int length = 0;
length += 1; // Lists start with 'l'
for (int i=0; i < this.list.Count; i++)
for (int i = 0; i < this.list.Count; i++)
length += this.list[i].LengthInBytes();
length += 1; // Lists end with 'e'
@ -147,9 +147,9 @@ namespace MonoTorrent.BEncoding
this.list.Add(item);
}
public void AddRange (IEnumerable<BEncodedValue> collection)
public void AddRange(IEnumerable<BEncodedValue> collection)
{
list.AddRange (collection);
list.AddRange(collection);
}
public void Clear()

View File

@ -101,16 +101,16 @@ namespace MonoTorrent.BEncoding
if (reader.PeekByte() == '-')
{
sign = -1;
reader.ReadByte ();
reader.ReadByte();
}
int letter;
while (((letter = reader.PeekByte()) != -1) && letter != 'e')
{
if(letter < '0' || letter > '9')
if (letter < '0' || letter > '9')
throw new BEncodingException("Invalid number found.");
number = number * 10 + (letter - '0');
reader.ReadByte ();
reader.ReadByte();
}
if (reader.ReadByte() != 'e') //remove the trailing 'e'
throw new BEncodingException("Invalid data found. Aborting.");

View File

@ -97,7 +97,7 @@ namespace MonoTorrent.BEncoding
public override int Encode(byte[] buffer, int offset)
{
int written = offset;
written += Message.WriteAscii(buffer, written, textBytes.Length.ToString ());
written += Message.WriteAscii(buffer, written, textBytes.Length.ToString());
written += Message.WriteAscii(buffer, written, ":");
written += Message.Write(buffer, written, textBytes);
return written - offset;
@ -144,7 +144,7 @@ namespace MonoTorrent.BEncoding
int prefix = 1; // Account for ':'
// Count the number of characters needed for the length prefix
for (int i = textBytes.Length; i != 0; i = i/10)
for (int i = textBytes.Length; i != 0; i = i / 10)
prefix += 1;
if (textBytes.Length == 0)
@ -164,7 +164,7 @@ namespace MonoTorrent.BEncoding
if (other == null)
return 1;
int difference=0;
int difference = 0;
int length = this.textBytes.Length > other.textBytes.Length ? other.textBytes.Length : this.textBytes.Length;
for (int i = 0; i < length; i++)

View File

@ -32,11 +32,11 @@ namespace MonoTorrent.BEncoding
/// <returns></returns>
public abstract int Encode(byte[] buffer, int offset);
public static T Clone <T> (T value)
public static T Clone<T>(T value)
where T : BEncodedValue
{
Check.Value (value);
return (T) BEncodedValue.Decode (value.Encode ());
Check.Value(value);
return (T)BEncodedValue.Decode(value.Encode());
}
/// <summary>

View File

@ -394,7 +394,7 @@ namespace MonoTorrent
v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
count += (((v + (v >> 4) & 0xF0F0F0F) * 0x1010101)) >> 24;
}
this.trueCount = (int)count ;
this.trueCount = (int)count;
}
void ZeroUnusedBits()

View File

@ -62,9 +62,9 @@ namespace MonoTorrent
DoCheck(data, "data");
}
public static void Destination (object destination)
public static void Destination(object destination)
{
DoCheck (destination, "destination");
DoCheck(destination, "destination");
}
public static void Endpoint(object endpoint)
@ -92,9 +92,9 @@ namespace MonoTorrent
DoCheck(infoHash, "infoHash");
}
public static void Key (object key)
public static void Key(object key)
{
DoCheck (key, "key");
DoCheck(key, "key");
}
public static void Limiter(object limiter)
@ -122,9 +122,9 @@ namespace MonoTorrent
DoCheck(manager, "manager");
}
public static void Mappings (object mappings)
public static void Mappings(object mappings)
{
DoCheck (mappings, "mappings");
DoCheck(mappings, "mappings");
}
public static void Metadata(object metadata)
@ -132,9 +132,9 @@ namespace MonoTorrent
DoCheck(metadata, "metadata");
}
public static void Name (object name)
public static void Name(object name)
{
DoCheck (name, "name");
DoCheck(name, "name");
}
public static void Path(object path)
@ -142,9 +142,9 @@ namespace MonoTorrent
DoCheck(path, "path");
}
public static void Paths (object paths)
public static void Paths(object paths)
{
DoCheck (paths, "paths");
DoCheck(paths, "paths");
}
public static void PathNotEmpty(string path)
@ -152,14 +152,14 @@ namespace MonoTorrent
IsNullOrEmpty(path, "path");
}
public static void Peer (object peer)
public static void Peer(object peer)
{
DoCheck (peer, "peer");
DoCheck(peer, "peer");
}
public static void Peers (object peers)
public static void Peers(object peers)
{
DoCheck (peers, "peers");
DoCheck(peers, "peers");
}
public static void Picker(object picker)

View File

@ -4,7 +4,7 @@ using System.Text;
namespace MonoTorrent
{
public class InfoHash : IEquatable <InfoHash>
public class InfoHash : IEquatable<InfoHash>
{
static Dictionary<char, byte> base32DecodeTable;
@ -97,24 +97,25 @@ namespace MonoTorrent
public static InfoHash FromBase32(string infoHash)
{
Check.InfoHash (infoHash);
Check.InfoHash(infoHash);
if (infoHash.Length != 32)
throw new ArgumentException("Infohash must be a base32 encoded 32 character string");
infoHash = infoHash.ToLower();
int infohashOffset =0 ;
int infohashOffset = 0;
byte[] hash = new byte[20];
var temp = new byte[8];
for (int i = 0; i < hash.Length; ) {
for (int j=0; j < 8; j++)
for (int i = 0; i < hash.Length;)
{
for (int j = 0; j < 8; j++)
if (!base32DecodeTable.TryGetValue(infoHash[infohashOffset++], out temp[j]))
throw new ArgumentException ("infoHash", "Value is not a valid base32 encoded string");
throw new ArgumentException("infoHash", "Value is not a valid base32 encoded string");
//8 * 5bits = 40 bits = 5 bytes
hash[i++] = (byte)((temp[0] << 3) | (temp [1]>> 2));
hash[i++] = (byte)((temp[0] << 3) | (temp[1] >> 2));
hash[i++] = (byte)((temp[1] << 6) | (temp[2] << 1) | (temp[3] >> 4));
hash[i++] = (byte)((temp[3] << 4) | (temp [4]>> 1));
hash[i++] = (byte)((temp[4] << 7) | (temp[5] << 2) | (temp [6]>> 3));
hash[i++] = (byte)((temp[3] << 4) | (temp[4] >> 1));
hash[i++] = (byte)((temp[4] << 7) | (temp[5] << 2) | (temp[6] >> 3));
hash[i++] = (byte)((temp[6] << 5) | temp[7]);
}
@ -123,7 +124,7 @@ namespace MonoTorrent
public static InfoHash FromHex(string infoHash)
{
Check.InfoHash (infoHash);
Check.InfoHash(infoHash);
if (infoHash.Length != 40)
throw new ArgumentException("Infohash must be 40 characters long");

View File

@ -7,87 +7,91 @@ namespace MonoTorrent
{
public class MagnetLink
{
public RawTrackerTier AnnounceUrls {
get; private set;
}
public InfoHash InfoHash {
get; private set;
}
public string Name {
get; private set;
}
public List<string> Webseeds {
get; private set;
}
public MagnetLink (string url)
public RawTrackerTier AnnounceUrls
{
Check.Url (url);
AnnounceUrls = new RawTrackerTier ();
Webseeds = new List<string> ();
ParseMagnetLink (url);
get; private set;
}
void ParseMagnetLink (string url)
public InfoHash InfoHash
{
string[] splitStr = url.Split ('?');
get; private set;
}
public string Name
{
get; private set;
}
public List<string> Webseeds
{
get; private set;
}
public MagnetLink(string url)
{
Check.Url(url);
AnnounceUrls = new RawTrackerTier();
Webseeds = new List<string>();
ParseMagnetLink(url);
}
void ParseMagnetLink(string url)
{
string[] splitStr = url.Split('?');
if (splitStr.Length == 0 || splitStr[0] != "magnet:")
throw new FormatException ("The magnet link must start with 'magnet:?'.");
throw new FormatException("The magnet link must start with 'magnet:?'.");
if (splitStr.Length == 1)
return;//no parametter
string[] parameters = splitStr[1].Split ('&', ';');
string[] parameters = splitStr[1].Split('&', ';');
for (int i = 0; i < parameters.Length ; i++)
for (int i = 0; i < parameters.Length; i++)
{
string[] keyval = parameters[i].Split ('=');
string[] keyval = parameters[i].Split('=');
if (keyval.Length != 2)
throw new FormatException ("A field-value pair of the magnet link contain more than one equal'.");
throw new FormatException("A field-value pair of the magnet link contain more than one equal'.");
switch (keyval[0].Substring(0, 2))
{
case "xt"://exact topic
if (InfoHash != null)
throw new FormatException ("More than one infohash in magnet link is not allowed.");
throw new FormatException("More than one infohash in magnet link is not allowed.");
string val = keyval[1].Substring(9);
switch (keyval[1].Substring(0, 9))
{
case "urn:sha1:"://base32 hash
case "urn:btih:":
if (val.Length == 32)
InfoHash = InfoHash.FromBase32 (val);
else if (val.Length == 40)
InfoHash = InfoHash.FromHex (val);
else
throw new FormatException("Infohash must be base32 or hex encoded.");
break;
if (val.Length == 32)
InfoHash = InfoHash.FromBase32(val);
else if (val.Length == 40)
InfoHash = InfoHash.FromHex(val);
else
throw new FormatException("Infohash must be base32 or hex encoded.");
break;
}
break;
case "tr" ://address tracker
break;
case "tr"://address tracker
var bytes = UriHelper.UrlDecode(keyval[1]);
AnnounceUrls.Add(Encoding.UTF8.GetString(bytes));
break;
break;
case "as"://Acceptable Source
Webseeds.Add (keyval[1]);
break;
Webseeds.Add(keyval[1]);
break;
case "dn"://display name
var name = UriHelper.UrlDecode(keyval[1]);
Name = Encoding.UTF8.GetString(name);
break;
break;
case "xl"://exact length
case "xs":// eXact Source - P2P link.
case "kt"://keyword topic
case "mt"://manifest topic
//not supported for moment
break;
//not supported for moment
break;
default:
//not supported
break;
break;
}
}
}

View File

@ -2,7 +2,7 @@ namespace MonoTorrent.Messages
{
interface IMessage
{
int ByteLength { get;}
int ByteLength { get; }
byte[] Encode();
int Encode(byte[] buffer, int offset);

View File

@ -7,90 +7,94 @@ namespace MonoTorrent
{
public class RawTrackerTier : IList<string>
{
public string this[int index] {
get { return ((BEncodedString) Tier [index]).Text; }
set { Tier [index] = new BEncodedString (value );}
public string this[int index]
{
get { return ((BEncodedString)Tier[index]).Text; }
set { Tier[index] = new BEncodedString(value); }
}
internal BEncodedList Tier {
internal BEncodedList Tier
{
get; set;
}
public RawTrackerTier ()
: this (new BEncodedList ())
public RawTrackerTier()
: this(new BEncodedList())
{
}
public RawTrackerTier (BEncodedList tier)
public RawTrackerTier(BEncodedList tier)
{
Tier = tier;
}
public RawTrackerTier (IEnumerable<string> announces)
: this ()
public RawTrackerTier(IEnumerable<string> announces)
: this()
{
foreach (var v in announces)
Add (v);
Add(v);
}
public int IndexOf (string item)
public int IndexOf(string item)
{
return Tier.IndexOf ((BEncodedString) item);
return Tier.IndexOf((BEncodedString)item);
}
public void Insert (int index, string item)
public void Insert(int index, string item)
{
Tier.Insert (index, (BEncodedString) item);
Tier.Insert(index, (BEncodedString)item);
}
public void RemoveAt (int index)
public void RemoveAt(int index)
{
Tier.RemoveAt (index);
Tier.RemoveAt(index);
}
public void Add (string item)
public void Add(string item)
{
Tier.Add ((BEncodedString) item);
Tier.Add((BEncodedString)item);
}
public void Clear ()
public void Clear()
{
Tier.Clear ();
Tier.Clear();
}
public bool Contains (string item)
public bool Contains(string item)
{
return Tier.Contains ((BEncodedString) item);
return Tier.Contains((BEncodedString)item);
}
public void CopyTo (string[] array, int arrayIndex)
public void CopyTo(string[] array, int arrayIndex)
{
foreach (var s in this)
array [arrayIndex ++] = s;
array[arrayIndex++] = s;
}
public bool Remove (string item)
public bool Remove(string item)
{
return Tier.Remove ((BEncodedString) item);
return Tier.Remove((BEncodedString)item);
}
public int Count {
public int Count
{
get { return Tier.Count; }
}
public bool IsReadOnly {
public bool IsReadOnly
{
get { return Tier.IsReadOnly; }
}
public IEnumerator<string> GetEnumerator ()
public IEnumerator<string> GetEnumerator()
{
foreach (BEncodedString v in Tier)
yield return v.Text;
}
IEnumerator IEnumerable.GetEnumerator ()
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator ();
return GetEnumerator();
}
}
}

View File

@ -7,98 +7,103 @@ namespace MonoTorrent
{
public class RawTrackerTiers : IList<RawTrackerTier>
{
BEncodedList Tiers {
BEncodedList Tiers
{
get; set;
}
public RawTrackerTiers ()
: this (new BEncodedList ())
public RawTrackerTiers()
: this(new BEncodedList())
{
}
public RawTrackerTiers (BEncodedList tiers)
public RawTrackerTiers(BEncodedList tiers)
{
Tiers = tiers;
}
public int IndexOf (RawTrackerTier item)
public int IndexOf(RawTrackerTier item)
{
if (item != null) {
if (item != null)
{
for (int i = 0; i < Tiers.Count; i++)
if (item.Tier == Tiers [i])
if (item.Tier == Tiers[i])
return i;
}
return -1;
}
public void Insert (int index, RawTrackerTier item)
public void Insert(int index, RawTrackerTier item)
{
Tiers.Insert (index, item.Tier);
Tiers.Insert(index, item.Tier);
}
public void RemoveAt (int index)
public void RemoveAt(int index)
{
Tiers.RemoveAt (index);
Tiers.RemoveAt(index);
}
public RawTrackerTier this[int index] {
get { return new RawTrackerTier ((BEncodedList) Tiers [index]); }
set { Tiers [index] = value.Tier; }
}
public void Add (RawTrackerTier item)
public RawTrackerTier this[int index]
{
Tiers.Add (item.Tier);
get { return new RawTrackerTier((BEncodedList)Tiers[index]); }
set { Tiers[index] = value.Tier; }
}
public void AddRange (IEnumerable<RawTrackerTier> tiers)
public void Add(RawTrackerTier item)
{
Tiers.Add(item.Tier);
}
public void AddRange(IEnumerable<RawTrackerTier> tiers)
{
foreach (var v in tiers)
Add (v);
Add(v);
}
public void Clear ()
public void Clear()
{
Tiers.Clear ();
Tiers.Clear();
}
public bool Contains (RawTrackerTier item)
public bool Contains(RawTrackerTier item)
{
return IndexOf (item) != -1;
return IndexOf(item) != -1;
}
public void CopyTo (RawTrackerTier[] array, int arrayIndex)
public void CopyTo(RawTrackerTier[] array, int arrayIndex)
{
foreach (var v in this)
array [arrayIndex ++] = v;
array[arrayIndex++] = v;
}
public bool Remove (RawTrackerTier item)
public bool Remove(RawTrackerTier item)
{
int index = IndexOf (item);
int index = IndexOf(item);
if (index != -1)
RemoveAt (index);
RemoveAt(index);
return index != -1;
}
public int Count {
public int Count
{
get { return Tiers.Count; }
}
public bool IsReadOnly {
public bool IsReadOnly
{
get { return Tiers.IsReadOnly; }
}
public IEnumerator<RawTrackerTier> GetEnumerator ()
public IEnumerator<RawTrackerTier> GetEnumerator()
{
foreach (var v in Tiers)
yield return new RawTrackerTier ((BEncodedList) v);
yield return new RawTrackerTier((BEncodedList)v);
}
IEnumerator IEnumerable.GetEnumerator ()
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator ();
return GetEnumerator();
}
}
}

View File

@ -36,7 +36,8 @@ namespace MonoTorrent
if (e == null)
return;
ThreadPool.QueueUserWorkItem(delegate {
ThreadPool.QueueUserWorkItem(delegate
{
if (e != null)
e(o, args);
});

View File

@ -263,7 +263,7 @@ namespace MonoTorrent
protected Torrent()
{
this.announceUrls = new RawTrackerTiers ();
this.announceUrls = new RawTrackerTiers();
this.comment = string.Empty;
this.createdBy = string.Empty;
this.creationDate = new DateTime(1970, 1, 1, 0, 0, 0);
@ -298,15 +298,15 @@ namespace MonoTorrent
return this.infoHash.GetHashCode();
}
internal byte [] ToBytes ()
internal byte[] ToBytes()
{
return this.originalDictionary.Encode ();
return this.originalDictionary.Encode();
}
internal BEncodedDictionary ToDictionary ()
internal BEncodedDictionary ToDictionary()
{
// Give the user a copy of the original dictionary.
return BEncodedValue.Clone (this.originalDictionary);
return BEncodedValue.Clone(this.originalDictionary);
}
public override string ToString()
@ -423,7 +423,7 @@ namespace MonoTorrent
else
{
startIndex = (int)(this.size / this.pieceLength);
endIndex = (int)((this.size + length) / this.pieceLength);
endIndex = (int)((this.size + length) / this.pieceLength);
if ((this.size + length) % this.pieceLength == 0)
endIndex--;
}
@ -702,7 +702,7 @@ namespace MonoTorrent
try
{
Torrent t = Torrent.LoadCore ((BEncodedDictionary) BEncodedDictionary.Decode(stream));
Torrent t = Torrent.LoadCore((BEncodedDictionary)BEncodedDictionary.Decode(stream));
t.torrentPath = path;
return t;
}
@ -714,7 +714,7 @@ namespace MonoTorrent
public static Torrent Load(BEncodedDictionary torrentInformation)
{
return LoadCore ((BEncodedDictionary)BEncodedValue.Decode (torrentInformation.Encode ()));
return LoadCore((BEncodedDictionary)BEncodedValue.Decode(torrentInformation.Encode()));
}
internal static Torrent LoadCore(BEncodedDictionary torrentInformation)
@ -743,7 +743,7 @@ namespace MonoTorrent
// Ignore this if we have an announce-list
if (torrentInformation.ContainsKey("announce-list"))
break;
this.announceUrls.Add(new RawTrackerTier ());
this.announceUrls.Add(new RawTrackerTier());
this.announceUrls[0].Add(keypair.Value.ToString());
break;
@ -811,7 +811,7 @@ namespace MonoTorrent
case ("info"):
using (SHA1 s = HashAlgoFactory.Create<SHA1>())
this.infoHash = new InfoHash (s.ComputeHash(keypair.Value.Encode()));
this.infoHash = new InfoHash(s.ComputeHash(keypair.Value.Encode()));
this.ProcessInfo(((BEncodedDictionary)keypair.Value));
break;
@ -835,7 +835,7 @@ namespace MonoTorrent
Toolbox.Randomize<string>(tier);
RawTrackerTier collection = new RawTrackerTier ();
RawTrackerTier collection = new RawTrackerTier();
for (int k = 0; k < tier.Count; k++)
collection.Add(tier[k]);

View File

@ -125,14 +125,14 @@ namespace MonoTorrent
}
public TorrentFile (string path, long length, string fullPath)
: this (path, length, fullPath, 0, 0)
public TorrentFile(string path, long length, string fullPath)
: this(path, length, fullPath, 0, 0)
{
}
public TorrentFile (string path, long length, int startIndex, int endIndex)
: this (path, length, path, startIndex, endIndex)
public TorrentFile(string path, long length, int startIndex, int endIndex)
: this(path, length, path, startIndex, endIndex)
{
}

View File

@ -14,105 +14,121 @@ namespace MonoTorrent
{
static class UriHelper
{
static readonly char [] hexChars = "0123456789abcdef".ToCharArray ();
static readonly char[] hexChars = "0123456789abcdef".ToCharArray();
public static string UrlEncode (byte[] bytes)
public static string UrlEncode(byte[] bytes)
{
if (bytes == null)
throw new ArgumentNullException ("bytes");
throw new ArgumentNullException("bytes");
var result = new MemoryStream (bytes.Length);
var result = new MemoryStream(bytes.Length);
for (int i = 0; i < bytes.Length; i++)
UrlEncodeChar ((char)bytes [i], result, false);
UrlEncodeChar((char)bytes[i], result, false);
return Encoding.ASCII.GetString (result.ToArray());
return Encoding.ASCII.GetString(result.ToArray());
}
public static byte [] UrlDecode (string s)
public static byte[] UrlDecode(string s)
{
if (null == s)
return null;
var e = Encoding.UTF8;
if (s.IndexOf ('%') == -1 && s.IndexOf ('+') == -1)
return e.GetBytes (s);
if (s.IndexOf('%') == -1 && s.IndexOf('+') == -1)
return e.GetBytes(s);
long len = s.Length;
var bytes = new List <byte> ();
var bytes = new List<byte>();
int xchar;
char ch;
for (int i = 0; i < len; i++) {
ch = s [i];
if (ch == '%' && i + 2 < len && s [i + 1] != '%') {
if (s [i + 1] == 'u' && i + 5 < len) {
for (int i = 0; i < len; i++)
{
ch = s[i];
if (ch == '%' && i + 2 < len && s[i + 1] != '%')
{
if (s[i + 1] == 'u' && i + 5 < len)
{
// unicode hex sequence
xchar = GetChar (s, i + 2, 4);
if (xchar != -1) {
WriteCharBytes (bytes, (char)xchar, e);
xchar = GetChar(s, i + 2, 4);
if (xchar != -1)
{
WriteCharBytes(bytes, (char)xchar, e);
i += 5;
} else
WriteCharBytes (bytes, '%', e);
} else if ((xchar = GetChar (s, i + 1, 2)) != -1) {
WriteCharBytes (bytes, (char)xchar, e);
}
else
WriteCharBytes(bytes, '%', e);
}
else if ((xchar = GetChar(s, i + 1, 2)) != -1)
{
WriteCharBytes(bytes, (char)xchar, e);
i += 2;
} else {
WriteCharBytes (bytes, '%', e);
}
else
{
WriteCharBytes(bytes, '%', e);
}
continue;
}
if (ch == '+')
WriteCharBytes (bytes, ' ', e);
WriteCharBytes(bytes, ' ', e);
else
WriteCharBytes (bytes, ch, e);
WriteCharBytes(bytes, ch, e);
}
return bytes.ToArray ();
return bytes.ToArray();
}
static void UrlEncodeChar (char c, Stream result, bool isUnicode) {
if (c > ' ' && NotEncoded (c)) {
result.WriteByte ((byte)c);
static void UrlEncodeChar(char c, Stream result, bool isUnicode)
{
if (c > ' ' && NotEncoded(c))
{
result.WriteByte((byte)c);
return;
}
if (c==' ') {
result.WriteByte ((byte)'+');
if (c == ' ')
{
result.WriteByte((byte)'+');
return;
}
if ( (c < '0') ||
if ((c < '0') ||
(c < 'A' && c > '9') ||
(c > 'Z' && c < 'a') ||
(c > 'z')) {
if (isUnicode && c > 127) {
result.WriteByte ((byte)'%');
result.WriteByte ((byte)'u');
result.WriteByte ((byte)'0');
result.WriteByte ((byte)'0');
(c > 'z'))
{
if (isUnicode && c > 127)
{
result.WriteByte((byte)'%');
result.WriteByte((byte)'u');
result.WriteByte((byte)'0');
result.WriteByte((byte)'0');
}
else
result.WriteByte ((byte)'%');
result.WriteByte((byte)'%');
int idx = ((int) c) >> 4;
result.WriteByte ((byte)hexChars [idx]);
idx = ((int) c) & 0x0F;
result.WriteByte ((byte)hexChars [idx]);
int idx = ((int)c) >> 4;
result.WriteByte((byte)hexChars[idx]);
idx = ((int)c) & 0x0F;
result.WriteByte((byte)hexChars[idx]);
}
else {
result.WriteByte ((byte)c);
else
{
result.WriteByte((byte)c);
}
}
static int GetChar (string str, int offset, int length)
static int GetChar(string str, int offset, int length)
{
int val = 0;
int end = length + offset;
for (int i = offset; i < end; i++) {
char c = str [i];
for (int i = offset; i < end; i++)
{
char c = str[i];
if (c > 127)
return -1;
int current = GetInt ((byte) c);
int current = GetInt((byte)c);
if (current == -1)
return -1;
val = (val << 4) + current;
@ -121,9 +137,9 @@ namespace MonoTorrent
return val;
}
static int GetInt (byte b)
static int GetInt(byte b)
{
char c = (char) b;
char c = (char)b;
if (c >= '0' && c <= '9')
return c - '0';
@ -136,18 +152,20 @@ namespace MonoTorrent
return -1;
}
static bool NotEncoded (char c)
static bool NotEncoded(char c)
{
return c == '!' || c == '(' || c == ')' || c == '*' || c == '-' || c == '.' || c == '_' || c == '\'';
}
static void WriteCharBytes (List<byte> buf, char ch, Encoding e)
static void WriteCharBytes(List<byte> buf, char ch, Encoding e)
{
if (ch > 255) {
foreach (byte b in e.GetBytes (new char[] { ch }))
buf.Add (b);
} else
buf.Add ((byte)ch);
if (ch > 255)
{
foreach (byte b in e.GetBytes(new char[] { ch }))
buf.Add(b);
}
else
buf.Add((byte)ch);
}
}
}

View File

@ -1,8 +1,8 @@
using FluentAssertions;
using NUnit.Framework;
using Radarr.Http.ClientSchema;
using NzbDrone.Core.Annotations;
using NzbDrone.Test.Common;
using Radarr.Http.ClientSchema;
namespace NzbDrone.Api.Test.ClientSchemaTests
{
@ -16,25 +16,22 @@ namespace NzbDrone.Api.Test.ClientSchemaTests
schema.Should().HaveCount(2);
}
[Test]
public void schema_should_have_proper_fields()
{
var model = new TestModel
{
FirstName = "Bob",
LastName = "Poop"
};
{
FirstName = "Bob",
LastName = "Poop"
};
var schema = SchemaBuilder.ToSchema(model);
schema.Should().Contain(c => c.Order == 1 && c.Name == "lastName" && c.Label == "Last Name" && c.HelpText == "Your Last Name" && (string) c.Value == "Poop");
schema.Should().Contain(c => c.Order == 0 && c.Name == "firstName" && c.Label == "First Name" && c.HelpText == "Your First Name" && (string) c.Value == "Bob");
schema.Should().Contain(c => c.Order == 1 && c.Name == "lastName" && c.Label == "Last Name" && c.HelpText == "Your Last Name" && (string)c.Value == "Poop");
schema.Should().Contain(c => c.Order == 0 && c.Name == "firstName" && c.Label == "First Name" && c.HelpText == "Your First Name" && (string)c.Value == "Bob");
}
}
public class TestModel
{
[FieldDefinition(0, Label = "First Name", HelpText = "Your First Name")]

View File

@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using NzbDrone.Api.Movies;
using Radarr.Http.REST;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Qualities;
using Radarr.Http.REST;
namespace NzbDrone.Api.Blacklist
{
@ -25,7 +25,10 @@ namespace NzbDrone.Api.Blacklist
{
public static BlacklistResource MapToResource(this Core.Blacklisting.Blacklist model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new BlacklistResource
{

View File

@ -1,4 +1,3 @@
using Nancy;
using System;
using System.Collections.Generic;
using System.Linq;
@ -6,10 +5,11 @@ using Ical.Net;
using Ical.Net.CalendarComponents;
using Ical.Net.DataTypes;
using Ical.Net.Serialization;
using NzbDrone.Core.Movies;
using Nancy;
using Nancy.Responses;
using NzbDrone.Core.Tags;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Movies;
using NzbDrone.Core.Tags;
namespace NzbDrone.Api.Calendar
{
@ -24,9 +24,9 @@ namespace NzbDrone.Api.Calendar
_movieService = movieService;
_tagService = tagService;
Get("/NzbDrone.ics", options => GetCalendarFeed());
Get("/Sonarr.ics", options => GetCalendarFeed());
Get("/Radarr.ics", options => GetCalendarFeed());
Get("/NzbDrone.ics", options => GetCalendarFeed());
Get("/Sonarr.ics", options => GetCalendarFeed());
Get("/Radarr.ics", options => GetCalendarFeed());
}
private object GetCalendarFeed()
@ -36,6 +36,7 @@ namespace NzbDrone.Api.Calendar
var start = DateTime.Today.AddDays(-pastDays);
var end = DateTime.Today.AddDays(futureDays);
var unmonitored = false;
//var premiersOnly = false;
var tags = new List<int>();
@ -45,11 +46,19 @@ namespace NzbDrone.Api.Calendar
var queryPastDays = Request.Query.PastDays;
var queryFutureDays = Request.Query.FutureDays;
var queryUnmonitored = Request.Query.Unmonitored;
// var queryPremiersOnly = Request.Query.PremiersOnly;
var queryTags = Request.Query.Tags;
if (queryStart.HasValue) start = DateTime.Parse(queryStart.Value);
if (queryEnd.HasValue) end = DateTime.Parse(queryEnd.Value);
if (queryStart.HasValue)
{
start = DateTime.Parse(queryStart.Value);
}
if (queryEnd.HasValue)
{
end = DateTime.Parse(queryEnd.Value);
}
if (queryPastDays.HasValue)
{
@ -72,7 +81,6 @@ namespace NzbDrone.Api.Calendar
//{
// premiersOnly = bool.Parse(queryPremiersOnly.Value);
//}
if (queryTags.HasValue)
{
var tagInput = (string)queryTags.Value.ToString();
@ -98,10 +106,9 @@ namespace NzbDrone.Api.Calendar
CreateEvent(calendar, movie, true);
CreateEvent(calendar, movie, false);
}
var serializer = (IStringSerializer) new SerializerFactory().Build(calendar.GetType(), new SerializationContext());
var serializer = (IStringSerializer)new SerializerFactory().Build(calendar.GetType(), new SerializationContext());
var icalendar = serializer.SerializeToString(calendar);
return new TextResponse(icalendar, "text/calendar");

View File

@ -20,7 +20,6 @@ namespace NzbDrone.Api.Calendar
IMapCoversToLocal coverMapper)
: base(signalR, "calendar")
{
_moviesService = moviesService;
_coverMapper = coverMapper;
@ -37,9 +36,20 @@ namespace NzbDrone.Api.Calendar
var queryEnd = Request.Query.End;
var queryIncludeUnmonitored = Request.Query.Unmonitored;
if (queryStart.HasValue) start = DateTime.Parse(queryStart.Value);
if (queryEnd.HasValue) end = DateTime.Parse(queryEnd.Value);
if (queryIncludeUnmonitored.HasValue) includeUnmonitored = Convert.ToBoolean(queryIncludeUnmonitored.Value);
if (queryStart.HasValue)
{
start = DateTime.Parse(queryStart.Value);
}
if (queryEnd.HasValue)
{
end = DateTime.Parse(queryEnd.Value);
}
if (queryIncludeUnmonitored.HasValue)
{
includeUnmonitored = Convert.ToBoolean(queryIncludeUnmonitored.Value);
}
var resources = _moviesService.GetMoviesBetweenDates(start, end, includeUnmonitored).Select(MapToResource);
@ -48,7 +58,10 @@ namespace NzbDrone.Api.Calendar
protected MovieResource MapToResource(Movie movie)
{
if (movie == null) return null;
if (movie == null)
{
return null;
}
var resource = movie.ToResource();

View File

@ -2,8 +2,6 @@ using System;
using System.Collections.Generic;
using System.Linq;
using NLog;
using Radarr.Http.Extensions;
using Radarr.Http.Validation;
using NzbDrone.Common;
using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.Messaging.Commands;
@ -11,7 +9,8 @@ using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.ProgressMessaging;
using NzbDrone.SignalR;
using Radarr.Http;
using Radarr.Http.Extensions;
using Radarr.Http.Validation;
namespace NzbDrone.Api.Commands
{

View File

@ -2,8 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Radarr.Http.REST;
using NzbDrone.Core.Messaging.Commands;
using Radarr.Http.REST;
namespace NzbDrone.Api.Commands
{
@ -27,30 +27,21 @@ namespace NzbDrone.Api.Commands
//Legacy
public CommandStatus State
{
get
{
return Status;
}
get { return Status; }
set { }
}
public bool Manual
{
get
{
return Trigger == CommandTrigger.Manual;
}
get { return Trigger == CommandTrigger.Manual; }
set { }
}
public DateTime StartedOn
{
get
{
return Queued;
}
get { return Queued; }
set { }
}
@ -59,37 +50,51 @@ namespace NzbDrone.Api.Commands
{
get
{
if (Started.HasValue) return Started.Value;
if (Started.HasValue)
{
return Started.Value;
}
return Ended;
}
set { }
set
{
}
}
public bool SendUpdatesToClient
{
get
{
if (Body != null) return (Body as Command).SendUpdatesToClient;
if (Body != null)
{
return (Body as Command).SendUpdatesToClient;
}
return false;
}
set { }
set
{
}
}
public bool UpdateScheduledTask
{
get
{
if (Body != null) return (Body as Command).UpdateScheduledTask;
if (Body != null)
{
return (Body as Command).UpdateScheduledTask;
}
return false;
}
set { }
set
{
}
}
public DateTime? LastExecutionTime { get; set; }
@ -99,7 +104,10 @@ namespace NzbDrone.Api.Commands
{
public static CommandResource ToResource(this CommandModel model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new CommandResource
{

View File

@ -7,7 +7,6 @@ namespace NzbDrone.Api.Config
public DownloadClientConfigModule(IConfigService configService)
: base(configService)
{
}
protected override DownloadClientConfigResource ToResource(IConfigService model)

View File

@ -1,5 +1,5 @@
using Radarr.Http.REST;
using NzbDrone.Core.Configuration;
using Radarr.Http.REST;
namespace NzbDrone.Api.Config
{

View File

@ -1,8 +1,8 @@
using Radarr.Http.REST;
using NzbDrone.Common.Http.Proxy;
using NzbDrone.Core.Authentication;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Update;
using NzbDrone.Common.Http.Proxy;
using Radarr.Http.REST;
namespace NzbDrone.Api.Config
{
@ -54,6 +54,7 @@ namespace NzbDrone.Api.Config
LaunchBrowser = model.LaunchBrowser,
AuthenticationMethod = model.AuthenticationMethod,
AnalyticsEnabled = model.AnalyticsEnabled,
//Username
//Password
LogLevel = model.LogLevel,

View File

@ -1,12 +1,11 @@
using FluentValidation;
using Radarr.Http.Validation;
using NzbDrone.Core.Configuration;
using Radarr.Http.Validation;
namespace NzbDrone.Api.Config
{
public class IndexerConfigModule : NzbDroneConfigModule<IndexerConfigResource>
{
public IndexerConfigModule(IConfigService configService)
: base(configService)
{

View File

@ -1,6 +1,6 @@
using Radarr.Http.REST;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Parser;
using Radarr.Http.REST;
namespace NzbDrone.Api.Config
{

View File

@ -1,6 +1,6 @@
using Radarr.Http.REST;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.MediaFiles;
using Radarr.Http.REST;
namespace NzbDrone.Api.Config
{

View File

@ -2,9 +2,9 @@ using System.Collections.Generic;
using System.Linq;
using FluentValidation;
using FluentValidation.Results;
using Nancy.ModelBinding;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Organizer;
using Nancy.ModelBinding;
using Radarr.Http;
namespace NzbDrone.Api.Config
@ -30,7 +30,7 @@ namespace NzbDrone.Api.Config
GetResourceById = GetNamingConfig;
UpdateResource = UpdateNamingConfig;
Get("/samples", x => GetExamples(this.Bind<NamingConfigResource>()));
Get("/samples", x => GetExamples(this.Bind<NamingConfigResource>()));
SharedValidator.RuleFor(c => c.MultiEpisodeStyle).InclusiveBetween(0, 5);
SharedValidator.RuleFor(c => c.StandardMovieFormat).ValidMovieFormat();
@ -87,11 +87,9 @@ namespace NzbDrone.Api.Config
var movieSampleResult = _filenameSampleService.GetMovieSample(nameSpec);
//var standardMovieValidationResult = _filenameValidationService.ValidateMovieFilename(movieSampleResult); For now, let's hope the user is not stupid enough :/
var validationFailures = new List<ValidationFailure>();
//validationFailures.AddIfNotNull(standardMovieValidationResult);
if (validationFailures.Any())
{
throw new ValidationException(validationFailures.DistinctBy(v => v.PropertyName).ToArray());

View File

@ -1,5 +1,5 @@
using Radarr.Http.REST;
using NzbDrone.Core.Organizer;
using Radarr.Http.REST;
namespace NzbDrone.Api.Config
{
@ -33,6 +33,7 @@ namespace NzbDrone.Api.Config
MultiEpisodeStyle = model.MultiEpisodeStyle,
StandardMovieFormat = model.StandardMovieFormat,
MovieFolderFormat = model.MovieFolderFormat
//IncludeSeriesTitle
//IncludeEpisodeTitle
//IncludeQuality

View File

@ -1,11 +1,10 @@
using Radarr.Http.Validation;
using NzbDrone.Core.Configuration;
using Radarr.Http.Validation;
namespace NzbDrone.Api.Config
{
public class NetImportConfigModule : NzbDroneConfigModule<NetImportConfigResource>
{
public NetImportConfigModule(IConfigService configService)
: base(configService)
{

View File

@ -1,5 +1,5 @@
using Radarr.Http.REST;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Configuration;
using Radarr.Http.REST;
namespace NzbDrone.Api.Config
{

View File

@ -1,12 +1,13 @@
using System.Linq;
using System.Reflection;
using NzbDrone.Core.Configuration;
using Radarr.Http;
using Radarr.Http.REST;
using NzbDrone.Core.Configuration;
namespace NzbDrone.Api.Config
{
public abstract class NzbDroneConfigModule<TResource> : RadarrRestModule<TResource> where TResource : RestResource, new()
public abstract class NzbDroneConfigModule<TResource> : RadarrRestModule<TResource>
where TResource : RestResource, new()
{
private readonly IConfigService _configService;
@ -15,8 +16,8 @@ namespace NzbDrone.Api.Config
{
}
protected NzbDroneConfigModule(string resource, IConfigService configService) :
base("config/" + resource.Trim('/'))
protected NzbDroneConfigModule(string resource, IConfigService configService)
: base("config/" + resource.Trim('/'))
{
_configService = configService;

View File

@ -7,7 +7,6 @@ namespace NzbDrone.Api.Config
public UiConfigModule(IConfigService configService)
: base(configService)
{
}
protected override UiConfigResource ToResource(IConfigService model)

View File

@ -1,5 +1,5 @@
using Radarr.Http.REST;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Configuration;
using Radarr.Http.REST;
namespace NzbDrone.Api.Config
{

View File

@ -4,7 +4,7 @@ using Radarr.Http;
namespace NzbDrone.Api.DiskSpace
{
public class DiskSpaceModule :RadarrRestModule<DiskSpaceResource>
public class DiskSpaceModule : RadarrRestModule<DiskSpaceResource>
{
private readonly IDiskSpaceService _diskSpaceService;
@ -15,7 +15,6 @@ namespace NzbDrone.Api.DiskSpace
GetResourceAll = GetFreeSpace;
}
public List<DiskSpaceResource> GetFreeSpace()
{
return _diskSpaceService.GetFreeSpace().ConvertAll(DiskSpaceResourceMapper.MapToResource);

View File

@ -14,7 +14,10 @@ namespace NzbDrone.Api.DiskSpace
{
public static DiskSpaceResource MapToResource(this Core.DiskSpace.DiskSpace model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new DiskSpaceResource
{

View File

@ -29,7 +29,11 @@ namespace NzbDrone.Api.DownloadClient
protected override void Validate(DownloadClientDefinition definition, bool includeWarnings)
{
if (!definition.Enable) return;
if (!definition.Enable)
{
return;
}
base.Validate(definition, includeWarnings);
}
}

View File

@ -1,10 +1,10 @@
using System.Collections.Generic;
using Radarr.Http.REST;
using NzbDrone.Core.Extras.Files;
using NzbDrone.Core.Extras.Metadata.Files;
using NzbDrone.Core.Extras.Others;
using NzbDrone.Core.Extras.Subtitles;
using Radarr.Http;
using Radarr.Http.REST;
namespace NzbDrone.Api.ExtraFiles
{

View File

@ -1,10 +1,10 @@
using System.Collections.Generic;
using System.Linq;
using Radarr.Http.REST;
using NzbDrone.Core.Extras.Files;
using NzbDrone.Core.Extras.Metadata.Files;
using NzbDrone.Core.Extras.Others;
using NzbDrone.Core.Extras.Subtitles;
using Radarr.Http.REST;
namespace NzbDrone.Api.ExtraFiles
{
@ -21,7 +21,10 @@ namespace NzbDrone.Api.ExtraFiles
{
public static ExtraFileResource ToResource(this MetadataFile model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new ExtraFileResource
{
@ -36,7 +39,10 @@ namespace NzbDrone.Api.ExtraFiles
public static ExtraFileResource ToResource(this SubtitleFile model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new ExtraFileResource
{
@ -51,7 +57,10 @@ namespace NzbDrone.Api.ExtraFiles
public static ExtraFileResource ToResource(this OtherExtraFile model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new ExtraFileResource
{
@ -78,6 +87,5 @@ namespace NzbDrone.Api.ExtraFiles
{
return movies.Select(ToResource).ToList();
}
}
}

View File

@ -1,10 +1,10 @@
using System.IO;
using System.Linq;
using Nancy;
using Radarr.Http.Extensions;
using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.MediaFiles;
using Radarr.Http.Extensions;
namespace NzbDrone.Api.FileSystem
{
@ -22,9 +22,9 @@ namespace NzbDrone.Api.FileSystem
_fileSystemLookupService = fileSystemLookupService;
_diskProvider = diskProvider;
_diskScanService = diskScanService;
Get("/", x => GetContents());
Get("/type", x => GetEntityType());
Get("/mediafiles", x => GetMediaFiles());
Get("/", x => GetContents());
Get("/type", x => GetEntityType());
Get("/mediafiles", x => GetMediaFiles());
}
private object GetContents()
@ -60,7 +60,8 @@ namespace NzbDrone.Api.FileSystem
return new string[0];
}
return _diskScanService.GetVideoFiles(path).Select(f => new {
return _diskScanService.GetVideoFiles(path).Select(f => new
{
Path = f,
RelativePath = path.GetRelativePath(f),
Name = Path.GetFileName(f)

View File

@ -1,8 +1,8 @@
using System.Collections.Generic;
using System.Linq;
using Radarr.Http.REST;
using NzbDrone.Common.Http;
using NzbDrone.Core.HealthCheck;
using Radarr.Http.REST;
namespace NzbDrone.Api.Health
{
@ -17,7 +17,10 @@ namespace NzbDrone.Api.Health
{
public static HealthResource ToResource(this HealthCheck model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new HealthResource
{

View File

@ -3,10 +3,10 @@ using System.Linq;
using Nancy;
using NzbDrone.Api.Movies;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Download;
using NzbDrone.Core.History;
using Radarr.Http;
using NzbDrone.Core.DecisionEngine.Specifications;
namespace NzbDrone.Api.History
{
@ -25,7 +25,7 @@ namespace NzbDrone.Api.History
_failedDownloadService = failedDownloadService;
GetResourcePaged = GetHistory;
Post("/failed", x => MarkAsFailed());
Post("/failed", x => MarkAsFailed());
}
protected HistoryResource MapToResource(Core.History.History model)

View File

@ -1,10 +1,9 @@
using System;
using System.Collections.Generic;
using Radarr.Http.REST;
using NzbDrone.Api.Movies;
using NzbDrone.Core.History;
using NzbDrone.Core.Qualities;
using Radarr.Http.REST;
namespace NzbDrone.Api.History
{
@ -27,7 +26,10 @@ namespace NzbDrone.Api.History
{
public static HistoryResource ToResource(this Core.History.History model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new HistoryResource
{
@ -35,13 +37,14 @@ namespace NzbDrone.Api.History
MovieId = model.MovieId,
SourceTitle = model.SourceTitle,
Quality = model.Quality,
//QualityCutoffNotMet
Date = model.Date,
DownloadId = model.DownloadId,
EventType = model.EventType,
Data = model.Data
Data = model.Data
};
}
}

View File

@ -31,7 +31,11 @@ namespace NzbDrone.Api.Indexers
protected override void Validate(IndexerDefinition definition, bool includeWarnings)
{
if (!definition.Enable) return;
if (!definition.Enable)
{
return;
}
base.Validate(definition, includeWarnings);
}
}

View File

@ -2,15 +2,15 @@ using System;
using System.Collections.Generic;
using FluentValidation;
using Nancy;
using Nancy.ModelBinding;
using NLog;
using NzbDrone.Common.Cache;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download;
using NzbDrone.Core.Exceptions;
using NzbDrone.Core.IndexerSearch;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.IndexerSearch;
using NzbDrone.Core.Parser.Model;
using Nancy.ModelBinding;
using NzbDrone.Common.Cache;
using HttpStatusCode = System.Net.HttpStatusCode;
namespace NzbDrone.Api.Indexers
@ -42,7 +42,7 @@ namespace NzbDrone.Api.Indexers
_logger = logger;
GetResourceAll = GetReleases;
Post("/", x => DownloadRelease(this.Bind<ReleaseResource>()));
Post("/", x => DownloadRelease(this.Bind<ReleaseResource>()));
//PostValidator.RuleFor(s => s.DownloadAllowed).Equal(true);
PostValidator.RuleFor(s => s.Guid).NotEmpty();
@ -60,6 +60,7 @@ namespace NzbDrone.Api.Indexers
return new NotFoundResponse();
}
try
{
_downloadService.DownloadReport(remoteMovie);
@ -115,10 +116,9 @@ namespace NzbDrone.Api.Indexers
protected override ReleaseResource MapDecision(DownloadDecision decision, int initialWeight)
{
_remoteMovieCache.Set(decision.RemoteMovie.Release.Guid, decision.RemoteMovie, TimeSpan.FromMinutes(30));
_remoteMovieCache.Set(decision.RemoteMovie.Release.Guid, decision.RemoteMovie, TimeSpan.FromMinutes(30));
return base.MapDecision(decision, initialWeight);
return base.MapDecision(decision, initialWeight);
}
}
}

View File

@ -1,17 +1,17 @@
using FluentValidation;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download;
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Core.Parser.Model;
using FluentValidation;
using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Api.Indexers
{
class ReleasePushModule : ReleaseModuleBase
public class ReleasePushModule : ReleaseModuleBase
{
private readonly IMakeDownloadDecision _downloadDecisionMaker;
private readonly IProcessDownloadDecisions _downloadDecisionProcessor;
@ -28,7 +28,7 @@ namespace NzbDrone.Api.Indexers
_indexerFactory = indexerFactory;
_logger = logger;
Post("/push", x => ProcessRelease(ReadResourceFromRequest()));
Post("/push", x => ProcessRelease(ReadResourceFromRequest()));
PostValidator.RuleFor(s => s.Title).NotEmpty();
PostValidator.RuleFor(s => s.DownloadUrl).NotEmpty();

View File

@ -1,14 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Radarr.Http.REST;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Languages;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.DecisionEngine;
using System.Linq;
using NzbDrone.Core.Qualities;
using Radarr.Http.REST;
namespace NzbDrone.Api.Indexers
{
@ -56,7 +56,6 @@ namespace NzbDrone.Api.Indexers
public int? Leechers { get; set; }
public DownloadProtocol Protocol { get; set; }
// TODO: Remove in v3
// Used to support the original Release Push implementation
// JsonIgnore so we don't serialize it, but can still parse it
@ -122,8 +121,8 @@ namespace NzbDrone.Api.Indexers
DownloadUrl = releaseInfo.DownloadUrl,
InfoUrl = releaseInfo.InfoUrl,
MappingResult = mappingResult,
//ReleaseWeight
//ReleaseWeight
SuspectedMovieId = movieId,
MagnetUrl = torrentInfo.MagnetUrl,
@ -136,7 +135,6 @@ namespace NzbDrone.Api.Indexers
//Special = parsedMovieInfo.Special,
};
}
public static ReleaseInfo ToModel(this ReleaseResource resource)

View File

@ -26,7 +26,7 @@ namespace NzbDrone.Api.Logs
_configFileProvider = configFileProvider;
GetResourceAll = GetLogFilesResponse;
Get(LOGFILE_ROUTE, options => GetLogFileResponse(options.filename));
Get(LOGFILE_ROUTE, options => GetLogFileResponse(options.filename));
}
private List<LogFileResource> GetLogFilesResponse()
@ -60,7 +60,9 @@ namespace NzbDrone.Api.Logs
var filePath = GetLogFilePath(filename);
if (!_diskProvider.FileExists(filePath))
{
return new NotFoundResponse();
}
var data = _diskProvider.ReadAllText(filePath);

View File

@ -17,7 +17,10 @@ namespace NzbDrone.Api.Logs
{
public static LogResource ToResource(this Core.Instrumentation.Log model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new LogResource
{

View File

@ -25,7 +25,10 @@ namespace NzbDrone.Api.Logs
protected override IEnumerable<string> GetLogFiles()
{
if (!_diskProvider.FolderExists(_appFolderInfo.GetUpdateLogFolder())) return Enumerable.Empty<string>();
if (!_diskProvider.FolderExists(_appFolderInfo.GetUpdateLogFolder()))
{
return Enumerable.Empty<string>();
}
return _diskProvider.GetFiles(_appFolderInfo.GetUpdateLogFolder(), SearchOption.TopDirectoryOnly)
.Where(f => Regex.IsMatch(Path.GetFileName(f), LOGFILE_ROUTE.TrimStart('/'), RegexOptions.IgnoreCase))

View File

@ -1,10 +1,10 @@
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Api.Movies;
using Radarr.Http.REST;
using NzbDrone.Common.Crypto;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Qualities;
using Radarr.Http.REST;
namespace NzbDrone.Api.ManualImport
{
@ -25,7 +25,10 @@ namespace NzbDrone.Api.ManualImport
{
public static ManualImportResource ToResource(this Core.MediaFiles.MovieImport.Manual.ManualImportItem model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new ManualImportResource
{
@ -37,6 +40,7 @@ namespace NzbDrone.Api.ManualImport
Size = model.Size,
Movie = model.Movie.ToResource(),
Quality = model.Quality,
//QualityWeight
DownloadId = model.DownloadId,
Rejections = model.Rejections

View File

@ -10,19 +10,19 @@ namespace NzbDrone.Api.MediaCovers
{
public class MediaCoverModule : NzbDroneApiModule
{
private const string MEDIA_COVER_ROUTE = @"/(?<movieId>\d+)/(?<filename>(.+)\.(jpg|png|gif))";
private static readonly Regex RegexResizedImage = new Regex(@"-\d+\.jpg$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private const string MEDIA_COVER_ROUTE = @"/(?<seriesId>\d+)/(?<filename>(.+)\.(jpg|png|gif))";
private readonly IAppFolderInfo _appFolderInfo;
private readonly IDiskProvider _diskProvider;
public MediaCoverModule(IAppFolderInfo appFolderInfo, IDiskProvider diskProvider) : base("MediaCover")
public MediaCoverModule(IAppFolderInfo appFolderInfo, IDiskProvider diskProvider)
: base("MediaCover")
{
_appFolderInfo = appFolderInfo;
_diskProvider = diskProvider;
Get(MEDIA_COVER_ROUTE, options => GetMediaCover(options.seriesId, options.filename));
Get(MEDIA_COVER_ROUTE, options => GetMediaCover(options.seriesId, options.filename));
}
private object GetMediaCover(int seriesId, string filename)
@ -38,6 +38,7 @@ namespace NzbDrone.Api.MediaCovers
{
return new NotFoundResponse();
}
filePath = basefilePath;
}

View File

@ -25,7 +25,11 @@ namespace NzbDrone.Api.Metadata
protected override void Validate(MetadataDefinition definition, bool includeWarnings)
{
if (!definition.Enable) return;
if (!definition.Enable)
{
return;
}
base.Validate(definition, includeWarnings);
}
}

View File

@ -1,13 +1,13 @@
using System.IO;
using NLog;
using Radarr.Http;
using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Movies;
using NzbDrone.SignalR;
using NzbDrone.Core.DecisionEngine.Specifications;
using Radarr.Http;
namespace NzbDrone.Api.MovieFiles
{
@ -44,7 +44,6 @@ namespace NzbDrone.Api.MovieFiles
return movie.ToResource();
}
private void SetQuality(MovieFileResource movieFileResource)
{
var movieFile = _mediaFileService.GetMovie(movieFileResource.Id);

View File

@ -1,10 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Radarr.Http.REST;
using NzbDrone.Api.Movies;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.Qualities;
using Radarr.Http.REST;
namespace NzbDrone.Api.MovieFiles
{
@ -12,13 +12,11 @@ namespace NzbDrone.Api.MovieFiles
{
public MovieFileResource()
{
}
//Todo: Sorters should be done completely on the client
//Todo: Is there an easy way to keep IgnoreArticlesWhenSorting in sync between, Series, History, Missing?
//Todo: We should get the entire Profile instead of ID and Name separately
public int MovieId { get; set; }
public string RelativePath { get; set; }
public string Path { get; set; }
@ -38,7 +36,10 @@ namespace NzbDrone.Api.MovieFiles
{
public static MovieFileResource ToResource(this MovieFile model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
MovieResource movie = null;
@ -69,11 +70,13 @@ namespace NzbDrone.Api.MovieFiles
public static MovieFile ToModel(this MovieFileResource resource)
{
if (resource == null) return null;
if (resource == null)
{
return null;
}
return new MovieFile
{
};
}

View File

@ -1,7 +1,7 @@
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.MetadataSource.RadarrAPI;
using NzbDrone.Core.Movies.AlternativeTitles;
using NzbDrone.Core.Movies;
using NzbDrone.Core.Movies.AlternativeTitles;
using NzbDrone.Core.Movies.Events;
using Radarr.Http;

View File

@ -1,8 +1,8 @@
using System.Collections.Generic;
using System.Linq;
using Radarr.Http.REST;
using NzbDrone.Core.Movies.AlternativeTitles;
using NzbDrone.Core.Languages;
using NzbDrone.Core.Movies.AlternativeTitles;
using Radarr.Http.REST;
namespace NzbDrone.Api.Movies
{
@ -10,13 +10,11 @@ namespace NzbDrone.Api.Movies
{
public AlternativeTitleResource()
{
}
//Todo: Sorters should be done completely on the client
//Todo: Is there an easy way to keep IgnoreArticlesWhenSorting in sync between, Series, History, Missing?
//Todo: We should get the entire Profile instead of ID and Name separately
public SourceType SourceType { get; set; }
public int MovieId { get; set; }
public string Title { get; set; }
@ -33,7 +31,10 @@ namespace NzbDrone.Api.Movies
{
public static AlternativeTitleResource ToResource(this AlternativeTitle model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new AlternativeTitleResource
{
@ -50,7 +51,10 @@ namespace NzbDrone.Api.Movies
public static AlternativeTitle ToModel(this AlternativeTitleResource resource)
{
if (resource == null) return null;
if (resource == null)
{
return null;
}
return new AlternativeTitle
{

View File

@ -6,13 +6,11 @@ namespace NzbDrone.Api.Movies
{
public AlternativeYearResource()
{
}
//Todo: Sorters should be done completely on the client
//Todo: Is there an easy way to keep IgnoreArticlesWhenSorting in sync between, Series, History, Missing?
//Todo: We should get the entire Profile instead of ID and Name separately
public int MovieId { get; set; }
public int Year { get; set; }

View File

@ -1,8 +1,8 @@
using System.Collections.Generic;
using System.Linq;
using Nancy;
using NzbDrone.Core.MediaCover;
using NzbDrone.Core.MetadataSource;
using System.Linq;
using NzbDrone.Core.NetImport;
using Radarr.Http;
@ -18,13 +18,12 @@ namespace NzbDrone.Api.Movies
{
_fetchNetImport = netImport;
_movieSearch = movieSearch;
Get("/", x => Search());
Get("/", x => Search());
}
private object Search()
{
var results = _fetchNetImport.FetchAndFilter((int) Request.Query.listId, false);
var results = _fetchNetImport.FetchAndFilter((int)Request.Query.listId, false);
List<Core.Movies.Movie> realResults = new List<Core.Movies.Movie>();
@ -41,7 +40,6 @@ namespace NzbDrone.Api.Movies
return MapToResource(results);
}
private static IEnumerable<MovieResource> MapToResource(IEnumerable<Core.Movies.Movie> movies)
{
foreach (var currentSeries in movies)

View File

@ -1,23 +1,22 @@
using System.Collections.Generic;
using Nancy;
using NzbDrone.Core.MediaCover;
using NzbDrone.Core.MetadataSource;
using NzbDrone.Core.Parser;
using System.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using Nancy;
using NzbDrone.Common.Cache;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.MediaCover;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.MovieImport;
using NzbDrone.Core.RootFolders;
using NzbDrone.Common.Cache;
using NzbDrone.Core.MetadataSource;
using NzbDrone.Core.Movies;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Profiles;
using NzbDrone.Core.RootFolders;
using Radarr.Http;
namespace NzbDrone.Api.Movies
{
public class UnmappedComparer : IComparer<UnmappedFolder>
{
public int Compare(UnmappedFolder a, UnmappedFolder b)
@ -37,10 +36,14 @@ namespace NzbDrone.Api.Movies
private readonly IProfileService _profileService;
private readonly IMovieService _movieService;
public MovieBulkImportModule(ISearchForNewMovie searchProxy, IRootFolderService rootFolderService,
public MovieBulkImportModule(ISearchForNewMovie searchProxy,
IRootFolderService rootFolderService,
IMakeImportDecision importDecisionMaker,
IDiskScanService diskScanService, ICacheManager cacheManager,
IParsingService parsingService, IProfileService profileService, IMovieService movieService)
IDiskScanService diskScanService,
ICacheManager cacheManager,
IParsingService parsingService,
IProfileService profileService,
IMovieService movieService)
: base("/movies/bulkimport")
{
_searchProxy = searchProxy;
@ -51,10 +54,9 @@ namespace NzbDrone.Api.Movies
_movieService = movieService;
_profileService = profileService;
_parsingService = parsingService;
Get("/", x => Search());
Get("/", x => Search());
}
private object Search()
{
if (Request.Query.Id == 0)
@ -84,7 +86,7 @@ namespace NzbDrone.Api.Movies
max = total_count >= max ? max : total_count;
var paged = unmapped.GetRange(min, max-min);
var paged = unmapped.GetRange(min, max - min);
var mapped = paged.Select(f =>
{
@ -167,7 +169,6 @@ namespace NzbDrone.Api.Movies
};
}
private static IEnumerable<MovieResource> MapToResource(IEnumerable<Core.Movies.Movie> movies)
{
foreach (var currentMovie in movies)

View File

@ -1,10 +1,10 @@
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Api.NetImport;
using NzbDrone.Core.MediaCover;
using NzbDrone.Core.MetadataSource;
using System.Linq;
using Radarr.Http;
using NzbDrone.Core.NetImport;
using NzbDrone.Api.NetImport;
using Radarr.Http;
namespace NzbDrone.Api.Movies
{
@ -18,8 +18,8 @@ namespace NzbDrone.Api.Movies
{
_searchProxy = searchProxy;
_netImportFactory = netImportFactory;
Get("/lists", x => GetLists());
Get("/{action?recommendations}", x => Search(x.action));
Get("/lists", x => GetLists());
Get("/{action?recommendations}", x => Search(x.action));
}
private object Search(string action)
@ -32,7 +32,8 @@ namespace NzbDrone.Api.Movies
{
var lists = _netImportFactory.Discoverable();
return lists.Select(definition => {
return lists.Select(definition =>
{
var resource = new NetImportResource();
resource.Id = definition.Definition.Id;

View File

@ -2,8 +2,8 @@ using System;
using System.Collections.Generic;
using System.Linq;
using Nancy;
using Radarr.Http.Extensions;
using NzbDrone.Core.Movies;
using Radarr.Http.Extensions;
namespace NzbDrone.Api.Movies
{
@ -15,19 +15,19 @@ namespace NzbDrone.Api.Movies
: base("/movie/editor")
{
_movieService = movieService;
Put("/", Movie => SaveAll());
Put("/delete", Movie => DeleteSelected());
Put("/", movie => SaveAll());
Put("/delete", movie => DeleteSelected());
}
private object SaveAll()
{
var resources = Request.Body.FromJson<List<MovieResource>>();
var Movie = resources.Select(MovieResource => MovieResource.ToModel(_movieService.GetMovie(MovieResource.Id))).ToList();
var movie = resources.Select(movieResource => movieResource.ToModel(_movieService.GetMovie(movieResource.Id))).ToList();
return ResponseWithCode(_movieService.UpdateMovie(Movie)
.ToResource()
, HttpStatusCode.Accepted);
return ResponseWithCode(_movieService.UpdateMovie(movie)
.ToResource(),
HttpStatusCode.Accepted);
}
private object DeleteSelected()
@ -41,10 +41,12 @@ namespace NzbDrone.Api.Movies
{
deleteFiles = Convert.ToBoolean(deleteFilesQuery.Value);
}
if (addExclusionQuery.HasValue)
{
addExclusion = Convert.ToBoolean(addExclusionQuery.Value);
}
var ids = Request.Body.FromJson<List<int>>();
foreach (var id in ids)

View File

@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Nancy;
using NzbDrone.Core.MediaCover;
using NzbDrone.Core.MetadataSource;
using System.Linq;
using System;
using Radarr.Http;
using Radarr.Http.REST;
@ -19,15 +19,15 @@ namespace NzbDrone.Api.Movies
{
_movieInfo = movieInfo;
_searchProxy = searchProxy;
Get("/", x => Search());
Get("/tmdb", x => SearchByTmdbId());
Get("/imdb", x => SearchByImdbId());
Get("/", x => Search());
Get("/tmdb", x => SearchByTmdbId());
Get("/imdb", x => SearchByImdbId());
}
private object SearchByTmdbId()
{
int tmdbId = -1;
if(Int32.TryParse(Request.Query.tmdbId, out tmdbId))
if (int.TryParse(Request.Query.tmdbId, out tmdbId))
{
var result = _movieInfo.GetMovieInfo(tmdbId, null, true);
return result.ToResource();

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using FluentValidation;
using Nancy;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.MediaCover;
@ -9,10 +10,9 @@ using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Movies;
using NzbDrone.Core.Movies.Events;
using NzbDrone.Core.Validation.Paths;
using NzbDrone.Core.Validation;
using NzbDrone.Core.Validation.Paths;
using NzbDrone.SignalR;
using Nancy;
using Radarr.Http;
namespace NzbDrone.Api.Movies
@ -25,24 +25,22 @@ namespace NzbDrone.Api.Movies
IHandle<MovieDeletedEvent>,
IHandle<MovieRenamedEvent>,
IHandle<MediaCoversUpdatedEvent>
{
private const string TITLE_SLUG_ROUTE = "/titleslug/(?<slug>[^/]+)";
protected readonly IMovieService _moviesService;
private readonly IMapCoversToLocal _coverMapper;
private const string TITLE_SLUG_ROUTE = "/titleslug/(?<slug>[^/]+)";
public MovieModule(IBroadcastSignalRMessage signalRBroadcaster,
IMovieService moviesService,
IMapCoversToLocal coverMapper,
RootFolderValidator rootFolderValidator,
MoviePathValidator moviesPathValidator,
MovieExistsValidator moviesExistsValidator,
MovieAncestorValidator moviesAncestorValidator,
SystemFolderValidator systemFolderValidator,
ProfileExistsValidator profileExistsValidator
)
: base(signalRBroadcaster)
IMovieService moviesService,
IMapCoversToLocal coverMapper,
RootFolderValidator rootFolderValidator,
MoviePathValidator moviesPathValidator,
MovieExistsValidator moviesExistsValidator,
MovieAncestorValidator moviesAncestorValidator,
SystemFolderValidator systemFolderValidator,
ProfileExistsValidator profileExistsValidator)
: base(signalRBroadcaster)
{
_moviesService = moviesService;
@ -84,7 +82,10 @@ namespace NzbDrone.Api.Movies
protected MovieResource MapToResource(Movie movies)
{
if (movies == null) return null;
if (movies == null)
{
return null;
}
var resource = movies.ToResource();
MapCoversToLocal(resource);
@ -128,6 +129,7 @@ namespace NzbDrone.Api.Movies
{
deleteFiles = Convert.ToBoolean(deleteFilesQuery.Value);
}
if (addExclusionQuery.HasValue)
{
addExclusion = Convert.ToBoolean(addExclusionQuery.Value);
@ -151,7 +153,10 @@ namespace NzbDrone.Api.Movies
public void Handle(MovieFileDeletedEvent message)
{
if (message.Reason == DeleteMediaFileReason.Upgrade) return;
if (message.Reason == DeleteMediaFileReason.Upgrade)
{
return;
}
BroadcastResourceChange(ModelAction.Updated, message.MovieFile.MovieId);
}

View File

@ -65,7 +65,6 @@ namespace NzbDrone.Api.Movies
//add a grabbed field in MovieResource?
//resource.Grabbed = true;
BroadcastResourceChange(ModelAction.Updated, resource);
}

View File

@ -1,10 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Radarr.Http.REST;
using NzbDrone.Api.MovieFiles;
using NzbDrone.Core.MediaCover;
using NzbDrone.Core.Movies;
using NzbDrone.Api.MovieFiles;
using Radarr.Http.REST;
namespace NzbDrone.Api.Movies
{
@ -64,6 +64,7 @@ namespace NzbDrone.Api.Movies
public DateTime Added { get; set; }
public AddMovieOptions AddOptions { get; set; }
public Ratings Ratings { get; set; }
//public List<string> AlternativeTitles { get; set; }
public MovieFileResource MovieFile { get; set; }
@ -90,15 +91,15 @@ namespace NzbDrone.Api.Movies
{
public static MovieResource ToResource(this Core.Movies.Movie model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
long size = model.MovieFile?.Size ?? 0;
bool downloaded = model.MovieFile != null;
MovieFileResource movieFile = model.MovieFile?.ToResource();
/*if(model.MovieFile != null)
{
model.MovieFile.LazyLoad();
@ -112,12 +113,12 @@ namespace NzbDrone.Api.Movies
}*/
//model.AlternativeTitles.LazyLoad();
return new MovieResource
{
Id = model.Id,
TmdbId = model.TmdbId,
Title = model.Title,
//AlternateTitles
SortTitle = model.SortTitle,
InCinemas = model.InCinemas,
@ -125,12 +126,14 @@ namespace NzbDrone.Api.Movies
PhysicalReleaseNote = model.PhysicalReleaseNote,
HasFile = model.HasFile,
Downloaded = downloaded,
//TotalEpisodeCount
//EpisodeCount
//EpisodeFileCount
SizeOnDisk = size,
Status = model.Status,
Overview = model.Overview,
//NextAiring
//PreviousAiring
Images = model.Images,
@ -150,7 +153,6 @@ namespace NzbDrone.Api.Movies
FolderName = model.FolderName(),
//SizeOnDisk = size,
Runtime = model.Runtime,
LastInfoSync = model.LastInfoSync,
CleanTitle = model.CleanTitle,
@ -173,7 +175,10 @@ namespace NzbDrone.Api.Movies
public static Core.Movies.Movie ToModel(this MovieResource resource)
{
if (resource == null) return null;
if (resource == null)
{
return null;
}
return new Core.Movies.Movie
{
@ -181,16 +186,19 @@ namespace NzbDrone.Api.Movies
TmdbId = resource.TmdbId,
Title = resource.Title,
//AlternateTitles
SortTitle = resource.SortTitle,
InCinemas = resource.InCinemas,
PhysicalRelease = resource.PhysicalRelease,
PhysicalReleaseNote = resource.PhysicalReleaseNote,
//TotalEpisodeCount
//EpisodeCount
//EpisodeFileCount
//SizeOnDisk
Overview = resource.Overview,
//NextAiring
//PreviousAiring
Images = resource.Images,
@ -218,6 +226,7 @@ namespace NzbDrone.Api.Movies
Tags = resource.Tags,
Added = resource.Added,
AddOptions = resource.AddOptions,
//AlternativeTitles = resource.AlternativeTitles,
Ratings = resource.Ratings,
YouTubeTrailerId = resource.YouTubeTrailerId,

View File

@ -1,7 +1,7 @@
using Radarr.Http.REST;
using NzbDrone.Core.MediaFiles;
using System.Collections.Generic;
using NzbDrone.Core.MediaFiles;
using Radarr.Http;
using Radarr.Http.REST;
namespace NzbDrone.Api.Movies
{
@ -19,7 +19,7 @@ namespace NzbDrone.Api.Movies
private List<RenameMovieResource> GetMovies()
{
if(!Request.Query.MovieId.HasValue)
if (!Request.Query.MovieId.HasValue)
{
throw new BadRequestException("movieId is missing");
}
@ -28,6 +28,5 @@ namespace NzbDrone.Api.Movies
return _renameMovieFileService.GetRenamePreviews(movieId).ToResource();
}
}
}

View File

@ -1,6 +1,6 @@
using Radarr.Http.REST;
using System.Collections.Generic;
using System.Linq;
using Radarr.Http.REST;
namespace NzbDrone.Api.Movies
{
@ -16,7 +16,10 @@ namespace NzbDrone.Api.Movies
{
public static RenameMovieResource ToResource(this Core.MediaFiles.RenameMovieFilePreview model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new RenameMovieResource
{

View File

@ -9,7 +9,8 @@ namespace NzbDrone.Api.NetImport
{
private readonly IImportExclusionsService _exclusionService;
public ImportExclusionsModule(NetImportFactory netImportFactory, IImportExclusionsService exclusionService) : base("exclusions")
public ImportExclusionsModule(NetImportFactory netImportFactory, IImportExclusionsService exclusionService)
: base("exclusions")
{
_exclusionService = exclusionService;
GetResourceAll = GetAll;
@ -35,7 +36,7 @@ namespace NzbDrone.Api.NetImport
return _exclusionService.AddExclusion(model).Id;
}
public void RemoveExclusion (int id)
public void RemoveExclusion(int id)
{
_exclusionService.RemoveExclusion(new ImportExclusion { Id = id });
}

View File

@ -15,7 +15,10 @@ namespace NzbDrone.Api.NetImport
{
public static ImportExclusionsResource ToResource(this Core.NetImport.ImportExclusions.ImportExclusion model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new ImportExclusionsResource
{

View File

@ -2,10 +2,10 @@ using System.Collections.Generic;
using System.Linq;
using Nancy;
using Nancy.Extensions;
using Radarr.Http.Extensions;
using NzbDrone.Api.Movies;
using NzbDrone.Core.MetadataSource;
using NzbDrone.Core.Movies;
using Radarr.Http.Extensions;
namespace NzbDrone.Api.NetImport
{
@ -19,16 +19,16 @@ namespace NzbDrone.Api.NetImport
{
_movieService = movieService;
_movieSearch = movieSearch;
Put("/", Movie => SaveAll());
Put("/", movie => SaveAll());
}
private object SaveAll()
{
var resources = Request.Body.FromJson<List<MovieResource>>();
var Movies = resources.Select(MovieResource => _movieSearch.MapMovieToTmdbMovie(MovieResource.ToModel())).Where(m => m != null).DistinctBy(m => m.TmdbId).ToList();
var movies = resources.Select(movieResource => _movieSearch.MapMovieToTmdbMovie(movieResource.ToModel())).Where(m => m != null).DistinctBy(m => m.TmdbId).ToList();
return ResponseWithCode(_movieService.AddMovies(Movies).ToResource(), HttpStatusCode.Accepted);
return ResponseWithCode(_movieService.AddMovies(movies).ToResource(), HttpStatusCode.Accepted);
}
}
}

View File

@ -6,7 +6,8 @@ namespace NzbDrone.Api.NetImport
{
public class NetImportModule : ProviderModuleBase<NetImportResource, INetImport, NetImportDefinition>
{
public NetImportModule(NetImportFactory netImportFactory) : base(netImportFactory, "netimport")
public NetImportModule(NetImportFactory netImportFactory)
: base(netImportFactory, "netimport")
{
PostValidator.RuleFor(c => c.RootFolderPath).IsValidPath();
PostValidator.RuleFor(c => c.MinimumAvailability).NotNull();
@ -41,7 +42,11 @@ namespace NzbDrone.Api.NetImport
protected override void Validate(NetImportDefinition definition, bool includeWarnings)
{
if (!definition.Enable) return;
if (!definition.Enable)
{
return;
}
base.Validate(definition, includeWarnings);
}
}

View File

@ -41,7 +41,11 @@ namespace NzbDrone.Api.Notifications
protected override void Validate(NotificationDefinition definition, bool includeWarnings)
{
if (!definition.OnGrab && !definition.OnDownload) return;
if (!definition.OnGrab && !definition.OnDownload)
{
return;
}
base.Validate(definition, includeWarnings);
}
}

View File

@ -21,7 +21,6 @@ namespace NzbDrone.Api.Parse
var title = Request.Query.Title.Value as string;
var parsedMovieInfo = _parsingService.ParseMovieInfo(title, new List<object>());
if (parsedMovieInfo == null)
{
return null;

View File

@ -1,6 +1,6 @@
using NzbDrone.Api.Movies;
using Radarr.Http.REST;
using NzbDrone.Core.Parser.Model;
using Radarr.Http.REST;
namespace NzbDrone.Api.Parse
{

View File

@ -1,9 +1,9 @@
using System.Collections.Generic;
using FluentValidation;
using Radarr.Http.REST;
using Radarr.Http.Validation;
using NzbDrone.Core.Profiles.Delay;
using Radarr.Http;
using Radarr.Http.REST;
using Radarr.Http.Validation;
namespace NzbDrone.Api.Profiles.Delay
{

View File

@ -1,8 +1,8 @@
using System.Collections.Generic;
using System.Linq;
using Radarr.Http.REST;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Profiles.Delay;
using Radarr.Http.REST;
namespace NzbDrone.Api.Profiles.Delay
{
@ -21,7 +21,10 @@ namespace NzbDrone.Api.Profiles.Delay
{
public static DelayProfileResource ToResource(this DelayProfile model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new DelayProfileResource
{
@ -39,7 +42,10 @@ namespace NzbDrone.Api.Profiles.Delay
public static DelayProfile ToModel(this DelayProfileResource resource)
{
if (resource == null) return null;
if (resource == null)
{
return null;
}
return new DelayProfile
{

View File

@ -27,12 +27,12 @@ namespace NzbDrone.Api.Profiles.Languages
private List<LanguageResource> GetAll()
{
return ((Language[])Enum.GetValues(typeof (Language)))
return ((Language[])Enum.GetValues(typeof(Language)))
.Select(l => new LanguageResource
{
Id = (int) l,
Name = l.ToString()
})
{
Id = (int)l,
Name = l.ToString()
})
.OrderBy(l => l.Name)
.ToList();
}

View File

@ -3,7 +3,7 @@ using Nancy;
namespace NzbDrone.Api.Profiles
{
class LegacyProfileModule : NzbDroneApiModule
public class LegacyProfileModule : NzbDroneApiModule
{
public LegacyProfileModule()
: base("qualityprofile")

View File

@ -1,11 +1,11 @@
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Common.Extensions;
using NzbDrone.Api.Qualities;
using Radarr.Http.REST;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Languages;
using NzbDrone.Core.Profiles;
using NzbDrone.Core.Qualities;
using Radarr.Http.REST;
namespace NzbDrone.Api.Profiles
{
@ -36,13 +36,22 @@ namespace NzbDrone.Api.Profiles
{
public static ProfileResource ToResource(this Profile model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
var cutoffItem = model.Items.First(q =>
{
if (q.Id == model.Cutoff) return true;
if (q.Id == model.Cutoff)
{
return true;
}
if (q.Quality == null) return false;
if (q.Quality == null)
{
return false;
}
return q.Quality.Id == model.Cutoff;
});
@ -53,9 +62,15 @@ namespace NzbDrone.Api.Profiles
var formatCutoffItem = model.FormatItems.First(q =>
{
if (q.Id == model.FormatCutoff) return true;
if (q.Id == model.FormatCutoff)
{
return true;
}
if (q.Format == null) return false;
if (q.Format == null)
{
return false;
}
return q.Format.Id == model.FormatCutoff;
});
@ -93,7 +108,10 @@ namespace NzbDrone.Api.Profiles
public static ProfileQualityItemResource ToResource(this ProfileQualityItem model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new ProfileQualityItemResource
{
@ -113,7 +131,10 @@ namespace NzbDrone.Api.Profiles
public static Profile ToModel(this ProfileResource resource)
{
if (resource == null) return null;
if (resource == null)
{
return null;
}
return new Profile
{
@ -131,7 +152,10 @@ namespace NzbDrone.Api.Profiles
public static ProfileQualityItem ToModel(this ProfileQualityItemResource resource)
{
if (resource == null) return null;
if (resource == null)
{
return null;
}
return new ProfileQualityItem
{

View File

@ -31,7 +31,8 @@ namespace NzbDrone.Api.Profiles
var formatItems = _formatService.All().Select(v => new ProfileFormatItem
{
Format = v, Allowed = true
Format = v,
Allowed = true
}).ToList();
formatItems.Insert(0, new ProfileFormatItem

View File

@ -20,7 +20,6 @@ namespace NzbDrone.Api.Profiles
public AllowedValidator()
: base("Must contain at least one allowed quality")
{
}
protected override bool IsValid(PropertyValidatorContext context)

View File

@ -3,10 +3,10 @@ using System.Linq;
using FluentValidation;
using FluentValidation.Results;
using Nancy;
using Newtonsoft.Json;
using NzbDrone.Common.Reflection;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
using Newtonsoft.Json;
using Radarr.Http;
using Radarr.Http.ClientSchema;
@ -24,9 +24,9 @@ namespace NzbDrone.Api
{
_providerFactory = providerFactory;
Get("schema", x => GetTemplates());
Post("test", x => Test(ReadResourceFromRequest(true)));
Post("action/{action}", x => RequestAction(x.action, ReadResourceFromRequest(true)));
Get("schema", x => GetTemplates());
Post("test", x => Test(ReadResourceFromRequest(true)));
Post("action/{action}", x => RequestAction(x.action, ReadResourceFromRequest(true)));
GetResourceAll = GetAll;
GetResourceById = GetProviderById;
@ -35,7 +35,7 @@ namespace NzbDrone.Api
DeleteResource = DeleteProvider;
SharedValidator.RuleFor(c => c.Name).NotEmpty();
SharedValidator.RuleFor(c => c.Name).Must((v,c) => !_providerFactory.All().Any(p => p.Name == c && p.Id != v.Id)).WithMessage("Should be unique");
SharedValidator.RuleFor(c => c.Name).Must((v, c) => !_providerFactory.All().Any(p => p.Name == c && p.Id != v.Id)).WithMessage("Should be unique");
SharedValidator.RuleFor(c => c.Implementation).NotEmpty();
SharedValidator.RuleFor(c => c.ConfigContract).NotEmpty();
@ -181,7 +181,6 @@ namespace NzbDrone.Api
return "{}";
}
private object RequestAction(string action, TProviderResource providerResource)
{
var providerDefinition = GetDefinition(providerResource, true, false);

View File

@ -1,7 +1,7 @@
using System.Collections.Generic;
using NzbDrone.Core.ThingiProvider;
using Radarr.Http.ClientSchema;
using Radarr.Http.REST;
using NzbDrone.Core.ThingiProvider;
namespace NzbDrone.Api
{

View File

@ -31,7 +31,7 @@ namespace NzbDrone.Api.Qualities
var allNewTags = c.Select(t => t.ToLower());
var enumerable = allTags.ToList();
var newTags = allNewTags.ToList();
return (enumerable.All(newTags.Contains) && f.Id != v.Id && enumerable.Count() == newTags.Count());
return enumerable.All(newTags.Contains) && f.Id != v.Id && enumerable.Count() == newTags.Count();
});
})
.WithMessage("Should be unique.");
@ -46,11 +46,11 @@ namespace NzbDrone.Api.Qualities
DeleteResource = DeleteFormat;
Get("/test", x => Test());
Get("/test", x => Test());
Post("/test", x => TestWithNewModel());
Post("/test", x => TestWithNewModel());
Get("schema", x => GetTemplates());
Get("schema", x => GetTemplates());
}
private int Create(CustomFormatResource customFormatResource)
@ -95,11 +95,12 @@ namespace NzbDrone.Api.Qualities
private CustomFormatTestResource Test()
{
var parsed = _parsingService.ParseMovieInfo((string) Request.Query.title, new List<object>());
var parsed = _parsingService.ParseMovieInfo((string)Request.Query.title, new List<object>());
if (parsed == null)
{
return null;
}
return new CustomFormatTestResource
{
Matches = _parsingService.MatchFormatTags(parsed).ToResource(),
@ -109,18 +110,19 @@ namespace NzbDrone.Api.Qualities
private CustomFormatTestResource TestWithNewModel()
{
var queryTitle = (string) Request.Query.title;
var queryTitle = (string)Request.Query.title;
var resource = ReadResourceFromRequest();
var model = resource.ToModel();
model.Name = model.Name += " (New)";
var parsed = _parsingService.ParseMovieInfo(queryTitle, new List<object>{model});
var parsed = _parsingService.ParseMovieInfo(queryTitle, new List<object> { model });
if (parsed == null)
{
return null;
}
return new CustomFormatTestResource
{
Matches = _parsingService.MatchFormatTags(parsed).ToResource(),

View File

@ -1,7 +1,7 @@
using System.Collections.Generic;
using System.Linq;
using Radarr.Http.REST;
using NzbDrone.Core.CustomFormats;
using Radarr.Http.REST;
namespace NzbDrone.Api.Qualities
{

View File

@ -1,8 +1,8 @@
using System.Collections.Generic;
using System.Linq;
using Radarr.Http.REST;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.CustomFormats;
using Radarr.Http.REST;
namespace NzbDrone.Api.Qualities
{
@ -29,7 +29,10 @@ namespace NzbDrone.Api.Qualities
{
public static FormatTagMatchResultResource ToResource(this FormatTagMatchResult model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new FormatTagMatchResultResource
{

View File

@ -7,7 +7,8 @@ namespace NzbDrone.Api.Qualities
{
public class FormatTagValidator : PropertyValidator
{
public FormatTagValidator() : base("{ValidationMessage}")
public FormatTagValidator()
: base("{ValidationMessage}")
{
}
@ -19,11 +20,14 @@ namespace NzbDrone.Api.Qualities
return false;
}
var tags = (IEnumerable<string>) context.PropertyValue;
var tags = (IEnumerable<string>)context.PropertyValue;
var invalidTags = tags.Where(t => !FormatTag.QualityTagRegex.IsMatch(t));
if (invalidTags.Count() == 0) return true;
if (invalidTags.Count() == 0)
{
return true;
}
var formatMessage =
$"Format Tags ({string.Join(", ", invalidTags)}) are in an invalid format! Check the Wiki to learn how they should look.";

View File

@ -1,8 +1,8 @@
using System.Collections.Generic;
using Radarr.Http.REST;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Qualities;
using Radarr.Http;
using Radarr.Http.REST;
namespace NzbDrone.Api.Qualities
{

View File

@ -1,7 +1,7 @@
using System.Collections.Generic;
using System.Linq;
using Radarr.Http.REST;
using NzbDrone.Core.Qualities;
using Radarr.Http.REST;
namespace NzbDrone.Api.Qualities
{
@ -21,7 +21,10 @@ namespace NzbDrone.Api.Qualities
{
public static QualityDefinitionResource ToResource(this QualityDefinition model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new QualityDefinitionResource
{
@ -40,7 +43,10 @@ namespace NzbDrone.Api.Qualities
public static QualityDefinition ToModel(this QualityDefinitionResource resource)
{
if (resource == null) return null;
if (resource == null)
{
return null;
}
return new QualityDefinition
{

View File

@ -1,12 +1,12 @@
using System;
using Nancy;
using Radarr.Http.Extensions;
using Radarr.Http.REST;
using NzbDrone.Core.Download;
using NzbDrone.Core.Download.Pending;
using NzbDrone.Core.Download.TrackedDownloads;
using NzbDrone.Core.Queue;
using Radarr.Http;
using Radarr.Http.Extensions;
using Radarr.Http.REST;
namespace NzbDrone.Api.Queue
{
@ -36,9 +36,9 @@ namespace NzbDrone.Api.Queue
_pendingReleaseService = pendingReleaseService;
_downloadService = downloadService;
Delete(@"/(?<id>[\d]{1,10})", x => Remove((int)x.Id));
Post("/import", x => Import());
Post("/grab", x => Grab());
Delete(@"/(?<id>[\d]{1,10})", x => Remove((int)x.Id));
Post("/import", x => Import());
Post("/grab", x => Grab());
}
private object Remove(int id)

View File

@ -1,11 +1,11 @@
using System;
using System.Collections.Generic;
using Radarr.Http.REST;
using NzbDrone.Core.Qualities;
using System.Linq;
using NzbDrone.Api.Movies;
using NzbDrone.Core.Download.TrackedDownloads;
using NzbDrone.Core.Indexers;
using System.Linq;
using NzbDrone.Core.Qualities;
using Radarr.Http.REST;
namespace NzbDrone.Api.Queue
{
@ -29,7 +29,10 @@ namespace NzbDrone.Api.Queue
{
public static QueueResource ToResource(this Core.Queue.Queue model)
{
if (model == null) return null;
if (model == null)
{
return null;
}
return new QueueResource
{

Some files were not shown because too many files have changed in this diff Show More