Skip to content

Added cookies support #26

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions src/FlareSolverrSharp/Solvers/FlareSolverr.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ public FlareSolverr(string flareSolverrApiUrl)
_flareSolverrUri = new Uri(apiUrl + "v1");
}

public async Task<FlareSolverrResponse> Solve(HttpRequestMessage request, string sessionId = "")
public async Task<FlareSolverrResponse> Solve(HttpRequestMessage request, string sessionId = "", Types.Cookie[] cookies = null)
{
return await SendFlareSolverrRequest(GenerateFlareSolverrRequest(request, sessionId));
return await SendFlareSolverrRequest(GenerateFlareSolverrRequest(request, sessionId, cookies));
}

public async Task<FlareSolverrResponse> CreateSession()
Expand Down Expand Up @@ -178,7 +178,7 @@ private HttpContent GetSolverRequestContent(FlareSolverrRequest request)
return content;
}

private HttpContent GenerateFlareSolverrRequest(HttpRequestMessage request, string sessionId = "")
private HttpContent GenerateFlareSolverrRequest(HttpRequestMessage request, string sessionId = "", Types.Cookie[] cookies = null)
{
FlareSolverrRequest req;
if (string.IsNullOrWhiteSpace(sessionId))
Expand All @@ -196,7 +196,8 @@ private HttpContent GenerateFlareSolverrRequest(HttpRequestMessage request, stri
Url = url,
MaxTimeout = MaxTimeout,
Proxy = proxy,
Session = sessionId
Session = sessionId,
Cookies = cookies
};
}
else if (request.Method == HttpMethod.Post)
Expand All @@ -212,7 +213,8 @@ private HttpContent GenerateFlareSolverrRequest(HttpRequestMessage request, stri
PostData = request.Content.ReadAsStringAsync().Result,
MaxTimeout = MaxTimeout,
Proxy = proxy,
Session = sessionId
Session = sessionId,
Cookies = cookies
};
}
else if (contentMediaType.Contains("multipart/form-data")
Expand All @@ -233,6 +235,5 @@ private HttpContent GenerateFlareSolverrRequest(HttpRequestMessage request, stri

return GetSolverRequestContent(req);
}

}
}
3 changes: 3 additions & 0 deletions src/FlareSolverrSharp/Types/FlareSolverrRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,8 @@ public class FlareSolverrRequest

[JsonProperty("proxy")]
public FlareSolverrRequestProxy Proxy;

[JsonProperty("cookies")]
public Cookie[] Cookies;
}
}
23 changes: 18 additions & 5 deletions src/FlareSolverrSharp/Types/FlareSolverrResponse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,33 @@ public class Solution

public class Cookie
{
[JsonProperty("name")]
public string Name;

[JsonProperty("value")]
public string Value;

[JsonProperty("domain")]
public string Domain;

[JsonProperty("path")]
public string Path;
public double Expires;
public int Size;

[JsonProperty("expiry", DefaultValueHandling = DefaultValueHandling.Ignore)]
public int Expiry;

[JsonProperty("httpOnly", DefaultValueHandling = DefaultValueHandling.Ignore)]
public bool HttpOnly;

[JsonProperty("secure", DefaultValueHandling = DefaultValueHandling.Ignore)]
public bool Secure;
public bool Session;

[JsonProperty("sameSite")]
public string SameSite;

public string ToHeaderValue() => $"{Name}={Value}";
public System.Net.Cookie ToCookieObj() => new System.Net.Cookie(Name, Value);

public System.Net.Cookie ToCookieObj() => new System.Net.Cookie(Name, Value);
}

public class Headers
Expand All @@ -52,4 +65,4 @@ public class Headers
[JsonProperty(PropertyName = "content-type")]
public string ContentType;
}
}
}