DR.Networking
1.0.2
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package DR.Networking --version 1.0.2
NuGet\Install-Package DR.Networking -Version 1.0.2
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="DR.Networking" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DR.Networking --version 1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: DR.Networking, 1.0.2"
#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 DR.Networking as a Cake Addin #addin nuget:?package=DR.Networking&version=1.0.2 // Install DR.Networking as a Cake Tool #tool nuget:?package=DR.Networking&version=1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
DR.Networking
A small networking library to make get & post requests
Usage
Make a get request with rate limiting
using DR.Networking;
class Program
{
static void Main(string[] args)
{
//Assign a global rate limit time. When you make a request to the same URL twice the second time this rate limit will be applied.
//Unless you manually specify a rate limit for that page/domain in List<Configuration.SiteSpecific>.
TimeSpan globalRateLimit = TimeSpan.FromSeconds(10);
//Create a list of page/domain specific rate limits. Page specific rate limits will be prioritized followed by domain specific rate limits.
//If you pass a url which isn't contained in either global rate limit will be used.
List<Configuration.SiteSpecific> rateLimitings = new()
{
new Configuration.SiteSpecific() { Duration = TimeSpan.FromSeconds(5), Url = "https://example.com/" },
new Configuration.SiteSpecific() { Duration = TimeSpan.FromSeconds(10), Url = "https://example.org/" },
new Configuration.SiteSpecific() { Duration = TimeSpan.FromSeconds(15), Url = "https://example.net/" },
new Configuration.SiteSpecific() { Duration = TimeSpan.FromSeconds(20), Url = "https://example.edu/" },
new Configuration.SiteSpecific() { Duration = TimeSpan.FromSeconds(25), Url = "https://example.nl/by-sidn/" },
};
//Pass the rate limit to the API (you will only need to set this once).
_ = new Configuration(globalRateLimit, rateLimitings);
//Below is just for example. Run these requests however you want.
List<string> Urls = new()
{
"https://example.com/",
"https://example.com/",
"https://example.org/",
"https://example.org/",
"https://example.net/",
"https://example.net/",
"https://example.edu/",
"https://example.edu/",
"https://example.nl/by-sidn/",
"https://example.nl/by-sidn/",
};
foreach (string url in Urls)
{
var request = Request.Get(url).Result;
if (request.result)
{
Console.WriteLine(request.content.ReadAsStringAsync().Result);
}
else
{
//Handle errors/issues
Console.WriteLine(request.errorCode);
}
}
}
}
Make a get request without rate limiting
using DR.Networking;
class Program
{
static void Main(string[] args)
{
var request = Request.Get(url).Result;
if (request.result)
{
Console.WriteLine(request.content.ReadAsStringAsync().Result);
}
else
{
//Handle errors/issues
Console.WriteLine(request.errorCode);
}
}
}
Make a post request (using FormUrlEncodedContent)
using DR.Networking;
class Program
{
static void Main(string[] args)
{
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("permission", "user"),
new KeyValuePair<string, string>("permission_description", "general-user-account")
});
var request = Request.Post(url, content).Result;
if (request.result)
{
Console.WriteLine(request.content.ReadAsStringAsync().Result);
}
else
{
//Handle errors/issues
Console.WriteLine(request.errorCode);
}
}
}
Or make a post request using dynamic data
using DR.Networking;
class Program
{
public partial class Permissions
{
public string permission { get; set; }
public string permission_description { get; set; }
}
static void Main(string[] args)
{
Permissions content = new Permissions { permission = "user", permission_description = "general-user-account" };
var request = Request.Post(url, content).Result;
if (request.result)
{
Console.WriteLine(request.content.ReadAsStringAsync().Result);
}
else
{
//Handle errors/issues
Console.WriteLine(request.errorCode);
}
}
}
Return values
- result: Boolean which indicates if the request passed or failed.
- errorCode: A string containing the error message in case the request fails.
- content: HttpContent containing the content returned by the request.
- headers: HttpResponseHeaders containing the headers returned by the request.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- Microsoft.CSharp (>= 4.7.0)
- Nager.PublicSuffix (>= 2.2.2)
- Newtonsoft.Json (>= 13.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Added rate limiting to the library