mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2024-11-19 18:11:36 +01:00
69 lines
2.3 KiB
C#
69 lines
2.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace BTCPayServer.Controllers
|
|
{
|
|
public class Macaroons
|
|
{
|
|
public class Macaroon
|
|
{
|
|
public Macaroon(byte[] bytes)
|
|
{
|
|
Bytes = bytes;
|
|
Hex = NBitcoin.DataEncoders.Encoders.Hex.EncodeData(bytes);
|
|
}
|
|
|
|
public string Hex { get; set; }
|
|
public byte[] Bytes { get; set; }
|
|
}
|
|
public static async Task<Macaroons> GetFromDirectoryAsync(string directoryPath)
|
|
{
|
|
if (directoryPath == null)
|
|
throw new ArgumentNullException(nameof(directoryPath));
|
|
Macaroons macaroons = new Macaroons();
|
|
if (!Directory.Exists(directoryPath))
|
|
throw new DirectoryNotFoundException("Macaroons directory not found");
|
|
foreach (var file in Directory.GetFiles(directoryPath, "*.macaroon"))
|
|
{
|
|
try
|
|
{
|
|
switch (Path.GetFileName(file))
|
|
{
|
|
case "admin.macaroon":
|
|
macaroons.AdminMacaroon = new Macaroon(await File.ReadAllBytesAsync(file));
|
|
break;
|
|
case "readonly.macaroon":
|
|
macaroons.ReadonlyMacaroon = new Macaroon(await File.ReadAllBytesAsync(file));
|
|
break;
|
|
case "invoice.macaroon":
|
|
macaroons.InvoiceMacaroon = new Macaroon(await File.ReadAllBytesAsync(file));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
catch { }
|
|
}
|
|
return macaroons;
|
|
}
|
|
|
|
public Macaroons Clone()
|
|
{
|
|
return new Macaroons()
|
|
{
|
|
AdminMacaroon = AdminMacaroon,
|
|
InvoiceMacaroon = InvoiceMacaroon,
|
|
ReadonlyMacaroon = ReadonlyMacaroon
|
|
};
|
|
}
|
|
|
|
public Macaroon ReadonlyMacaroon { get; set; }
|
|
|
|
public Macaroon InvoiceMacaroon { get; set; }
|
|
public Macaroon AdminMacaroon { get; set; }
|
|
}
|
|
}
|