Lightning Address: Use lowercased username when resolving (#5579)

* Lightning Address: Use lowercased username when resolving

* Use static NormalizeUsername
This commit is contained in:
d11n 2023-12-21 15:42:17 +01:00 committed by GitHub
parent c94dc87cb8
commit 8ae9e59d9d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 22 deletions

View file

@ -48,16 +48,11 @@ public class LightningAddressService
{
return await _memoryCache.GetOrCreateAsync(GetKey(username), async entry =>
{
var result = await Get(new LightningAddressQuery { Usernames = new[] { username } });
var result = await Get(new LightningAddressQuery { Usernames = new[] { NormalizeUsername(username) } });
return result.FirstOrDefault();
});
}
private string NormalizeUsername(string username)
{
return username.ToLowerInvariant();
}
public async Task<bool> Set(LightningAddressData data)
{
data.Username = NormalizeUsername(data.Username);
@ -115,8 +110,12 @@ public class LightningAddressService
await context.AddAsync(data);
}
public static string NormalizeUsername(string username)
{
return username.ToLowerInvariant();
}
private string GetKey(string username)
private static string GetKey(string username)
{
username = NormalizeUsername(username);
return $"{nameof(LightningAddressService)}_{username}";

View file

@ -373,7 +373,7 @@ namespace BTCPayServer
if (string.IsNullOrEmpty(username))
return NotFound("Unknown username");
LNURLPayRequest lnurlRequest = null;
LNURLPayRequest lnurlRequest;
// Check core and fall back to lookup Lightning Address via plugins
var lightningAddressSettings = await _lightningAddressService.ResolveByAddress(username);

View file

@ -0,0 +1,9 @@
using LNURL;
namespace BTCPayServer.Plugins;
public class LightningAddressResolver(string username)
{
public string Username { get; set; } = LightningAddressService.NormalizeUsername(username);
public LNURLPayRequest LNURLPayRequest { get; set; }
}

View file

@ -1,14 +0,0 @@
using LNURL;
namespace BTCPayServer.Plugins;
public class LightningAddressResolver
{
public string Username { get; set; }
public LNURLPayRequest LNURLPayRequest { get; set; }
public LightningAddressResolver(string username)
{
Username = username;
}
}