2021-10-12 03:01:02 -04:00
using System ;
using Newtonsoft.Json.Linq ;
namespace PluralKit.API
{
public class PKError : Exception
{
public int ResponseCode { get ; init ; }
public int JsonCode { get ; init ; }
public PKError ( int code , int json_code , string message ) : base ( message )
{
ResponseCode = code ;
JsonCode = json_code ;
}
public JObject ToJson ( )
{
var j = new JObject ( ) ;
j . Add ( "message" , this . Message ) ;
j . Add ( "code" , this . JsonCode ) ;
return j ;
}
}
public class ModelParseError : PKError
{
2021-10-13 01:02:34 -04:00
public ModelParseError ( ) : base ( 400 , 40001 , "Error parsing JSON model" )
2021-10-12 03:01:02 -04:00
{
// todo
}
public new JObject ToJson ( )
{
var j = base . ToJson ( ) ;
return j ;
}
}
public static class APIErrors
{
public static PKError GenericBadRequest = new ( 400 , 0 , "400: Bad Request" ) ;
2021-10-12 05:17:54 -04:00
public static PKError GenericAuthError = new ( 401 , 0 , "401: Missing or invalid Authorization header" ) ;
2021-10-12 03:01:02 -04:00
public static PKError SystemNotFound = new ( 404 , 20001 , "System not found." ) ;
public static PKError MemberNotFound = new ( 404 , 20002 , "Member not found." ) ;
public static PKError GroupNotFound = new ( 404 , 20003 , "Group not found." ) ;
2021-10-12 05:17:54 -04:00
public static PKError MessageNotFound = new ( 404 , 20004 , "Message not found." ) ;
2021-10-13 05:29:33 -04:00
public static PKError SwitchNotFound = new ( 404 , 20005 , "Switch not found." ) ;
public static PKError SwitchNotFoundPublic = new ( 404 , 20005 , "Switch not found, switch associated with different system, or unauthorized to view front history." ) ;
2021-10-13 01:02:34 -04:00
public static PKError SystemGuildNotFound = new ( 404 , 20006 , "No system guild settings found for target guild." ) ;
public static PKError MemberGuildNotFound = new ( 404 , 20007 , "No member guild settings found for target guild." ) ;
2021-10-12 03:01:02 -04:00
public static PKError UnauthorizedMemberList = new ( 403 , 30001 , "Unauthorized to view member list" ) ;
public static PKError UnauthorizedGroupList = new ( 403 , 30002 , "Unauthorized to view group list" ) ;
2021-10-12 05:17:54 -04:00
public static PKError UnauthorizedGroupMemberList = new ( 403 , 30003 , "Unauthorized to view group member list" ) ;
public static PKError UnauthorizedCurrentFronters = new ( 403 , 30004 , "Unauthorized to view current fronters." ) ;
2021-10-12 08:33:31 -04:00
public static PKError UnauthorizedFrontHistory = new ( 403 , 30005 , "Unauthorized to view front history." ) ;
2021-10-13 01:02:34 -04:00
public static PKError NotOwnMemberError = new ( 403 , 30006 , "Target member is not part of your system." ) ;
2021-10-13 05:29:33 -04:00
public static PKError NotOwnGroupError = new ( 403 , 30007 , "Target group is not part of your system." ) ;
2021-10-12 08:33:31 -04:00
// todo: somehow add the memberRef to the JSON
2021-10-13 01:02:34 -04:00
public static PKError NotOwnMemberErrorWithRef ( string memberRef ) = > new ( 403 , 30008 , $"Member '{memberRef}' is not part of your system." ) ;
public static PKError NotOwnGroupErrorWithRef ( string groupRef ) = > new ( 403 , 30009 , $"Group '{groupRef}' is not part of your system." ) ;
public static PKError MissingAutoproxyMember = new ( 400 , 40002 , "Missing autoproxy member for member-mode autoproxy." ) ;
2021-10-13 05:29:33 -04:00
public static PKError DuplicateMembersInList = new ( 400 , 40003 , "Duplicate members in member list." ) ;
public static PKError SameSwitchMembersError = new ( 400 , 40004 , "Member list identical to current fronter list." ) ;
public static PKError SameSwitchTimestampError = new ( 400 , 40005 , "Switch with provided timestamp already exists." ) ;
public static PKError InvalidSwitchId = new ( 400 , 40006 , "Invalid switch ID." ) ;
2021-10-12 03:01:02 -04:00
public static PKError Unimplemented = new ( 501 , 50001 , "Unimplemented" ) ;
}
}