public async void Navigate(HttpRequestMessage request) { var response = await this.SendAsync(request); var sc = response.StatusCode; var redirected = sc == HttpStatusCode.TemporaryRedirect || sc == HttpStatusCode.Moved || sc == HttpStatusCode.MovedPermanently || sc == HttpStatusCode.Found; if (redirected) { var req = new HttpRequestMessage(HttpMethod.Get, new Uri(response.RequestMessage.RequestUri, response.Headers.Location)); Navigate(req); return; } var content = await response.Content.ReadAsStringAsync(); var jq = new Jq((JsonObject)JsonReader <JsonObject> .Parse(content), Navigate); if (jq.GetText("title") == "Home") { TForm form = jq.GetForm("airchiePosi"); form["posisNomeri"] = ConfigurationManager.AppSettings["pos"]; form.Execute(null); return; } var url = request.Method != HttpMethod.Get ? response.Headers.Location : request.RequestUri; if (_lastUri != null && (_stack.Count == 0 || _stack.Peek() != request.RequestUri)) { _stack.Push(_lastUri); } _lastUri = _lastUri == url ? null : url; _shell.Show(new ScreenActivationContext(jq, Navigate)); }
public ScreenActivationContext(Jq jq, Action <HttpRequestMessage> action) { Jq = jq; }