Skip to content

Commit

Permalink
Adapt to heartharena.com changes
Browse files Browse the repository at this point in the history
Fixes #3
  • Loading branch information
riQQ committed Sep 8, 2016
1 parent 77006f7 commit 9b80711
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
3 changes: 2 additions & 1 deletion Hearth Arena Uploader/Data/UploadResults.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public enum UploadResults
LoginFailedCredentialsWrong,
LoginFailedUnknownError,
SubmittingArenaRunFailedUnknownError,
ConnectionError
ConnectionError,
HtmlParsingError
}
}
12 changes: 8 additions & 4 deletions Hearth Arena Uploader/HearthArenaUploaderLogic.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@ namespace HearthArenaUploader
{
public class HearthArenaUploaderLogic
{
const string prefix = "arena_run";
readonly string rememberMe = "on";
readonly string submit = "Login";
readonly string connectionError = "connection error. Try again, whene heartharena.com is available.";

string username;
SecureString password;

Expand Down Expand Up @@ -181,9 +183,12 @@ private async Task<Result<UploadResults>> SubmitArenaRun(Deck run, CookieContain
// get token from html
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(content);
HtmlNode node = doc.DocumentNode.SelectSingleNode(@"//input[@name='heartharena_arenabundle_arenarun[_token]']");
string token = node.Attributes["value"].Value;

HtmlNode node = doc.DocumentNode.SelectSingleNode($@"//input[@name='{prefix}[_token]']");
string token = node?.GetAttributeValue("value", null);
if (token == null)
{
return new Result<UploadResults>(UploadResults.HtmlParsingError, "Couldn't parse submit arena run csrf token.");
}
// post add arena request
string postReq = ConvertArenaRunToRequest(run, token);

Expand Down Expand Up @@ -241,7 +246,6 @@ private async Task<Result<UploadResults>> SubmitArenaRun(Deck run, CookieContain

private string ConvertArenaRunToRequest(Deck arenaRun, string token)
{
const string prefix = "heartharena_arenabundle_arenarun";
GameStats firstGame = arenaRun.DeckStats.Games.FirstOrDefault();
string date = firstGame != null ? firstGame.StartTime.ToString("MM/dd/yyyy", CultureInfo.GetCultureInfo("en-US")) : DateTime.Now.ToString("MM/dd/yyyy", CultureInfo.GetCultureInfo("en-US"));
HearthArenaClass deckClass;
Expand Down

0 comments on commit 9b80711

Please sign in to comment.