Shard.Requests 2.1.0

dotnet add package Shard.Requests --version 2.1.0
NuGet\Install-Package Shard.Requests -Version 2.1.0
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.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Shard.Requests --version 2.1.0
#r "nuget: Shard.Requests, 2.1.0"
#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.1.0

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

NuGet Downloads License Maintainability

Requests

🌟 What Is Requests?

Requests is library for C# .NET 6; it's your trusty sidekick in the world of handling requests. Imagine a friendly companion that takes care of your requests, ensuring they're processed efficiently and systematically. Whether you're dealing with HTTP requests or tackling CPU-intensive tasks like directory searching.

🚀 Why Choose Requests?

  • Priority Magic: Our priority channel ensures that high-priority requests get the VIP treatment—they're processed before the rest. No more waiting in line!
  • Flexibility at Its Best: Requests is designed to be as flexible as possible. Customize it to fit your specific needs, whatever you're building.
  • Parallel Asynchronous Awesomeness: Handle requests in parallel, like a symphony of asynchronous harmony. 🎶

📦 Installation

Getting started with Requests is a breeze:

  1. Open your NuGet Package Manager.
  2. Search for "Shard.Requests"
  3. Install it. Voilà! 🎉

Usage

To utilize the Requests library in C#, begin by importing it:

using Shard.Requests;

Next, instantiate a Request object, and it will automatically be included in the RequestHandler. If a request encounters an error, the RequestHandler will automatically retry the request based on the specified retry settings.

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!<br /> Because handling requests should be as delightful as a warm cup of cocoa on a winter day.

For additional information, refer to the Requests Wiki.

Examples

Meet our star, the OwnRequest class:

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) };
    }
}

OwnRequest is a straightforward implementation of a child class of Request. It doesn’t overwhelm you with complexity, but it’s incredibly useful for quick implementations:

// 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;
});

Create your own requests with a sprinkle of magic! ✨

🌟 Contributing

Join our quest! If you'd like to contribute to this library, submit a pull request or open an issue. We appreciate your help in making Requests the best it can be!

📜 License

Requests is licensed under the MIT license.

Free Code and Free to Use

Have fun!
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 34 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 descriptions
Add RequestContainer IRequest.StartRequestAsync()