Class CurlRequestBuilder
- Namespace
- CurlDotNet.Core
- Assembly
- CurlDotNet.dll
🎨 Fluent Builder API - Build curl requests programmatically!
For developers who prefer a fluent API over curl command strings. This builder lets you construct HTTP requests using method chaining, perfect for IntelliSense and compile-time checking.
When to use Builder vs Curl String:
- Use Builder - When building requests dynamically, need IntelliSense, or prefer type safety
- Use Curl String - When you have curl commands from docs/examples (paste and go!)
Quick Example:
// Build a request fluently
var result = await CurlRequestBuilder
.Get("https://api.example.com/users")
.WithHeader("Accept", "application/json")
.WithHeader("Authorization", "Bearer token123")
.WithTimeout(TimeSpan.FromSeconds(30))
.ExecuteAsync();
// Same as: curl -H 'Accept: application/json' -H 'Authorization: Bearer token123' --max-time 30 https://api.example.com/users
public class CurlRequestBuilder
- Inheritance
-
CurlRequestBuilder
- Inherited Members
Remarks
The builder provides a type-safe, IntelliSense-friendly way to build HTTP requests. All builder methods return the builder itself for method chaining.
You can convert a builder to a curl command string using ToCurlCommand().
Methods
Compressed(bool)
Enable compression (gzip, deflate, etc.).
public CurlRequestBuilder Compressed(bool compressed = true)
Parameters
compressedbool
Returns
Delete(string)
Create a DELETE request builder.
public static CurlRequestBuilder Delete(string url)
Parameters
urlstring
Returns
Execute()
Execute the request synchronously.
public CurlResult Execute()
Returns
ExecuteAsync(CurlSettings, CancellationToken)
Execute the request with custom settings.
public Task<CurlResult> ExecuteAsync(CurlSettings settings, CancellationToken cancellationToken = default)
Parameters
settingsCurlSettingscancellationTokenCancellationToken
Returns
ExecuteAsync(CancellationToken)
Execute the request asynchronously.
public Task<CurlResult> ExecuteAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationToken
Returns
FailOnError(bool)
Fail on HTTP errors (like curl -f).
public CurlRequestBuilder FailOnError(bool fail = true)
Parameters
failbool
Returns
FollowRedirects(bool)
Enable following redirects (301, 302, etc.).
public CurlRequestBuilder FollowRedirects(bool follow = true)
Parameters
followbool
Returns
Get(string)
Create a GET request builder.
public static CurlRequestBuilder Get(string url)
Parameters
urlstringThe URL to GET
Returns
- CurlRequestBuilder
Builder for method chaining
Examples
// Simple GET request
var result = await CurlRequestBuilder
.Get("https://api.github.com/users/octocat")
.ExecuteAsync();
// GET with headers
var result = await CurlRequestBuilder
.Get("https://api.example.com/data")
.WithHeader("Accept", "application/json")
.WithHeader("X-API-Key", "your-key")
.ExecuteAsync();
// GET with authentication
var result = await CurlRequestBuilder
.Get("https://api.example.com/protected")
.WithBearerToken("your-token")
.FollowRedirects()
.ExecuteAsync();
GetOptions()
Get the underlying options object (for advanced scenarios).
public CurlOptions GetOptions()
Returns
Head(string)
Create a HEAD request builder.
public static CurlRequestBuilder Head(string url)
Parameters
urlstring
Returns
IncludeHeaders(bool)
Include headers in response output (like curl -i).
public CurlRequestBuilder IncludeHeaders(bool include = true)
Parameters
includebool
Returns
Insecure(bool)
Ignore SSL certificate errors (not recommended for production!).
public CurlRequestBuilder Insecure(bool insecure = true)
Parameters
insecurebool
Returns
Patch(string)
Create a PATCH request builder.
public static CurlRequestBuilder Patch(string url)
Parameters
urlstring
Returns
Post(string)
Create a POST request builder.
public static CurlRequestBuilder Post(string url)
Parameters
urlstringThe URL to POST to
Returns
- CurlRequestBuilder
Builder for method chaining
Examples
// POST with JSON
var result = await CurlRequestBuilder
.Post("https://api.example.com/users")
.WithJson(new { name = "John", email = "john@example.com" })
.ExecuteAsync();
// POST with form data
var result = await CurlRequestBuilder
.Post("https://api.example.com/login")
.WithFormData(new Dictionary<string, string> {
{ "username", "user123" },
{ "password", "pass456" }
})
.ExecuteAsync();
// POST with raw string data
var result = await CurlRequestBuilder
.Post("https://api.example.com/data")
.WithData("key1=value1&key2=value2")
.WithHeader("Content-Type", "application/x-www-form-urlencoded")
.ExecuteAsync();
Put(string)
Create a PUT request builder.
public static CurlRequestBuilder Put(string url)
Parameters
urlstring
Returns
Request(string, string)
Create a custom method request builder.
public static CurlRequestBuilder Request(string method, string url)
Parameters
Returns
SaveToFile(string)
Save response to file (like curl -o).
public CurlRequestBuilder SaveToFile(string filePath)
Parameters
filePathstring
Returns
SaveWithRemoteName()
Use remote filename for output (like curl -O).
public CurlRequestBuilder SaveWithRemoteName()
Returns
Silent(bool)
Enable silent mode (like curl -s).
public CurlRequestBuilder Silent(bool silent = true)
Parameters
silentbool
Returns
ToCurlCommand()
Convert this builder to a curl command string. Useful for debugging or logging what will be executed.
public string ToCurlCommand()
Returns
Verbose(bool)
Enable verbose output (like curl -v).
public CurlRequestBuilder Verbose(bool verbose = true)
Parameters
verbosebool
Returns
WithAuth(string)
Set custom authentication header.
public CurlRequestBuilder WithAuth(string authHeader)
Parameters
authHeaderstring
Returns
WithBasicAuth(string, string)
Set basic authentication (username:password).
public CurlRequestBuilder WithBasicAuth(string username, string password)
Parameters
Returns
WithBearerToken(string)
Set bearer token authentication.
public CurlRequestBuilder WithBearerToken(string token)
Parameters
tokenstring
Returns
WithBinaryData(byte[])
Add binary data for upload.
public CurlRequestBuilder WithBinaryData(byte[] data)
Parameters
databyte[]
Returns
WithConnectTimeout(TimeSpan)
Set connection timeout.
public CurlRequestBuilder WithConnectTimeout(TimeSpan timeout)
Parameters
timeoutTimeSpan
Returns
WithCookie(string)
Set cookie string.
public CurlRequestBuilder WithCookie(string cookie)
Parameters
cookiestring
Returns
WithCookieJar(string)
Set cookie jar file path.
public CurlRequestBuilder WithCookieJar(string cookieJarPath)
Parameters
cookieJarPathstring
Returns
WithData(string)
Add POST/PUT data as string.
public CurlRequestBuilder WithData(string data)
Parameters
datastring
Returns
WithFile(string, string)
Upload a file.
public CurlRequestBuilder WithFile(string fieldName, string filePath)
Parameters
Returns
WithFormData(Dictionary<string, string>)
Add form data (application/x-www-form-urlencoded).
public CurlRequestBuilder WithFormData(Dictionary<string, string> formData)
Parameters
formDataDictionary<string, string>
Returns
WithHeader(string, string)
Add a header to the request.
public CurlRequestBuilder WithHeader(string name, string value)
Parameters
Returns
- CurlRequestBuilder
Builder for method chaining
Examples
// Add Content-Type header
var result = await CurlRequestBuilder
.Post("https://api.example.com/data")
.WithHeader("Content-Type", "application/json")
.WithJson(new { key = "value" })
.ExecuteAsync();
// Add custom API key header
var result = await CurlRequestBuilder
.Get("https://api.example.com/protected")
.WithHeader("X-API-Key", "your-api-key-here")
.WithHeader("X-Client-Version", "1.0.0")
.ExecuteAsync();
// Add Accept header for API versioning
var result = await CurlRequestBuilder
.Get("https://api.github.com/user")
.WithHeader("Accept", "application/vnd.github.v3+json")
.WithBearerToken("your-token")
.ExecuteAsync();
WithHeaders(Dictionary<string, string>)
Add multiple headers at once.
public CurlRequestBuilder WithHeaders(Dictionary<string, string> headers)
Parameters
headersDictionary<string, string>
Returns
WithHttpVersion(string)
Set HTTP version (1.0, 1.1, or 2.0).
public CurlRequestBuilder WithHttpVersion(string version)
Parameters
versionstring
Returns
WithJson(object)
Add POST/PUT data as JSON (automatically serializes and sets Content-Type).
public CurlRequestBuilder WithJson(object data)
Parameters
dataobjectThe object to serialize as JSON. Can be any class, anonymous object, or built-in type.
Returns
- CurlRequestBuilder
Builder for method chaining
Examples
// POST with anonymous object
var result = await CurlRequestBuilder
.Post("https://api.example.com/users")
.WithJson(new { name = "John", email = "john@example.com", age = 30 })
.ExecuteAsync();
// POST with typed class
public class User {
public string Name { get; set; }
public string Email { get; set; }
}
var user = new User { Name = "John", Email = "john@example.com" };
var result = await CurlRequestBuilder
.Post("https://api.example.com/users")
.WithJson(user)
.ExecuteAsync();
// PUT with JSON update
var result = await CurlRequestBuilder
.Put("https://api.example.com/users/123")
.WithJson(new { name = "Jane", email = "jane@example.com" })
.WithBearerToken("your-token")
.ExecuteAsync();
WithMaxRedirects(int)
Set maximum number of redirects to follow.
public CurlRequestBuilder WithMaxRedirects(int maxRedirects)
Parameters
maxRedirectsint
Returns
WithMultipartForm(Dictionary<string, string>, Dictionary<string, string>)
Add multipart form data with file uploads.
public CurlRequestBuilder WithMultipartForm(Dictionary<string, string> fields, Dictionary<string, string> files = null)
Parameters
fieldsDictionary<string, string>filesDictionary<string, string>
Returns
WithProxy(string)
Set proxy URL.
public CurlRequestBuilder WithProxy(string proxyUrl)
Parameters
proxyUrlstring
Returns
WithProxy(string, string, string)
Set proxy with authentication.
public CurlRequestBuilder WithProxy(string proxyUrl, string username, string password)
Parameters
Returns
WithRange(string)
Set range for partial downloads (like curl -r).
public CurlRequestBuilder WithRange(string range)
Parameters
rangestring
Returns
WithReferer(string)
Set the Referer header.
public CurlRequestBuilder WithReferer(string referer)
Parameters
refererstring
Returns
WithTimeout(TimeSpan)
Set timeout for the entire operation.
public CurlRequestBuilder WithTimeout(TimeSpan timeout)
Parameters
timeoutTimeSpan
Returns
WithUserAgent(string)
Set the User-Agent header.
public CurlRequestBuilder WithUserAgent(string userAgent)
Parameters
userAgentstring