public async Task SendResult(ResultMessage resultMessage, string key = null) { key = key ?? resultMessage.Type.ToString(); var priority = this.GetPriorityOnKey(key); var json = JsonConvert.SerializeObject( resultMessage, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); await this.service.SendMessage(json, key, priority); this.Log("S: " + json + "\r\n"); }
public async Task RequestUrl(WebMessage web) { var request = new HttpClient(); HttpResponseMessage response = null; request.DefaultRequestHeaders.Accept.Add(HttpMediaTypeWithQualityHeaderValue.Parse("text/html")); request.DefaultRequestHeaders.Accept.Add(HttpMediaTypeWithQualityHeaderValue.Parse("application/xhtml+xml")); request.DefaultRequestHeaders.Accept.Add(HttpMediaTypeWithQualityHeaderValue.Parse("application/xml")); request.DefaultRequestHeaders.Accept.Add(HttpMediaTypeWithQualityHeaderValue.Parse("application/json")); request.DefaultRequestHeaders.Accept.Add(HttpMediaTypeWithQualityHeaderValue.Parse("*/*")); request.DefaultRequestHeaders.UserAgent.Add(HttpProductInfoHeaderValue.Parse("Mozilla/5.0")); try { if (web.Action != null) { switch (web.Action.ToUpperInvariant()) { case "POST": { var content = new HttpStringContent(web.Data, UnicodeEncoding.Utf8, "application/json"); request.DefaultRequestHeaders.Accept.Add( new HttpMediaTypeWithQualityHeaderValue("application/json")); response = await request.PostAsync(new Uri(web.Url), content); break; } case "GET": { request.DefaultRequestHeaders.Accept.Add( new HttpMediaTypeWithQualityHeaderValue("application/json")); response = await request.GetAsync(new Uri(web.Url)); break; } } response?.EnsureSuccessStatusCode(); } if (response != null) { var result = new ResultMessage(web) { ResultId = (int)response.StatusCode, Type = 'W' }; if (!string.IsNullOrWhiteSpace(web.Parse) || web.Len > 0) { var temp = await response.Content.ReadAsStringAsync(); if (!string.IsNullOrWhiteSpace(web.Parse)) { var parser = new Parser { Content = temp, Instructions = web.Parse }; if (parser.Parse()) { if (parser.IsDictionary) { mainPage.mainDictionary[parser.Tablename] = parser.Dictionary; temp = parser.Tablename; result.ResultId = parser.Dictionary.Count(); } else { temp = parser.Result; } } } result.Result = string.IsNullOrWhiteSpace(temp) ? string.Empty : temp.Substring(0, Math.Min(temp.Length, web.Len == 0 ? 200 : web.Len)); } await mainPage.SendResult(result); } } catch (Exception e) { await mainPage.SendResult(new ResultMessage(web) { ResultId = e.HResult, Result = e.Message }); } }