Add "idtoname" request & change invite format
This commit is contained in:
parent
93fd8312da
commit
017eb2501b
5 changed files with 110 additions and 16 deletions
|
|
@ -316,6 +316,24 @@ public class Requests
|
|||
|
||||
}
|
||||
|
||||
public static async Task IdToName(HttpContext context, Func<Task> next, IQueryCollection query)
|
||||
{
|
||||
if (!query.TryGetValue("id", out var id))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Utils.IsUserLocal(id, out string domain)) //federation :(
|
||||
{
|
||||
return;
|
||||
}
|
||||
id = id.ToString().Split(":")[0];
|
||||
|
||||
await context.Response.WriteAsync(await Utils.NameFromId(id) + $":{DOMAIN}");
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
public static async Task NextNonce(HttpContext context, Func<Task> next, IQueryCollection query)
|
||||
{
|
||||
if (!query.TryGetValue("u", out var username))
|
||||
|
|
|
|||
|
|
@ -182,31 +182,103 @@ public class Utils
|
|||
|
||||
public static async Task<string> GetUserSentInvites(string id)
|
||||
{
|
||||
string dmString = "\"dms\": {";
|
||||
string groupString = "\"groups\": {";
|
||||
string path = $"{ACCOUNTS_DATA_DIR}/{id}/dminvites/sent";
|
||||
if (!Fs.Exists(path))
|
||||
if (Fs.Exists(path))
|
||||
{
|
||||
return "";
|
||||
string[] invites = Fs.ReadDirectory(path);
|
||||
if (invites.Length != 0)
|
||||
{
|
||||
foreach (var invite in invites)
|
||||
{
|
||||
string content = Encoding.UTF8.GetString(await Fs.ReadFile($"{path}/{invite}"));
|
||||
if (dmString == "\"dms\": {")
|
||||
{
|
||||
dmString += $"\"{invite}\": {{ \"timestamp\": {content} }}";
|
||||
}
|
||||
else
|
||||
{
|
||||
dmString += $",\"{invite}\": {{ \"timestamp\": {content} }}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
string[] invites = Fs.ReadDirectory(path);
|
||||
if (invites.Length == 0)
|
||||
dmString += "}";
|
||||
|
||||
path = $"{ACCOUNTS_DATA_DIR}/{id}/groupinvites/sent";
|
||||
if (Fs.Exists(path))
|
||||
{
|
||||
return "";
|
||||
string[] invites = Fs.ReadDirectory(path);
|
||||
if (invites.Length != 0)
|
||||
{
|
||||
foreach (var invite in invites) //filename - group;domain-receiverid;domain
|
||||
{ string[] inviteArray = invite.Split('-');
|
||||
string content = Encoding.UTF8.GetString(await Fs.ReadFile($"{path}/{invite}"));
|
||||
if (groupString == "\"groups\": {")
|
||||
{
|
||||
groupString += $"\"{inviteArray[0]}\": {{ \"timestamp\": {content}, \"receiver\": \"{inviteArray[1]}\" }}";
|
||||
}
|
||||
else
|
||||
{
|
||||
groupString += $",\"{inviteArray[0]}\": {{ \"timestamp\": {content}, \"receiver\": \"{inviteArray[1]}\" }}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return string.Join(",", invites);
|
||||
groupString += "}";
|
||||
|
||||
return $"{{{dmString},{groupString}}}";
|
||||
}
|
||||
public static async Task<string> GetUserReceivedInvites(string id)
|
||||
{
|
||||
string dmString = "\"dms\": {";
|
||||
string groupString = "\"groups\": {";
|
||||
string path = $"{ACCOUNTS_DATA_DIR}/{id}/dminvites/recv";
|
||||
if (!Fs.Exists(path))
|
||||
if (Fs.Exists(path))
|
||||
{
|
||||
return "";
|
||||
string[] invites = Fs.ReadDirectory(path);
|
||||
if (invites.Length != 0)
|
||||
{
|
||||
foreach (var invite in invites)
|
||||
{
|
||||
string content = Encoding.UTF8.GetString(await Fs.ReadFile($"{path}/{invite}"));
|
||||
if (dmString == "\"dms\": {")
|
||||
{
|
||||
dmString += $"\"{invite}\": {{ \"timestamp\": {content} }}";
|
||||
}
|
||||
else
|
||||
{
|
||||
dmString += $",\"{invite}\": {{ \"timestamp\": {content} }}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
string[] invites = Fs.ReadDirectory(path);
|
||||
if (invites.Length == 0)
|
||||
dmString += "}";
|
||||
|
||||
path = $"{ACCOUNTS_DATA_DIR}/{id}/groupinvites/recv";
|
||||
if (Fs.Exists(path))
|
||||
{
|
||||
return "";
|
||||
string[] invites = Fs.ReadDirectory(path);
|
||||
if (invites.Length != 0)
|
||||
{
|
||||
foreach (var invite in invites)
|
||||
{
|
||||
string[] content = Encoding.UTF8.GetString(await Fs.ReadFile($"{path}/{invite}")).Split(':');
|
||||
if (groupString == "\"groups\": {")
|
||||
{
|
||||
groupString += $"\"{invite}\": {{ \"timestamp\": {content[1]}, \"sender\": \"{content[0]}\" }}";
|
||||
}
|
||||
else
|
||||
{
|
||||
groupString += $",\"{invite}\": {{ \"timestamp\": {content[1]}, \"sender\": \"{content[0]}\" }}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return string.Join(",", invites);
|
||||
groupString += "}";
|
||||
|
||||
return $"{{{dmString},{groupString}}}";
|
||||
}
|
||||
|
||||
public static async Task UpdateUserKeys(string id, string body)
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public class Receiver
|
|||
await context.Response.WriteAsync("info:user.already.invited");
|
||||
return;
|
||||
}
|
||||
await Fs.WriteFile(inviteFile, Encoding.UTF8.GetBytes("0"));
|
||||
await Fs.WriteFile(inviteFile, Encoding.UTF8.GetBytes(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString()));
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
|
|||
|
|
@ -165,6 +165,9 @@ public class Program
|
|||
case "/_larpix/correctedname":
|
||||
await Account.Requests.CorrectedName(context, next, query);
|
||||
return;
|
||||
case "/_larpix/idtoname":
|
||||
await Account.Requests.IdToName(context, next, query);
|
||||
return;
|
||||
case "/_larpix/nextnonce":
|
||||
await Account.Requests.NextNonce(context, next, query);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ public class Requests
|
|||
|
||||
username2 = username2.Split(":")[0];
|
||||
string remoteId2 = await Federation.Sender.GetUserId(username2, domain);
|
||||
await Fs.WriteFile(ACCOUNTS_DATA_DIR + $"/{id}/dminvites/sent/{remoteId2};{domain}", []); //only save sent while federating
|
||||
await Fs.WriteFile(ACCOUNTS_DATA_DIR + $"/{id}/dminvites/sent/{remoteId2};{domain}", Encoding.UTF8.GetBytes(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString()));
|
||||
return await Federation.Sender.DmInvite(id, domain, remoteId2);
|
||||
|
||||
}
|
||||
|
|
@ -43,8 +43,9 @@ public class Requests
|
|||
return "info:user.already.invited";
|
||||
}
|
||||
|
||||
await Fs.WriteFile(inviteFile, Encoding.UTF8.GetBytes("0"));
|
||||
await Fs.WriteFile(ACCOUNTS_DATA_DIR + $"/{id}/dminvites/sent/{id2}", []); //we should also save that this user invited someone, because listing sent invites is cool
|
||||
byte[] timestamp = Encoding.UTF8.GetBytes(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString());
|
||||
await Fs.WriteFile(inviteFile, timestamp);
|
||||
await Fs.WriteFile(ACCOUNTS_DATA_DIR + $"/{id}/dminvites/sent/{id2}", timestamp); //we should also save that this user invited someone, because listing sent invites is cool
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue