Skip to content

tungstun-ict/DotnetCute

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cute

banner Custom Utility to Throw Exceptions in ASP .NET Core.

Installation

Dotnet CLI

dotnet add package Tungstun.Cute --version 1.0.1

Package Manager

Install-Package Tungstun.Cute -Version 1.0.1

How to use?

First we need to register the middleware in Program.cs.

// Program.cs

using DotnetCute.Middleware;

app.UseMiddleware<CuteMiddleWare>();

After registering, every (custom) exception that inherits from the ResponseException class will be caught in the middleware. A custom exception would look like this:

// SampleException.cs

using DotnetCute.Attributes;
using DotnetCute.Exceptions;

// Note that if no HttpResponseCode is specified, status code 400 (BadRequest) is used.
[HttpResponseCode(Code = HttpStatusCode.NotFound)]
public class SampleException : ResponseException
{
    public SampleException(string description, params string[] additional) 
        : base(description, additional) { }
}

A simple response generated by Cute looks like this:

{
    "code": "Sample",
    "description": "This is a sample!",
    "additional": []
}	

A decked out response could look like this, depending on the options provided to the middleware.

{
  "Status": 404,
  "Error": "Sample",
  "Description": "This is a sample!",
  "Additional": [],
  "Timestamp": "2022-09-13T18:10:23.0785319+02:00",
  "Path": "/Sample"
}

Options

To spice up the error response we send back to the client, a CuteOptions object can be passed along with the registering of the middleware like this:

app.UseMiddleware<CuteMiddleWare>(new CuteOptions()
{
    ShowStatusCode = true,
    ShowTimeStamp = true,
    ShowPath = true,
    ShowLogs = true,
    ShowStacktrace = false,
});
Option Effect Type
ShowLogs Logs the exception thrown, in the dotnet runner log. boolean
ShowStatusCode Creates a status field with the HTTP status code. boolean
ShowTimeStamp Creates a timestamp field with the current date and time. boolean
ShowPath Creates a path field with the url path that the error was thrown at. boolean
ShowStacktrace Creates a stacktrace field with the generated stack trace of the exception. boolean

Additionial

The additional can be used to return any additional data to the client. All additionals given in the exception will convert to a list.

You can pass additional string data to the exception by adding it at the end like so:

throw new SampleException("This is the description", someString, anotherString, etc...);

An expession as that will come out like:

{
    "code": "Sample",
    "description": "This is the description",
    "additional": [
        "Value of someString",
        "another value"
    ]
}	

License

GPL-3.0