mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
Curl: add support for request headers
This commit is contained in:
@@ -24,14 +24,16 @@ namespace Jackett
|
|||||||
public string Referer { get; private set; }
|
public string Referer { get; private set; }
|
||||||
public HttpMethod Method { get; private set; }
|
public HttpMethod Method { get; private set; }
|
||||||
public IEnumerable<KeyValuePair<string, string>> PostData { get; set; }
|
public IEnumerable<KeyValuePair<string, string>> PostData { get; set; }
|
||||||
|
public Dictionary<string, string> Headers { get; set; }
|
||||||
public string RawPOSTDdata { get; set;}
|
public string RawPOSTDdata { get; set;}
|
||||||
|
|
||||||
public CurlRequest(HttpMethod method, string url, string cookies = null, string referer = null, string rawPOSTData = null)
|
public CurlRequest(HttpMethod method, string url, string cookies = null, string referer = null, Dictionary<string, string> headers = null, string rawPOSTData = null)
|
||||||
{
|
{
|
||||||
Method = method;
|
Method = method;
|
||||||
Url = url;
|
Url = url;
|
||||||
Cookies = cookies;
|
Cookies = cookies;
|
||||||
Referer = referer;
|
Referer = referer;
|
||||||
|
Headers = headers;
|
||||||
RawPOSTDdata = rawPOSTData;
|
RawPOSTDdata = rawPOSTData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -52,16 +54,16 @@ namespace Jackett
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task<CurlResponse> GetAsync(string url, string cookies = null, string referer = null)
|
public static async Task<CurlResponse> GetAsync(string url, string cookies = null, string referer = null, Dictionary<string, string> headers = null)
|
||||||
{
|
{
|
||||||
var curlRequest = new CurlRequest(HttpMethod.Get, url, cookies, referer);
|
var curlRequest = new CurlRequest(HttpMethod.Get, url, cookies, referer, headers);
|
||||||
var result = await PerformCurlAsync(curlRequest);
|
var result = await PerformCurlAsync(curlRequest);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task<CurlResponse> PostAsync(string url, IEnumerable<KeyValuePair<string, string>> formData, string cookies = null, string referer = null, string rawPostData =null)
|
public static async Task<CurlResponse> PostAsync(string url, IEnumerable<KeyValuePair<string, string>> formData, string cookies = null, string referer = null, Dictionary<string, string> headers = null, string rawPostData =null)
|
||||||
{
|
{
|
||||||
var curlRequest = new CurlRequest(HttpMethod.Post, url, cookies, referer);
|
var curlRequest = new CurlRequest(HttpMethod.Post, url, cookies, referer, headers);
|
||||||
curlRequest.PostData = formData;
|
curlRequest.PostData = formData;
|
||||||
curlRequest.RawPOSTDdata = rawPostData;
|
curlRequest.RawPOSTDdata = rawPostData;
|
||||||
var result = await PerformCurlAsync(curlRequest);
|
var result = await PerformCurlAsync(curlRequest);
|
||||||
@@ -90,7 +92,16 @@ namespace Jackett
|
|||||||
easy.BufferSize = 64 * 1024;
|
easy.BufferSize = 64 * 1024;
|
||||||
easy.UserAgent = BrowserUtil.ChromeUserAgent;
|
easy.UserAgent = BrowserUtil.ChromeUserAgent;
|
||||||
easy.FollowLocation = false;
|
easy.FollowLocation = false;
|
||||||
easy.ConnectTimeout = 20;
|
easy.ConnectTimeout = 20;
|
||||||
|
if(curlRequest.Headers != null)
|
||||||
|
{
|
||||||
|
CurlSlist curlHeaders = new CurlSlist();
|
||||||
|
foreach (var header in curlRequest.Headers)
|
||||||
|
{
|
||||||
|
curlHeaders.Append(header.Key + ": " + header.Value);
|
||||||
|
}
|
||||||
|
easy.SetOpt(CurlOption.HttpHeader, curlHeaders);
|
||||||
|
}
|
||||||
|
|
||||||
easy.WriteFunction = (byte[] buf, int size, int nmemb, object data) =>
|
easy.WriteFunction = (byte[] buf, int size, int nmemb, object data) =>
|
||||||
{
|
{
|
||||||
|
@@ -100,7 +100,7 @@ namespace Jackett.Utils.Clients
|
|||||||
Jackett.CurlHelper.CurlResponse response;
|
Jackett.CurlHelper.CurlResponse response;
|
||||||
if (request.Type == RequestType.GET)
|
if (request.Type == RequestType.GET)
|
||||||
{
|
{
|
||||||
response = await CurlHelper.GetAsync(request.Url, request.Cookies, request.Referer);
|
response = await CurlHelper.GetAsync(request.Url, request.Cookies, request.Referer, request.Headers);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -113,7 +113,7 @@ namespace Jackett.Utils.Clients
|
|||||||
logger.Debug("UnixLibCurlWebClient: Posting " + StringUtil.PostDataFromDict(request.PostData));
|
logger.Debug("UnixLibCurlWebClient: Posting " + StringUtil.PostDataFromDict(request.PostData));
|
||||||
}
|
}
|
||||||
|
|
||||||
response = await CurlHelper.PostAsync(request.Url, request.PostData, request.Cookies, request.Referer, request.RawBody);
|
response = await CurlHelper.PostAsync(request.Url, request.PostData, request.Cookies, request.Referer, request.Headers, request.RawBody);
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = new WebClientByteResult()
|
var result = new WebClientByteResult()
|
||||||
|
Reference in New Issue
Block a user