From 433711409ee1fa2950395ff2ff3da0c07c441e2f Mon Sep 17 00:00:00 2001 From: kozabrada123 Date: Sun, 28 Apr 2024 12:32:24 +0200 Subject: [PATCH] update error messages Update error message to be more brief and compliant with C-GOOD-ERR --- src/errors.rs | 149 +++++++++++++++++++++++++++++--------------------- 1 file changed, 88 insertions(+), 61 deletions(-) diff --git a/src/errors.rs b/src/errors.rs index 722921a..c1c41fc 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -11,7 +11,7 @@ use chorus_macros::WebSocketEvent; custom_error! { #[derive(PartialEq, Eq, Clone, Hash)] pub RegistrationError - Consent = "Consent must be 'true' to register.", + Consent = "consent must be 'true' to register", } pub type ChorusResult = std::result::Result; @@ -20,33 +20,34 @@ custom_error! { #[derive(Clone, Hash, PartialEq, Eq)] pub ChorusError /// Server did not respond. - NoResponse = "Did not receive a response from the Server.", + NoResponse = "server did not respond", /// Reqwest returned an Error instead of a Response object. - RequestFailed{url:String, error: String} = "An error occurred while trying to GET from {url}: {error}", + RequestFailed{url:String, error: String} = "an error occurred while trying to GET from {url}: {error}", /// Response received, however, it was not of the successful responses type. Used when no other, special case applies. - ReceivedErrorCode{error_code: u16, error: String} = "Received the following error code while requesting from the route: {error_code}", + ReceivedErrorCode{error_code: u16, error: String} = "received error code while requesting from the route: {error_code}", /// Used when there is likely something wrong with the instance, the request was directed to. - CantGetInformation{error:String} = "Something seems to be wrong with the instance. Cannot get information about the instance: {error}", + CantGetInformation{error:String} = "cannot get information about the instance: {error}, something is likely wrong with the instance", /// The requests form body was malformed/invalid. - InvalidFormBody{error_type: String, error:String} = "The server responded with: {error_type}: {error}", + InvalidFormBody{error_type: String, error:String} = "the server responded with: {error_type}: {error}", /// The request has not been processed by the server due to a relevant rate limit bucket being exhausted. - RateLimited{bucket:String} = "Ratelimited on Bucket {bucket}", + RateLimited{bucket:String} = "ratelimited on bucket {bucket}", /// The multipart form could not be created. - MultipartCreation{error: String} = "Got an error whilst creating the form: {error}", + MultipartCreation{error: String} = "got an error whilst creating the form: {error}", /// The regular form could not be created. - FormCreation{error: String} = "Got an error whilst creating the form: {error}", + FormCreation{error: String} = "got an error whilst creating the form: {error}", /// The token is invalid. - TokenExpired = "Token expired, invalid or not found.", + TokenExpired = "token expired, invalid or not found", /// No permission - NoPermission = "You do not have the permissions needed to perform this action.", + NoPermission = "you lack the permissions needed to perform this action", /// Resource not found - NotFound{error: String} = "The provided resource hasn't been found: {error}", + NotFound{error: String} = "the provided resource wasn't found: {error}", /// Used when you, for example, try to change your spacebar account password without providing your old password for verification. - PasswordRequired = "You need to provide your current password to authenticate for this action.", + // RAGC: could this be worded a bit better to be more concise? + PasswordRequired = "you need to provide your current password to authenticate for this action", /// Malformed or unexpected response. - InvalidResponse{error: String} = "The response is malformed and cannot be processed. Error: {error}", + InvalidResponse{error: String} = "the response is malformed and cannot be processed: {error}", /// Invalid, insufficient or too many arguments provided. - InvalidArguments{error: String} = "Invalid arguments were provided. Error: {error}" + InvalidArguments{error: String} = "invalid arguments were provided: {error}" } impl From for ChorusError { @@ -61,12 +62,6 @@ impl From for ChorusError { } } -custom_error! { - #[derive(PartialEq, Eq)] - pub ObserverError - AlreadySubscribed = "Each event can only be subscribed to once." -} - custom_error! { /// For errors we receive from the gateway, see ; /// @@ -77,27 +72,43 @@ custom_error! { pub GatewayError // Errors we have received from the gateway #[default] - Unknown = "We're not sure what went wrong. Try reconnecting?", - UnknownOpcode = "You sent an invalid Gateway opcode or an invalid payload for an opcode", - Decode = "Gateway server couldn't decode payload", - NotAuthenticated = "You sent a payload prior to identifying", - AuthenticationFailed = "The account token sent with your identify payload is invalid", - AlreadyAuthenticated = "You've already identified, no need to reauthenticate", - InvalidSequenceNumber = "The sequence number sent when resuming the session was invalid. Reconnect and start a new session", - RateLimited = "You are being rate limited!", - SessionTimedOut = "Your session timed out. Reconnect and start a new one", - InvalidShard = "You sent us an invalid shard when identifying", - ShardingRequired = "The session would have handled too many guilds - you are required to shard your connection in order to connect", - InvalidAPIVersion = "You sent an invalid Gateway version", - InvalidIntents = "You sent an invalid intent", - DisallowedIntents = "You sent a disallowed intent. You may have tried to specify an intent that you have not enabled or are not approved for", + /// We're not sure what went wrong. Try reconnecting? + Unknown = "unknown error occurred, try reconnecting", + /// You sent an invalid opcode or an invalid payload for an opcode + UnknownOpcode = "client sent invalid opcode or invalid payload for opcode", + /// Gateway server couldn't decode payload + Decode = "gateway server failed to decode payload", + /// You sent a payload prior to identifying + NotAuthenticated = "client sent payload before identifying", + /// The account token sent with your identify payload is invalid + AuthenticationFailed = "account token in identify is invalid", + /// You've already identified, no need to reauthenticate + AlreadyAuthenticated = "client sent more than one identify payload", + /// The sequence number sent when resuming the session was invalid. Reconnect and start a new session + InvalidSequenceNumber = "sequence number when resuming session was invalid.", + /// You're being rate limited + RateLimited = "you are being rate limited", + /// Your session timed out. Reconnect and start a new one + SessionTimedOut = "session timed out", + /// You sent an invalid shard when identifying + InvalidShard = "invalid shard in identify", + /// The session would have handled too many guilds - you are required to shard your connection in order to connect + ShardingRequired = "sharding is required to connect", + /// You sent an invalid Gateway version + InvalidAPIVersion = "client sent invalid gateway version", + /// You sent an invalid intent + InvalidIntents = "invalid intent", + /// You sent a disallowed intent. + /// + /// You may have tried to specify an intent that you have not enabled or are not approved for + DisallowedIntents = "disallowed (not enabled / approved) intent", // Errors when initiating a gateway connection - CannotConnect{error: String} = "Cannot connect due to a tungstenite error: {error}", - NonHelloOnInitiate{opcode: u8} = "Received non hello on initial gateway connection ({opcode}), something is definitely wrong", + CannotConnect{error: String} = "encountered a tungstenite error: {error}", + NonHelloOnInitiate{opcode: u8} = "received non hello on initializing connection: {opcode}", // Other misc errors - UnexpectedOpcodeReceived{opcode: u8} = "Received an opcode we weren't expecting to receive: {opcode}", + UnexpectedOpcodeReceived{opcode: u8} = "unexpected opcode received: {opcode}", } custom_error! { @@ -110,25 +121,40 @@ custom_error! { pub VoiceGatewayError // Errors we receive #[default] - UnknownOpcode = "You sent an invalid opcode", - FailedToDecodePayload = "You sent an invalid payload in your identifying to the (Voice) Gateway", - NotAuthenticated = "You sent a payload before identifying with the (Voice) Gateway", - AuthenticationFailed = "The token you sent in your identify payload is incorrect", - AlreadyAuthenticated = "You sent more than one identify payload", - SessionNoLongerValid = "Your session is no longer valid", - SessionTimeout = "Your session has timed out", - ServerNotFound = "We can't find the server you're trying to connect to", - UnknownProtocol = "We didn't recognize the protocol you sent", - Disconnected = "Channel was deleted, you were kicked, voice server changed, or the main gateway session was dropped. Should not reconnect.", - VoiceServerCrashed = "The server crashed, try resuming", - UnknownEncryptionMode = "Server failed to decrypt data", + /// You sent an invalid opcode + UnknownOpcode = "client sent invalid opcode", + /// You sent an invalid payload in your identifying to the (Voice) Gateway + FailedToDecodePayload = "server failed to decode payload while identifying", + /// You sent a payload before identifying with the (Voice) Gateway + NotAuthenticated = "client sent payload before identifying", + /// The token you sent in your identify payload is incorrect + AuthenticationFailed = "account token in identify is invalid", + /// You sent more than one identify payload + AlreadyAuthenticated = "client sent more than one identify payload", + /// Your session is no longer valid + SessionNoLongerValid = "session no longer valid", + /// Your session has timed out + SessionTimeout = "session timed out", + /// Can't find the desired server to connect to + ServerNotFound = "desired server not found", + /// The server didn't recognize the protocol you sent + UnknownProtocol = "unrecognized or unknown protocol", + /// Channel was deleted, you were kicked, voice server changed, or the main gateway session + /// closed. + /// + /// Should not attempt to reconnect. + Disconnected = "disconnected from voice", + /// The server crashed, try resuming + VoiceServerCrashed = "the voice server crashed", + /// Server failed to decrypt data + UnknownEncryptionMode = "server failed to decrypt / unknown encryption mode", // Errors when initiating a gateway connection - CannotConnect{error: String} = "Cannot connect due to a tungstenite error: {error}", - NonHelloOnInitiate{opcode: u8} = "Received non hello on initial gateway connection ({opcode}), something is definitely wrong", + CannotConnect{error: String} = "encountered a tungstenite error: {error}", + NonHelloOnInitiate{opcode: u8} = "received non hello on initializing connection: {opcode}", // Other misc errors - UnexpectedOpcodeReceived{opcode: u8} = "Received an opcode we weren't expecting to receive: {opcode}", + UnexpectedOpcodeReceived{opcode: u8} = "unexpected opcode received: {opcode}", } custom_error! { @@ -138,17 +164,18 @@ custom_error! { // General errors BrokenSocket{error: String} = "Could not write / read from UDP socket: {error}", - NoData = "We have not set received the necessary data to perform this operation.", + /// We have not yet received the necessary data to perform this operation. + NoData = "required data not yet received", // Encryption errors - EncryptionModeNotImplemented{encryption_mode: String} = "Voice encryption mode {encryption_mode} is not yet implemented.", - NoKey = "Tried to encrypt / decrypt rtp data, but no key has been received yet", - FailedEncryption = "Tried to encrypt rtp data, but failed. Most likely this is an issue chorus' nonce generation. Please open an issue on the chorus github: https://github.com/polyphony-chat/chorus/issues/new", - FailedDecryption = "Tried to decrypt rtp data, but failed. Most likely this is an issue chorus' nonce generation. Please open an issue on the chorus github: https://github.com/polyphony-chat/chorus/issues/new", - FailedNonceGeneration{error: String} = "Tried to generate nonce, but failed due to error: {error}.", + EncryptionModeNotImplemented{encryption_mode: String} = "voice encryption mode {encryption_mode} is not yet implemented", + NoKey = "could not encrypt / decrypt data: no key received yet", + FailedEncryption = "failed to encrypt data (most likely this is an issue in chorus' nonce generation, please open an issue)", + FailedDecryption = "failed to decrypt data (most likely this is an issue in chorus' nonce generation, please open an issue)", + FailedNonceGeneration{error: String} = "failed to generate nonce: {error}.", // Errors when initiating a socket connection - CannotBind{error: String} = "Cannot bind socket due to a UDP error: {error}", - CannotConnect{error: String} = "Cannot connect due to a UDP error: {error}", + CannotBind{error: String} = "failed to bind UDP socket: {error}", + CannotConnect{error: String} = "failed to open UDP connection: {error}", }