Improve resolvePath handling

This commit is contained in:
kaso17 2017-02-27 12:38:06 +01:00
parent 12d3f1730e
commit 34184d7210
1 changed files with 12 additions and 9 deletions

View File

@ -776,10 +776,10 @@ namespace Jackett.Indexers
if (Login == null || Login.Method != "form") if (Login == null || Login.Method != "form")
return configData; return configData;
var LoginUrl = resolvePath(Login.Path).ToString(); var LoginUrl = resolvePath(Login.Path);
configData.CookieHeader.Value = null; configData.CookieHeader.Value = null;
landingResult = await RequestStringWithCookies(LoginUrl, null, SiteLink); landingResult = await RequestStringWithCookies(LoginUrl.AbsoluteUri, null, SiteLink);
var htmlParser = new HtmlParser(); var htmlParser = new HtmlParser();
landingResultDocument = htmlParser.Parse(landingResult.Content); landingResultDocument = htmlParser.Parse(landingResult.Content);
@ -809,8 +809,8 @@ namespace Jackett.Indexers
if (captchaElement != null) { if (captchaElement != null) {
hasCaptcha = true; hasCaptcha = true;
var CaptchaUrl = resolvePath(captchaElement.GetAttribute("src")); var CaptchaUrl = resolvePath(captchaElement.GetAttribute("src"), LoginUrl);
var captchaImageData = await RequestBytesWithCookies(CaptchaUrl.ToString(), landingResult.Cookies, RequestType.GET, LoginUrl.ToString()); var captchaImageData = await RequestBytesWithCookies(CaptchaUrl.ToString(), landingResult.Cookies, RequestType.GET, LoginUrl.AbsoluteUri);
var CaptchaImage = new ImageItem { Name = "Captcha Image" }; var CaptchaImage = new ImageItem { Name = "Captcha Image" };
var CaptchaText = new StringItem { Name = "Captcha Text" }; var CaptchaText = new StringItem { Name = "Captcha Text" };
@ -1022,25 +1022,28 @@ namespace Jackett.Indexers
return applyFilters(ParseUtil.NormalizeSpace(value), Selector.Filters, variables); return applyFilters(ParseUtil.NormalizeSpace(value), Selector.Filters, variables);
} }
protected Uri resolvePath(string path) protected Uri resolvePath(string path, Uri currentUrl = null)
{ {
if(path.StartsWith("http")) if (currentUrl == null)
currentUrl = new Uri(SiteLink);
if (path.StartsWith("http"))
{ {
return new Uri(path); return new Uri(path);
} }
else if (path.StartsWith("//")) else if (path.StartsWith("//"))
{ {
var basepath = new Uri(SiteLink); var basepath = currentUrl;
return new Uri(basepath.Scheme + ":" + path); return new Uri(basepath.Scheme + ":" + path);
} }
else if(path.StartsWith("/")) else if(path.StartsWith("/"))
{ {
var basepath = new Uri(SiteLink); var basepath = currentUrl;
return new Uri(basepath.Scheme+"://"+ basepath.Host + path); return new Uri(basepath.Scheme+"://"+ basepath.Host + path);
} }
else else
{ {
return new Uri(SiteLink + path); var baseUrl = currentUrl.GetLeftPart(UriPartial.Path);
return new Uri(baseUrl + path);
} }
} }