New: /ping endpoint for verifying that Sonarr is running and able to access it's DB

Closes #4766
This commit is contained in:
Mark McDowall 2021-12-03 17:41:30 -08:00
parent d51cd4bbe7
commit 75fc550a3f
4 changed files with 59 additions and 0 deletions

View File

@ -166,6 +166,11 @@ namespace Sonarr.Http.Authentication
{
return true;
}
if (context.Request.IsPingRequest())
{
return true;
}
if (ValidUser(context))
{

View File

@ -18,6 +18,11 @@ namespace Sonarr.Http.Extensions
return request.Path.StartsWith("/feed/", StringComparison.InvariantCultureIgnoreCase);
}
public static bool IsPingRequest(this Request request)
{
return request.Path.StartsWith("/ping", StringComparison.InvariantCultureIgnoreCase);
}
public static bool IsSignalRRequest(this Request request)
{
return request.Path.StartsWith("/signalr/", StringComparison.InvariantCultureIgnoreCase);

View File

@ -0,0 +1,41 @@
using System;
using Nancy;
using NzbDrone.Core.Configuration;
using NzbDrone.Http.Ping;
using Sonarr.Http.Extensions;
namespace NzbDrone.Http
{
public class PingModule : NancyModule
{
private readonly IConfigRepository _configRepository;
public PingModule(IConfigRepository configRepository)
{
_configRepository = configRepository;
Get("/ping", x => GetStatus());
}
private Response GetStatus()
{
try
{
_configRepository.All();
}
catch (Exception e)
{
return new PingResource
{
Status = "Error",
Message = e.Message
}.AsResponse(Context, HttpStatusCode.InternalServerError);
}
return new PingResource
{
Status = "OK"
}.AsResponse(Context, HttpStatusCode.OK);
}
}
}

View File

@ -0,0 +1,8 @@
namespace NzbDrone.Http.Ping
{
public class PingResource
{
public string Status { get; set; }
public string Message { get; set; }
}
}