--- description: >- Description: A generic class used to encapsulate the result of SignalR hub operations, providing a standardized way to return status, data, and error messages. It supports various HTTP-like status cod --- # HubResult\ **Namespace**: `Govor.Contracts.Responses.SignalR` ### Properties * **Status**: (`HubResultStatus`) Indicates the status of the hub operation, corresponding to HTTP-like status codes (e.g., Success, BadRequest). * **Result**: (`T?`) The data returned by the hub operation, if applicable. Can be null for error cases or when no data is returned. * **ErrorMessage**: (`string?`) A message describing the error, if the operation failed. Null for successful operations. ### Static Methods #### Ok **Description**: Creates a successful result with an optional data payload.\ **Parameters**: * `result`: (`T?`, optional) The data to include in the response (default: `null`).\ **Returns**: A `HubResult` with `Status` set to `Success` (200) and the provided `result`.\ **Example**: ```csharp HubResult result = HubResult.Ok("Operation completed"); ``` #### Created **Description**: Creates a result indicating a resource was created, with an optional data payload.\ **Parameters**: * `result`: (`T?`, optional) The data to include in the response (default: `null`).\ **Returns**: A `HubResult` with `Status` set to `Created` (201) and the provided `result`.\ **Example**: ```csharp HubResult result = HubResult.Created("Resource created"); ``` #### NoContent **Description**: Creates a result indicating the operation was successful but no data is returned.\ **Parameters**: None\ **Returns**: A `HubResult` with `Status` set to `NoContent` (204) and `Result` set to `null`.\ **Example**: ```csharp HubResult result = HubResult.NoContent(); ``` #### BadRequest **Description**: Creates a result indicating a client error due to invalid input.\ **Parameters**: * `message`: (`string`) The error message describing the issue. * `details`: (`T?`, optional) Additional details about the error (default: `null`).\ **Returns**: A `HubResult` with `Status` set to `BadRequest` (400), the provided `message`, and optional `details`.\ **Example**: ```csharp HubResult result = HubResult.BadRequest("Invalid input provided"); ``` #### NotFound **Description**: Creates a result indicating a requested resource was not found.\ **Parameters**: * `message`: (`string`) The error message describing the issue. * `details`: (`T?`, optional) Additional details about the error (default: `null`).\ **Returns**: A `HubResult` with `Status` set to `NotFound` (404), the provided `message`, and optional `details`.\ **Example**: ```csharp HubResult result = HubResult.NotFound("User not found"); ``` #### Unauthorized **Description**: Creates a result indicating the client is not authorized to perform the operation.\ **Parameters**: * `message`: (`string`) The error message describing the issue.\ **Returns**: A `HubResult` with `Status` set to `Unauthorized` (401) and the provided `message`.\ **Example**: ```csharp HubResult result = HubResult.Unauthorized("Authentication required"); ``` #### Conflict **Description**: Creates a result indicating a conflict, such as a duplicate resource.\ **Parameters**: * `message`: (`string`) The error message describing the issue.\ **Returns**: A `HubResult` with `Status` set to `Conflict` (409) and the provided `message`.\ **Example**: ```csharp HubResult result = HubResult.Conflict("Resource already exists"); ``` #### UnprocessableEntity **Description**: Creates a result indicating the request could not be processed due to semantic errors.\ **Parameters**: * `message`: (`string`) The error message describing the issue.\ **Returns**: A `HubResult` with `Status` set to `UnprocessableEntity` (422) and the provided `message`.\ **Example**: ```csharp HubResult result = HubResult.UnprocessableEntity("Invalid data format"); ``` #### Error **Description**: Creates a result indicating an internal server error.\ **Parameters**: * `message`: (`string`) The error message describing the issue.\ **Returns**: A `HubResult` with `Status` set to `ServerError` (500) and the provided `message`.\ **Example**: ```csharp HubResult result = HubResult.Error("Unexpected server error"); ``` ### Enum: HubResultStatus **Description**: Enumerates the possible status codes for a `HubResult` response, aligning with HTTP status codes for consistency in SignalR hub operations. **Values**: * **Success** (200): The operation was successful. * **Created** (201): A resource was successfully created. * **NoContent** (204): The operation was successful, but no content is returned. * **BadRequest** (400): The request was invalid or malformed. * **Unauthorized** (401): The client is not authorized to perform the operation. * **NotFound** (404): The requested resource was not found. * **Conflict** (409): The request conflicts with an existing resource. * **UnprocessableEntity** (422): The request could not be processed due to semantic errors. * **ServerError** (500): An unexpected server error occurred. ### Example Usage ```csharp // Successful operation with data var successResult = HubResult.Ok(new UserDto { Id = Guid.NewGuid(), Username = "example" }); // Error due to invalid input var errorResult = HubResult.BadRequest("Invalid username provided"); // Not found scenario var notFoundResult = HubResult.NotFound("User not found in database"); ```