Shard.Requests 2.0.3

There is a newer version of this package available.
See the version list below for details.
dotnet add package Shard.Requests --version 2.0.3
NuGet\Install-Package Shard.Requests -Version 2.0.3
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="Shard.Requests" Version="2.0.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Shard.Requests --version 2.0.3
#r "nuget: Shard.Requests, 2.0.3"
#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 Shard.Requests as a Cake Addin
#addin nuget:?package=Shard.Requests&version=2.0.3

// Install Shard.Requests as a Cake Tool
#tool nuget:?package=Shard.Requests&version=2.0.3

NuGet Downloads License Maintainability

Requests

Requests is a software library for C# .NET 6 that enables handling of requests in a parallel asynchronous state as Request objects. The library utilizes a priority channel to efficiently and systematically handle requests. The priority channel ensures that high-priority requests are processed before low-priority requests. This library is versatile and can be used for HTTP requests or other CPU-intensive tasks such as directory searching.

It has been specifically designed to be flexible and customizable, allowing developers to tailor the library to their specific needs. Requests is an efficient and organized solution that simplifies the process of handling requests in C# .NET 6-based applications.

Installation

You can install Requests by searching for "Requests" in the NuGet Package Manager.

Usage

To use Requests, first import the library:

using Shard.Requests;

Then, create a Request object and it will automaticly be added to the RequestHandler. If a request fails, the RequestHandler will automatically retry the request according to the retry settings specified.

Classes

This library includes the following classes:

  • Request: Main abstract class that can be used to expand functionality on a class-based level.
    • All subclasses have a retry function ♾️
    • A priority function πŸ”
    • Delegates to notify when a Request started, failed, completed, or canceled πŸ“’
    • Implementation for custom CancellationToken and a main CancellationTokenSource to cancel the request.
  • OwnRequest: Wrapper around your own request. It is an easy-to-expand class for handling the requests without the creation of a specific class.
  • RequestContainer: A container class to merge requests together and to start, pause, and await them.
  • ProgressableContainer: A container class to merge requests together that are using a Progress object to report the progress.
  • RequestHandler: A class to handle requests. Every handler is independent of any other handler.

Expand and use as you like!

Examples

Here is an example of creating a child class of Request, called OwnRequest:

public class OwnRequest : Request<RequestOptions<VoidStruct, VoidStruct>, VoidStruct, VoidStruct>
{
    private readonly Func<CancellationToken, Task<bool>> _own;

    public OwnRequest(Func<CancellationToken, Task<bool>> own, RequestOptions<VoidStruct, VoidStruct>? requestOptions = null) : base(requestOptions)
    {
        _own = own;
        AutoStart();
    }
        
    protected override async Task<RequestReturn> RunRequestAsync() 
    { 
        return new RequestReturn() { Successful = await _own.Invoke(Token) };
    }
}

To create an OwnRequest, use the following code:

// Create an object and pass as a parameter an action that uses a CancellationToken
new OwnRequest(async (token) =>
{
    using HttpClient client = new();
    // Create your request message. Here the body of google.com
    HttpRequestMessage requestMessage = new(HttpMethod.Get, "https://www.google.com");
    // Send your request and get the result. Pass the CancellationToken for handling it later over the Request object
    HttpResponseMessage response = await client.SendAsync(requestMessage, token);
    // If the response does not succeed
    if (!response.IsSuccessStatusCode)
        return false; // Return false to retry and call the failed method
                      // If the response succeeds. Do what you want and return to finish the request
    Console.WriteLine("Finished");
    return true;
});

Contributing

If you would like to contribute to this library, please submit a pull request or open an issue. We welcome all contributions and appreciate your help in making Requests the best library it can be!

License

Requests is licensed under the MIT license.

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.
  • net6.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Shard.Requests:

Package Downloads
Shard.DownloadAssistant

A free to use library as a download manager. Tested with more than 1000 HttpRequests. Also includes retry, priority and cancel function. Classes: β€’ StatusRequest: Calls a Head request and returns a response message with the headers. β€’ OwnRequest: Wrapper around your own requests. Easy to self-expand function. β€’ SiteRequest: Scans a website for all references. β€’ LoadRequest: To download the response into a file. o This is a HTTP file downloader with pause function.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.1.0 36 4/26/2024
2.0.3 255 12/14/2023
2.0.1 141 11/20/2023
2.0.0 169 10/21/2023
1.0.1 124 9/9/2023
1.0.0 117 9/8/2023
0.1.1 152 7/10/2023
0.1.0 128 6/22/2023

Fix RequestContainer congurent issue