mirror of
https://github.com/PluralKit/PluralKit.git
synced 2026-02-04 13:06:50 +00:00
feat: refactor external input handling code
- refactor import/export code - make import/export use the same JSON parsing as API - make Patch.AssertIsValid actually useful
This commit is contained in:
parent
f912805ecc
commit
4b944e2b20
18 changed files with 619 additions and 694 deletions
|
|
@ -34,7 +34,7 @@ namespace PluralKit.API
|
|||
var member = await _db.Execute(conn => _repo.GetMemberByHid(conn, hid));
|
||||
if (member == null) return NotFound("Member not found.");
|
||||
|
||||
return Ok(member.ToJson(User.ContextFor(member)));
|
||||
return Ok(member.ToJson(User.ContextFor(member), needsLegacyProxyTags: true));
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
|
|
@ -62,14 +62,14 @@ namespace PluralKit.API
|
|||
try
|
||||
{
|
||||
patch = MemberPatch.FromJSON(properties);
|
||||
patch.CheckIsValid();
|
||||
patch.AssertIsValid();
|
||||
}
|
||||
catch (JsonModelParseError e)
|
||||
catch (FieldTooLongError e)
|
||||
{
|
||||
await tx.RollbackAsync();
|
||||
return BadRequest(e.Message);
|
||||
}
|
||||
catch (InvalidPatchException e)
|
||||
catch (ValidationError e)
|
||||
{
|
||||
await tx.RollbackAsync();
|
||||
return BadRequest($"Request field '{e.Message}' is invalid.");
|
||||
|
|
@ -77,7 +77,7 @@ namespace PluralKit.API
|
|||
|
||||
member = await _repo.UpdateMember(conn, member.Id, patch, transaction: tx);
|
||||
await tx.CommitAsync();
|
||||
return Ok(member.ToJson(User.ContextFor(member)));
|
||||
return Ok(member.ToJson(User.ContextFor(member), needsLegacyProxyTags: true));
|
||||
}
|
||||
|
||||
[HttpPatch("{hid}")]
|
||||
|
|
@ -96,19 +96,19 @@ namespace PluralKit.API
|
|||
try
|
||||
{
|
||||
patch = MemberPatch.FromJSON(changes);
|
||||
patch.CheckIsValid();
|
||||
patch.AssertIsValid();
|
||||
}
|
||||
catch (JsonModelParseError e)
|
||||
catch (FieldTooLongError e)
|
||||
{
|
||||
return BadRequest(e.Message);
|
||||
}
|
||||
catch (InvalidPatchException e)
|
||||
catch (ValidationError e)
|
||||
{
|
||||
return BadRequest($"Request field '{e.Message}' is invalid.");
|
||||
}
|
||||
|
||||
var newMember = await _repo.UpdateMember(conn, member.Id, patch);
|
||||
return Ok(newMember.ToJson(User.ContextFor(newMember)));
|
||||
return Ok(newMember.ToJson(User.ContextFor(newMember), needsLegacyProxyTags: true));
|
||||
}
|
||||
|
||||
[HttpDelete("{hid}")]
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ namespace PluralKit.API
|
|||
Id = msg.Message.Mid.ToString(),
|
||||
Channel = msg.Message.Channel.ToString(),
|
||||
Sender = msg.Message.Sender.ToString(),
|
||||
Member = msg.Member.ToJson(User.ContextFor(msg.System)),
|
||||
Member = msg.Member.ToJson(User.ContextFor(msg.System), needsLegacyProxyTags: true),
|
||||
System = msg.System.ToJson(User.ContextFor(msg.System)),
|
||||
Original = msg.Message.OriginalMid?.ToString()
|
||||
};
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ namespace PluralKit.API
|
|||
var members = _db.Execute(c => _repo.GetSystemMembers(c, system.Id));
|
||||
return Ok(await members
|
||||
.Where(m => m.MemberVisibility.CanAccess(User.ContextFor(system)))
|
||||
.Select(m => m.ToJson(User.ContextFor(system)))
|
||||
.Select(m => m.ToJson(User.ContextFor(system), needsLegacyProxyTags: true))
|
||||
.ToListAsync());
|
||||
}
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ namespace PluralKit.API
|
|||
return Ok(new FrontersReturn
|
||||
{
|
||||
Timestamp = sw.Timestamp,
|
||||
Members = await members.Select(m => m.ToJson(User.ContextFor(system))).ToListAsync()
|
||||
Members = await members.Select(m => m.ToJson(User.ContextFor(system), needsLegacyProxyTags: true)).ToListAsync()
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -141,13 +141,13 @@ namespace PluralKit.API
|
|||
try
|
||||
{
|
||||
patch = SystemPatch.FromJSON(changes);
|
||||
patch.CheckIsValid();
|
||||
patch.AssertIsValid();
|
||||
}
|
||||
catch (JsonModelParseError e)
|
||||
catch (FieldTooLongError e)
|
||||
{
|
||||
return BadRequest(e.Message);
|
||||
}
|
||||
catch (InvalidPatchException e)
|
||||
catch (ValidationError e)
|
||||
{
|
||||
return BadRequest($"Request field '{e.Message}' is invalid.");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue