Fixes for sonarr, we now display the error messages back to the user

This commit is contained in:
tidusjar 2016-04-07 20:38:36 +01:00
parent 3efd54c1b6
commit 10be8f0440
7 changed files with 55 additions and 16 deletions

View file

@ -26,7 +26,7 @@ namespace PlexRequests.Api.Models.Sonarr
public string titleSlug { get; set; }
public int id { get; set; }
[JsonIgnore]
public string ErrorMessage { get; set; }
public List<string> ErrorMessages { get; set; }
}
public class AddOptions

View file

@ -24,13 +24,22 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// ************************************************************************/
#endregion
using System.Collections.Generic;
using Newtonsoft.Json;
namespace PlexRequests.Api.Models.Sonarr
{
public class SonarrError
{
public string propertyName { get; set; }
public string errorMessage { get; set; }
public string attemptedValue { get; set; }
public string[] formattedMessageArguments { get; set; }
public object attemptedValue { get; set; }
public FormattedMessagePlaceholderValues formattedMessagePlaceholderValues { get; set; }
}
public class FormattedMessagePlaceholderValues
{
public string propertyName { get; set; }
public object propertyValue { get; set; }
}
}

View file

@ -104,8 +104,8 @@ namespace PlexRequests.Api
catch (JsonSerializationException jse)
{
Log.Error(jse);
var error = Api.ExecuteJson<SonarrError>(request, baseUrl);
result = new SonarrAddSeries { ErrorMessage = error.errorMessage };
var error = Api.ExecuteJson<List<SonarrError>>(request, baseUrl);
result = new SonarrAddSeries { ErrorMessages = error.Select(x => x.errorMessage).ToList() };
}
return result;

View file

@ -24,8 +24,10 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// ************************************************************************/
#endregion
using System.Linq;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Nancy.Validation;
@ -55,5 +57,31 @@ namespace PlexRequests.UI.Helpers
})
.FirstOrDefault();
}
public static JsonResponseModel SendSonarrError(List<string> result)
{
var model = new JsonResponseModel {Result = false};
if (!result.Any())
{
return model;
}
var sb = new StringBuilder();
sb.AppendLine("Errors from Sonarr: ");
for (var i = 0; i < result.Count; i++)
{
if (i != result.Count - 1)
{
sb.AppendLine(result[i] + ",");
}
else
{
sb.AppendLine(result[i]);
}
}
model.Message = sb.ToString();
return model;
}
}
}

View file

@ -100,7 +100,7 @@ namespace PlexRequests.UI.Modules
try
{
var status = SonarrApi.SystemStatus(sonarrSettings.ApiKey, sonarrSettings.FullUri);
return status != null
return status?.version != null
? Response.AsJson(new JsonResponseModel { Result = true, Message = "Connected to Sonarr successfully!" })
: Response.AsJson(new JsonResponseModel { Result = false, Message = "Could not connect to Sonarr, please check your settings." });

View file

@ -135,14 +135,16 @@ namespace PlexRequests.UI.Modules
{
return Response.AsJson(new JsonResponseModel {Result = true});
}
return Response.AsJson(new JsonResponseModel { Result = false, Message = "Updated Sonarr but could not approve it in PlexRequests :(" });
}
return Response.AsJson(new JsonResponseModel
return
Response.AsJson(new JsonResponseModel
{
Result = false,
Message = result.ErrorMessage ?? "Could not add the series to Sonarr"
Message = "Updated Sonarr but could not approve it in PlexRequests :("
});
}
return Response.AsJson(ValidationHelper.SendSonarrError(result.ErrorMessages));
}
var srSettings = SickRageSettings.GetSettings();
if (srSettings.Enabled)
@ -384,7 +386,7 @@ namespace PlexRequests.UI.Modules
else
{
Log.Error("Could not approve and send the TV {0} to Sonarr!", r.Title);
Log.Error("Error message: {0}", res?.ErrorMessage);
res?.ErrorMessages.ForEach(x => Log.Error("Error messages: {0}", x));
}
}
}

View file

@ -442,7 +442,7 @@ namespace PlexRequests.UI.Modules
}
return Response.AsJson(new JsonResponseModel { Result = false, Message = result?.ErrorMessage ?? "Something went wrong adding the movie to Sonarr! Please check your settings." });
return Response.AsJson(ValidationHelper.SendSonarrError(result?.ErrorMessages));
}