private async Task<string> SendPost(string cookie, Dictionary<string, string> urlEncodedData, string uri, bool queuedMessage = false)
{
if (!urlEncodedData.ContainsKey("api_type"))
urlEncodedData.Add("api_type", "json");
if (!String.IsNullOrEmpty(CaptchaIden))
{
if (urlEncodedData.ContainsKey("iden"))
urlEncodedData["iden"] = CaptchaIden;
else
urlEncodedData.Add("iden", CaptchaIden);
}
if (!String.IsNullOrEmpty(Captcha))
{
if (urlEncodedData.ContainsKey("captcha"))
urlEncodedData["captcha"] = Captcha;
else
urlEncodedData.Add("captcha", Captcha);
}
string response = null;
response = await _simpleHttpService.SendPost(cookie, urlEncodedData, uri);
var jsonObject = JsonConvert.DeserializeObject(response) as JObject;
JToken captcha = null;
JToken errors = null;
JObject first = null;
if (jsonObject.First != null)
first = (jsonObject.First as JProperty).Value as JObject;
if (first != null)
{
first.TryGetValue("captcha", out captcha);
first.TryGetValue("errors", out errors);
if (captcha != null)
CaptchaIden = captcha.Value<string>();
if (captcha != null && errors != null)
{
var user = await _userService.GetUser();
user.NeedsCaptcha = true;
// If a user has told us to bug off this session, do as they say
if (!_settingsService.PromptForCaptcha)
return response;
PostQueue.Add(new PostData { Cookie = cookie, Uri = uri, UrlEncodedData = urlEncodedData });
CaptchaViewModel captchaVM = CaptchaViewModel.GetInstance(_baconProvider);
captchaVM.ShowCaptcha(CaptchaIden);
}
}
return response;
}