mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
Abstracted & unified indexer config logic (logins are now saved), implemented indexer config migrations, fixed nCore implementation
This commit is contained in:
@@ -26,6 +26,12 @@ namespace Jackett.Indexers
|
||||
private string CaptchaUrl { get { return SiteLink + "visual.php"; } }
|
||||
private string SearchUrl { get { return SiteLink + "browse.php"; } }
|
||||
|
||||
new ConfigurationDataCaptchaLogin configData
|
||||
{
|
||||
get { return (ConfigurationDataCaptchaLogin)base.configData; }
|
||||
set { base.configData = value; }
|
||||
}
|
||||
|
||||
public BitMeTV(IIndexerManagerService i, Logger l, IWebClient c)
|
||||
: base(name: "BitMeTV",
|
||||
description: "TV Episode specialty tracker",
|
||||
@@ -33,46 +39,45 @@ namespace Jackett.Indexers
|
||||
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||
manager: i,
|
||||
client: c,
|
||||
logger: l)
|
||||
logger: l,
|
||||
configData: new ConfigurationDataCaptchaLogin())
|
||||
{
|
||||
}
|
||||
|
||||
public async Task<ConfigurationData> GetConfigurationForSetup()
|
||||
public override async Task<ConfigurationData> GetConfigurationForSetup()
|
||||
{
|
||||
var response = await webclient.GetString(new Utils.Clients.WebRequest()
|
||||
{
|
||||
Url = LoginUrl
|
||||
});
|
||||
cookieHeader = response.Cookies;
|
||||
CookieHeader = response.Cookies;
|
||||
var captchaImage = await RequestBytesWithCookies(CaptchaUrl);
|
||||
var config = new BmtvConfig();
|
||||
config.CaptchaImage.Value = captchaImage.Content;
|
||||
config.CaptchaCookie.Value = captchaImage.Cookies;
|
||||
return (ConfigurationData)config;
|
||||
configData.CaptchaImage.Value = captchaImage.Content;
|
||||
configData.CaptchaCookie.Value = captchaImage.Cookies;
|
||||
return configData;
|
||||
}
|
||||
|
||||
public async Task ApplyConfiguration(JToken configJson)
|
||||
{
|
||||
var config = new BmtvConfig();
|
||||
config.LoadValuesFromJson(configJson);
|
||||
configData.LoadValuesFromJson(configJson);
|
||||
|
||||
var pairs = new Dictionary<string, string> {
|
||||
{ "username", config.Username.Value },
|
||||
{ "password", config.Password.Value },
|
||||
{ "secimage", config.CaptchaText.Value }
|
||||
};
|
||||
{ "username", configData.Username.Value },
|
||||
{ "password", configData.Password.Value },
|
||||
{ "secimage", configData.CaptchaText.Value }
|
||||
};
|
||||
|
||||
var response = await RequestLoginAndFollowRedirect(LoginPost, pairs, config.CaptchaCookie.Value, true);
|
||||
var response = await RequestLoginAndFollowRedirect(LoginPost, pairs, configData.CaptchaCookie.Value, true);
|
||||
await ConfigureIfOK(response.Cookies, response.Content.Contains("/logout.php"), async () =>
|
||||
{
|
||||
CQ dom = response.Content;
|
||||
var messageEl = dom["table tr > td.embedded > h2"].Last();
|
||||
var errorMessage = messageEl.Text();
|
||||
var captchaImage = await RequestBytesWithCookies(CaptchaUrl);
|
||||
config.CaptchaImage.Value = captchaImage.Content;
|
||||
config.CaptchaText.Value = "";
|
||||
config.CaptchaCookie.Value = captchaImage.Cookies;
|
||||
throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
|
||||
configData.CaptchaImage.Value = captchaImage.Content;
|
||||
configData.CaptchaText.Value = "";
|
||||
configData.CaptchaCookie.Value = captchaImage.Cookies;
|
||||
throw new ExceptionWithConfigData(errorMessage, configData);
|
||||
});
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user