btcpayserver/BTCPayServer/Controllers/GreenField/ServerInfoController.cs

58 lines
2.1 KiB
C#
Raw Normal View History

using System.Collections.Generic;
2020-05-16 23:57:49 +02:00
using System.Linq;
using System.Threading.Tasks;
using BTCPayServer.Abstractions.Constants;
using BTCPayServer.Abstractions.Contracts;
2020-05-16 23:57:49 +02:00
using BTCPayServer.Client.Models;
using BTCPayServer.Services;
using BTCPayServer.Services.Invoices;
using Microsoft.AspNetCore.Authorization;
2020-06-30 08:26:19 +02:00
using Microsoft.AspNetCore.Cors;
2020-05-16 23:57:49 +02:00
using Microsoft.AspNetCore.Mvc;
namespace BTCPayServer.Controllers.GreenField
{
[ApiController]
2020-06-30 08:26:19 +02:00
[EnableCors(CorsPolicies.All)]
2020-05-16 23:57:49 +02:00
public class GreenFieldServerInfoController : Controller
{
private readonly BTCPayServerEnvironment _env;
private readonly PaymentMethodHandlerDictionary _paymentMethodHandlerDictionary;
private readonly IEnumerable<ISyncSummaryProvider> _summaryProviders;
2020-05-16 23:57:49 +02:00
public GreenFieldServerInfoController(
2020-06-28 17:55:27 +09:00
BTCPayServerEnvironment env,
PaymentMethodHandlerDictionary paymentMethodHandlerDictionary,
IEnumerable<ISyncSummaryProvider>summaryProviders)
2020-05-16 23:57:49 +02:00
{
_env = env;
_paymentMethodHandlerDictionary = paymentMethodHandlerDictionary;
_summaryProviders = summaryProviders;
2020-05-16 23:57:49 +02:00
}
2020-06-28 17:55:27 +09:00
2020-05-16 23:57:49 +02:00
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Greenfield)]
[HttpGet("~/api/v1/server/info")]
public ActionResult ServerInfo()
2020-05-16 23:57:49 +02:00
{
var supportedPaymentMethods = _paymentMethodHandlerDictionary
.SelectMany(handler => handler.GetSupportedPaymentMethods().Select(id => id.ToString()))
.Distinct();
ServerInfoData model = new ServerInfoData2
2020-05-16 23:57:49 +02:00
{
FullySynched = _summaryProviders.All(provider => provider.AllAvailable()),
SyncStatus = _summaryProviders.SelectMany(provider => provider.GetStatuses()),
2020-05-16 23:57:49 +02:00
Onion = _env.OnionUrl,
Version = _env.Version,
SupportedPaymentMethods = supportedPaymentMethods
};
return Ok(model);
}
public class ServerInfoData2 : ServerInfoData
{
public new IEnumerable<ISyncStatus> SyncStatus { get; set; }
}
2020-05-16 23:57:49 +02:00
}
}