Tungstun.Cute 1.0.1

dotnet add package Tungstun.Cute --version 1.0.1                
NuGet\Install-Package Tungstun.Cute -Version 1.0.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Tungstun.Cute" Version="1.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Tungstun.Cute --version 1.0.1                
#r "nuget: Tungstun.Cute, 1.0.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Tungstun.Cute as a Cake Addin
#addin nuget:?package=Tungstun.Cute&version=1.0.1

// Install Tungstun.Cute as a Cake Tool
#tool nuget:?package=Tungstun.Cute&version=1.0.1                

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

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.1 6,276 9/13/2022
1.0.0 379 9/12/2022

- Adds predefined exceptions for all client and server HTTP errors.
- Adds options to the middleware to customize the errors generated by Cute.