New: Use the ID returned from SABnzbd (0.7.20) during retry

This commit is contained in:
Mark McDowall 2014-12-01 22:39:27 -08:00
parent 6467167046
commit 935b9e5f4e
4 changed files with 30 additions and 9 deletions

View File

@ -1,6 +1,6 @@
using System;
namespace NzbDrone.Common
namespace NzbDrone.Common.Extensions
{
public static class TryParseExtensions
{

View File

@ -0,0 +1,12 @@
using Newtonsoft.Json;
namespace NzbDrone.Core.Download.Clients.Sabnzbd.Responses
{
public class SabnzbdRetryResponse
{
public bool Status { get; set; }
[JsonProperty(PropertyName = "nzo_id")]
public string Id { get; set; }
}
}

View File

@ -223,7 +223,12 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
var otherItemsWithSameTitle = currentHistory.Where(h => h.Title == currentHistoryItem.Title &&
h.DownloadClientId != currentHistoryItem.DownloadClientId).ToList();
_proxy.RetryDownload(id, Settings);
var newId = _proxy.RetryDownload(id, Settings);
if (newId.IsNotNullOrWhiteSpace())
{
return newId;
}
for (int i = 0; i < 3; i++)
{

View File

@ -1,10 +1,6 @@
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using NLog;
using NzbDrone.Common;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Serializer;
using NzbDrone.Core.Rest;
@ -22,7 +18,7 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
SabnzbdConfig GetConfig(SabnzbdSettings settings);
SabnzbdQueue GetQueue(int start, int limit, SabnzbdSettings settings);
SabnzbdHistory GetHistory(int start, int limit, SabnzbdSettings settings);
void RetryDownload(string id, SabnzbdSettings settings);
string RetryDownload(string id, SabnzbdSettings settings);
}
public class SabnzbdProxy : ISabnzbdProxy
@ -114,12 +110,20 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
return Json.Deserialize<SabnzbdHistory>(JObject.Parse(response).SelectToken("history").ToString());
}
public void RetryDownload(string id, SabnzbdSettings settings)
public string RetryDownload(string id, SabnzbdSettings settings)
{
var request = new RestRequest();
var action = String.Format("mode=retry&value={0}", id);
ProcessRequest(request, action, settings);
SabnzbdRetryResponse response;
if (!Json.TryDeserialize<SabnzbdRetryResponse>(ProcessRequest(request, action, settings), out response))
{
response = new SabnzbdRetryResponse();
response.Status = true;
}
return response.Id;
}
private IRestClient BuildClient(string action, SabnzbdSettings settings)