private void Initialize() { if (_isInitialized) { return; } _isInitialized = true; _selResultOption = _resultOptions[0]; OnlineUriFactory.CreateOnlineUris(); foreach (var uri in OnlineUriFactory.OnlineUris) { //create a query OnlineQuery query = new OnlineQuery(); query.OnlineUri = uri; _browseQueries.Add(query); } //init timer _timer = new DispatcherTimer() { Interval = TimeSpan.FromMilliseconds(25d), IsEnabled = false }; _timer.Tick += (o, e) => { //update the progress bar _progressValue += 1.0; if (_progressValue > _maxProgressValue) { _progressValue = 1.0; } FrameworkApplication.Current.Dispatcher.Invoke(() => OnPropertyChanged("ProgressValue")); }; }
public async Task <IActionResult> EndSession(int query_id) { OnlineQuery query = await _db.OnlineQueries.Where(a => a.Id == query_id).FirstOrDefaultAsync(); query.IsDeleted = 1; await _db.SaveChangesAsync(); return(Ok(new ReturnMessage())); }
public async Task <IActionResult> Disable(int query_id) { OnlineQuery query = await _db.OnlineQueries.Where(a => a.Id == query_id).FirstOrDefaultAsync(); query.IsSchedule = 0; await _db.SaveChangesAsync(); return(Ok(new ReturnMessage())); }
public async Task ExecDownloadAsync(OnlineQuery query, string fileName) { EsriHttpClient httpClient = new EsriHttpClient(); var response = httpClient.Get(query.DownloadUrl); var stm = await response.Content.ReadAsStreamAsync(); using (MemoryStream ms = new MemoryStream()) { stm.CopyTo(ms); System.IO.File.WriteAllBytes(fileName, ms.ToArray()); } }
private Tuple <long, long> ProcessResults( ObservableCollection <OnlineResultItem> results, string json, OnlineQuery query) { long num = -1; long next = -1; if (string.IsNullOrEmpty(json)) { return(new Tuple <long, long>(num, next)); } //process the query results dynamic queryResults = JObject.Parse(json); if (queryResults.error != null) { //there was an error in the query return(new Tuple <long, long>(num, next)); } long numberOfTotalItems = queryResults.total.Value; int count = 0; if (numberOfTotalItems > 0) { //these are the results List <dynamic> userItemResults = new List <dynamic>(); // store the results in the list userItemResults.AddRange(queryResults.results); foreach (dynamic item in userItemResults) { count++; OnlineResultItem ri = new OnlineResultItem(); ri.Id = item.id; ri.Title = item.title ?? String.Format("Item {0}", count); ri.Name = item.name; //ri.Snippet = item.snippet ?? "no snippet"; ri.Url = item.url ?? ""; string thumb = item.thumbnail ?? ""; string s = item.snippet; string t = item.type; string a = item.access; ri.Configure(query.URL, ri.Id, thumb, s, t, a); results.Add(ri); } num = queryResults.num.Value; next = queryResults.nextStart.Value; } return(new Tuple <long, long>(num, next)); }
/// <summary> /// Returns the query string property or an empty string if the value is null /// </summary> /// <returns>The query string</returns> public Object Convert(Object value, Type targetType, Object parameter, CultureInfo culture) { if (value == null) { return(""); } if ((value as OnlineQuery) == null) { return(""); } OnlineQuery val = value as OnlineQuery; return(val.FinalUrl); }
public async Task ExecDownloadAsync2(OnlineQuery query, string fileName) { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(query.DownloadUrl); req.Method = "GET"; req.Referer = "ProjectViewer"; req.UserAgent = SubmitQuery.DefaultUserAgent; //submit the query var response = await req.GetResponseAsync(); using (MemoryStream ms = new MemoryStream()) { response.GetResponseStream().CopyTo(ms); System.IO.File.WriteAllBytes(fileName, ms.ToArray()); } }
public IActionResult GetOnlineQuery([FromBody] OnlineQueryDTO request) { #region FunctionBody bool existedQuery = _db.OnlineQueries.Any(c => c.UserId == request.UserId); if (existedQuery) { return(StatusCode(400, new ReturnErrorMessage((int)ErrorTypes.Errors.UnfinishedQuery))); } bool existedDate = _db.OnlineQueries.Any(a => a.ServiceDate == request.ServiceDate); if (existedDate) { return(StatusCode(400, new ReturnErrorMessage((int)ErrorTypes.Errors.ExistedTime))); } request.StartDate = DateTime.Now; int datecompare = DateTime.Compare(request.StartDate, request.ServiceDate); if (datecompare >= 0) { return(StatusCode(400, new ReturnErrorMessage((int)ErrorTypes.Errors.ValidationFailed))); } OnlineQuery query = new OnlineQuery(); query.StartDate = request.StartDate; query.ServiceDate = request.ServiceDate; query.ServiceId = request.ServiceId; query.UserId = request.UserId; query.Info = request.Info; List <PDFClass> pdfcls = new List <PDFClass>(); if (request.Files != null) { if (request.Files.Count > 0) { foreach (var item in request.Files) { pdfcls.Add(new PDFClass { PDFName = item.PDFName }); } } } query.PdfClasses = pdfcls; _db.OnlineQueries.Add(query); _db.SaveChanges(); return(Ok(new ReturnMessage())); #endregion }
public IActionResult GetResult([FromBody] ClientCredentials request) { bool existqueryId = _db.OnlineQueries.Any(a => a.Code == request.QueryId); if (!existqueryId) { return(BadRequest(new ReturnErrorMessage(errortype: (int)ErrorTypes.Errors.CodeInvalid))); } bool existNumber = _db.OnlineQueries.Any(a => a.PhoneNumber == request.PhoneNumber); if (!existNumber) { return(BadRequest(new ReturnErrorMessage(errortype: (int)ErrorTypes.Errors.NumberInvalid))); } OnlineQuery onlineQuery = _db.OnlineQueries.Where(a => a.Code == request.QueryId && a.PhoneNumber == request.PhoneNumber).FirstOrDefault(); return(Ok(new ReturnMessage(data: _db.PDFBase.Where(a => a.OnlineQueryId == onlineQuery.Id).FirstOrDefault()))); }
public async Task <IActionResult> ConfirmReal([FromBody] OnlineQuery request) { #region FunctionBody bool existed = await _db.OnlineQueries.AnyAsync( a => a.QueryDate == request.QueryDate && a.IsDeleted == 0 && a.IsSchedule == 1); if (existed) { return(BadRequest(new ReturnErrorMessage(errortype: (int)ErrorTypes.Errors.ExistedTime, message: "This Time is exist by other user"))); } Doctor dcBase = await _db.Doctors.FirstOrDefaultAsync(a => a.Id == request.DoctorId); DoctorsInfo doctor = await _db.DoctorsInfos.FirstOrDefaultAsync(a => a.DoctorId == request.DoctorId); if ( doctor.WorkTimeFromDate > (int)request.QueryDate.DayOfWeek || doctor.WorkTimeToDate < (int)request.QueryDate.DayOfWeek ) { return(BadRequest(new ReturnErrorMessage(errortype: (int)ErrorTypes.Errors.NotAllowedTime, message: "This Time not registered by Doctor"))); } try { request.ServeDate = DateTime.Now; request.IsSchedule = 1; request.IsOnline = 0; request.Price = dcBase.Price; await _db.OnlineQueries.AddAsync(request); } catch (Exception x) { return(BadRequest(new ReturnErrorMessage(errortype: (int)ErrorTypes.Errors.Internal, message: x.Message, code: 500))); } await _db.SaveChangesAsync(); return(Ok(new ReturnMessage())); #endregion }
protected internal override Task InitializeAsync() { if (_initialized) { return(Task.FromResult(0)); } return(QueuedTask.Run(() => { if (string.IsNullOrEmpty(_activePortalUri)) { var portal = ArcGISPortalManager.Current.GetActivePortal(); _activePortalUri = portal?.PortalUri.ToString(); _token = portal?.GetToken(); } if (!string.IsNullOrEmpty(_activePortalUri)) { var query = new OnlineQuery(_activePortalUri); query.Configure(_contentType); var submitQuery = new SubmitQuery(); submitQuery.Exec(query, _results, 100); } })); }
/// <summary> /// Execute the given query and return the result /// </summary> /// <param name="query"></param> /// <returns></returns> public async Task <string> ExecWithEsriClientAsync(OnlineQuery query, ObservableCollection <OnlineResultItem> results, int maxResults = 0) { if (maxResults == 0) { maxResults = OnlineQuery.DefaultMaxResults; } if (MaxResponseLength == 0) { MaxResponseLength = OnlineQuery.DefaultMaxResponseLength; } _response = new StringBuilder(); _errorResponse = ""; //slap in the initial request _response.AppendLine(query.FinalUrl); _response.AppendLine(""); try { Tuple <long, long> stats = new Tuple <long, long>(-1, -1); do { query.Start = stats.Item2; Debug.WriteLine(""); Debug.WriteLine(query.FinalUrl); Debug.WriteLine(""); EsriHttpClient httpClient = new EsriHttpClient(); //submit the query EsriHttpResponseMessage response = await httpClient.GetAsync(new Uri(query.FinalUrl).ToString()); HttpResponseHeaders headers = response.Headers; //read out the json string raw = await response.Content.ReadAsStringAsync(); //convert entity-replacement tags raw = raw.Replace("<", "<").Replace(">", ">"); if (_response.Length < MaxResponseLength) { _response.AppendLine(""); _response.AppendLine(raw); if (_response.Length > MaxResponseLength) { _response.AppendLine("..."); } } Debug.WriteLine(""); Debug.WriteLine(raw); Debug.WriteLine(""); //deserialize stats = await ProcessResultsAsync(results, raw, query); } while (stats.Item2 < maxResults && stats.Item2 > 0); } catch (WebException we) { //bad request _response.AppendLine(""); _response.AppendLine("WebException: " + we.Message); _response.AppendLine(query.FinalUrl); _response.AppendLine(""); _response.AppendLine(new Uri(query.FinalUrl).Scheme.ToUpper() + " " + ((int)we.Status).ToString()); try { _errorResponse = new StreamReader(we.Response.GetResponseStream()).ReadToEnd(); _response.AppendLine(_errorResponse); } catch { } } return(_response.ToString()); }
/// <summary> /// Execute the given query and return the result /// </summary> /// <param name="query"></param> /// <param name="results"></param> /// <param name="portalUrl"></param> /// <param name="maxResults"></param> /// <returns></returns> //public string Exec(OnlineQuery query, ObservableCollection<OnlineResultItem> results, // int maxResults = 0) { // if (maxResults == 0) // maxResults = DefaultMaxResults; // if (MaxResponseLength == 0) // MaxResponseLength = DefaultMaxResponseLength; // _response = new StringBuilder(); // _errorResponse = ""; // //slap in the initial request // _response.AppendLine(query.FinalUrl); // _response.AppendLine(""); // results.Clear(); // try { // Tuple<long, long> stats = new Tuple<long, long>(-1, -1); // do { // query.Start = stats.Item2; // System.Diagnostics.Debug.WriteLine(""); // System.Diagnostics.Debug.WriteLine(query.FinalUrl); // System.Diagnostics.Debug.WriteLine(""); // EsriHttpClient httpClient = new EsriHttpClient(); // var response = httpClient.Get(query.FinalUri.ToString()); // var raw = response.Content.ReadAsStringAsync().Result;//block // stats = ProcessResults(results, raw, query); // } while (stats.Item2 < maxResults && stats.Item2 > 0); // } // catch (WebException we) { // //bad request // _response.AppendLine(""); // _response.AppendLine("WebException: " + we.Message); // _response.AppendLine(query.FinalUrl); // _response.AppendLine(""); // _response.AppendLine(new Uri(query.FinalUrl).Scheme.ToUpper() + " " + // ((int)we.Status).ToString()); // try { // _errorResponse = new StreamReader(we.Response.GetResponseStream()).ReadToEnd(); // _response.AppendLine(_errorResponse); // } // catch { // } // } // finally { // //content = _response.ToString() // // .Replace("{", "{\r\n") // // .Replace("}", "\r\n}") // // .Replace(",\"", ",\r\n\""); // } // return _response.ToString(); //} public async void Exec2Async(OnlineQuery query, ObservableCollection <OnlinePortalItem> results, string portalUrl, int maxResults = 0) { if (maxResults == 0) { maxResults = DefaultMaxResults; } if (MaxResponseLength == 0) { MaxResponseLength = DefaultMaxResponseLength; } _response = new StringBuilder(); _errorResponse = ""; //slap in the initial request _response.AppendLine(query.FinalUrl); _response.AppendLine(""); results.Clear(); try { Tuple <long, int> stats = new Tuple <long, int>(-1, -1); var portal = ArcGISPortalManager.Current.GetPortal(new Uri(portalUrl)); int startIndex = 0; var totalCount = 0; do { query.Start = startIndex; System.Diagnostics.Debug.WriteLine(""); System.Diagnostics.Debug.WriteLine(query.FinalUrl); System.Diagnostics.Debug.WriteLine(""); PortalQueryResultSet <PortalItem> portalResults = await ArcGISPortalExtensions.SearchForContentAsync(portal, query.PortalQueryParams); if (portalResults.Results.Count <= 0) { break; } foreach (var item in portalResults.Results.OfType <PortalItem>()) { OnlinePortalItem ri = new OnlinePortalItem { Id = item.ID, Title = item.Title ?? String.Format("Item {0}", startIndex + ++totalCount), Name = item.Name, Snippet = item.Description ?? "no snippet", Url = item.Url ?? "", ThumbnailUrl = item.ThumbnailPath, PortalItemType = item.PortalItemType }; string thumb = item.ThumbnailUri?.ToString() ?? ""; string s = item.Description; string a = item.Access.ToString(); ri.Configure(query.URL, ri.Id, thumb, s, item.PortalItemType, a); results.Add(ri); totalCount++; } startIndex += results.Count; } while (totalCount < maxResults); } catch (WebException we) { //bad request _response.AppendLine(""); _response.AppendLine("WebException: " + we.Message); _response.AppendLine(query.FinalUrl); _response.AppendLine(""); _response.AppendLine(new Uri(query.FinalUrl).Scheme.ToUpper() + " " + ((int)we.Status).ToString()); try { _errorResponse = new StreamReader(we.Response.GetResponseStream()).ReadToEnd(); _response.AppendLine(_errorResponse); } catch { } } finally { } //return _response.ToString(); }
public Task <bool> DownloadFileAsync(OnlineQuery query) { return(new EsriHttpClient().GetAsFileAsync(query.DownloadUrl, query.DownloadFileName)); }
protected internal async virtual void ExecuteItemAction(string id) { _selectedResult = _results.FirstOrDefault(ri => ri.Id == id); if (_selectedResult == null) { return; } //Either we open a project and then create the item or //we download the item and then create a project from it. //MapPackage is a special case. We download it, create //a project and then add the map package to it. VisibleList = Visibility.Collapsed; VisibleText = Visibility.Visible; StatusTitle = $@"{_selectedResult.LinkText}: {_selectedResult.Title}"; switch (_selectedResult.PortalItemType) { case PortalItemType.WebMap: { await Project.CreateAsync(new CreateProjectSettings() { Name = System.IO.Path.GetFileNameWithoutExtension(_selectedResult.Name) }); var currentItem = ItemFactory.Instance.Create(_selectedResult.Id, ItemFactory.ItemType.PortalItem); if (MapFactory.Instance.CanCreateMapFrom(currentItem)) { await QueuedTask.Run(() => { var newMap = MapFactory.Instance.CreateMapFromItem(currentItem); FrameworkApplication.Panes.CreateMapPaneAsync(newMap); }); } } break; case PortalItemType.Layer: { var ps = new CreateProjectSettings() { Name = System.IO.Path.GetFileNameWithoutExtension(_selectedResult.Name), LocationPath = ConfigWithStartWizardModule.DefaultFolder(), TemplateType = TemplateType.GlobalScene }; _eventToken = ArcGIS.Desktop.Mapping.Events.MapViewInitializedEvent.Subscribe((args) => { Item currentItem = ItemFactory.Instance.Create(_selectedResult.Id, ItemFactory.ItemType.PortalItem); if (LayerFactory.Instance.CanCreateLayerFrom(currentItem)) { var lyrParams = new LayerCreationParams(currentItem); QueuedTask.Run(() => LayerFactory.Instance.CreateLayer <FeatureLayer>(lyrParams, args.MapView.Map)); } ArcGIS.Desktop.Mapping.Events.MapViewInitializedEvent.Unsubscribe(_eventToken); _eventToken = null; }); try { await Project.CreateAsync(ps); } catch (Exception ex) { Status = $@"Error occurred: {ex.ToString()}"; System.Diagnostics.Debug.WriteLine(ex.ToString()); } } break; default: var query = new OnlineQuery(_activePortalUri); query.ConfigureData("", _selectedResult.Id, _selectedResult.Name); Status = "Downloading"; await new SubmitQuery().DownloadFileAsync(query); Status = "Opening"; //Project package if (_selectedResult.PortalItemType == PortalItemType.ProjectPackage) { await Project.OpenAsync(query.DownloadFileName); } //Project Template else if (_selectedResult.PortalItemType == PortalItemType.MapTemplate) { var ps = new CreateProjectSettings() { Name = System.IO.Path.GetFileNameWithoutExtension(_selectedResult.Name), LocationPath = ConfigWithStartWizardModule.DefaultFolder(), TemplatePath = query.DownloadFileName }; try { await Project.CreateAsync(ps); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); Status = $@"Error occurred: {ex.ToString()}"; } } //Map Package else if (_selectedResult.PortalItemType == PortalItemType.MapPackage) { await Project.CreateAsync(new CreateProjectSettings() { Name = System.IO.Path.GetFileNameWithoutExtension(_selectedResult.Name) }); try { var mapPackage = ItemFactory.Instance.Create(query.DownloadFileName); MapFactory.Instance.CreateMapFromItem(mapPackage); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); Status = $@"Error occurred: {ex.ToString()}"; } } break; } }
public GameServer(IdentifierQuery identifierQuery = null, OnlineQuery onlineQuery = null, Network network = null) { this.identifierQuery = identifierQuery; this.onlineQuery = onlineQuery; this.network = network ?? new Network(); }
/// <summary> /// Execute the given query and return the result /// </summary> /// <param name="query"></param> /// <param name="results"></param> /// <param name="maxResults"></param> /// <returns></returns> public string Exec(OnlineQuery query, ObservableCollection <OnlineResultItem> results, int maxResults = 0) { if (maxResults == 0) { maxResults = DefaultMaxResults; } if (MaxResponseLength == 0) { MaxResponseLength = DefaultMaxResponseLength; } _response = new StringBuilder(); _errorResponse = ""; //slap in the initial request _response.AppendLine(query.FinalUrl); _response.AppendLine(""); results.Clear(); try { Tuple <long, long> stats = new Tuple <long, long>(-1, -1); do { query.Start = stats.Item2; System.Diagnostics.Debug.WriteLine(""); System.Diagnostics.Debug.WriteLine(query.FinalUrl); System.Diagnostics.Debug.WriteLine(""); EsriHttpClient httpClient = new EsriHttpClient(); var response = httpClient.Get(query.FinalUri.ToString()); var raw = response.Content.ReadAsStringAsync().Result;//block stats = ProcessResults(results, raw, query); } while (stats.Item2 < maxResults && stats.Item2 > 0); } catch (WebException we) { //bad request _response.AppendLine(""); _response.AppendLine("WebException: " + we.Message); _response.AppendLine(query.FinalUrl); _response.AppendLine(""); _response.AppendLine(new Uri(query.FinalUrl).Scheme.ToUpper() + " " + ((int)we.Status).ToString()); try { _errorResponse = new StreamReader(we.Response.GetResponseStream()).ReadToEnd(); _response.AppendLine(_errorResponse); } catch { } } finally { //content = _response.ToString() // .Replace("{", "{\r\n") // .Replace("}", "\r\n}") // .Replace(",\"", ",\r\n\""); } return(_response.ToString()); }
private Task <Tuple <long, long> > ProcessResultsAsync(ObservableCollection <OnlineResultItem> results, string json, OnlineQuery query) { //do this in the background return(Task.Run(() => { long num = -1; long next = -1; if (json.IsEmpty()) { return new Tuple <long, long>(num, next); } //process the query results dynamic queryResults = JObject.Parse(json); if (queryResults.error != null) { //there was an error in the query return new Tuple <long, long>(num, next); } long numberOfTotalItems = queryResults.total.Value; int count = 0; if (numberOfTotalItems > 0) { //these are the results List <dynamic> userItemResults = new List <dynamic>(); // store the results in the list userItemResults.AddRange(queryResults.results); foreach (dynamic item in userItemResults) { count++; OnlineResultItem ri = new OnlineResultItem(); ri.Id = item.id; ri.Title = item.title ?? String.Format("Item {0}", count); ri.Snippet = item.snippet ?? "no snippet"; ri.Url = item.url ?? ""; string thumb = item.thumbnail ?? ""; ri.SetThumbnailURL(query.Portal, ri.Id, thumb); results.Add(ri); } num = queryResults.num.Value; next = queryResults.nextStart.Value; } return new Tuple <long, long>(num, next); })); }
protected internal async virtual void ExecuteItemAction(string url) { _result = _results.FirstOrDefault(ri => ri.Id == url); if (_result == null) { return; } //Either we open a project and then create the item or //we download the item and then create a project from it. //MapPackage is a special case. We download it, create //a project and then add the map package to it. switch (_result.OnlineItemType) { case OnlineItemType.WebMap: { await Project.CreateAsync(new CreateProjectSettings() { Name = System.IO.Path.GetFileNameWithoutExtension(_result.Name) }); var currentItem = ItemFactory.Create(_result.Id, ItemFactory.ItemType.PortalItem); if (MapFactory.CanCreateMapFrom(currentItem)) { var newMap = await MapFactory.CreateMapAsync(currentItem); await FrameworkApplication.Panes.CreateMapPaneAsync(newMap); } } break; case OnlineItemType.Layer: { var ps = new CreateProjectSettings() { Name = System.IO.Path.GetFileNameWithoutExtension(_result.Name), LocationPath = ConfigWithStartWizardModule.DefaultFolder(), TemplatePath = ConfigWithStartWizardModule.GetDefaultTemplates()[0] //Scene }; _eventToken = ArcGIS.Desktop.Mapping.Events.MapViewInitializedEvent.Subscribe((args) => { Item currentItem = ItemFactory.Create(_result.Id, ItemFactory.ItemType.PortalItem); if (LayerFactory.CanCreateLayerFrom(currentItem)) { QueuedTask.Run(() => LayerFactory.CreateLayer(currentItem, args.MapView.Map)); } ArcGIS.Desktop.Mapping.Events.MapViewInitializedEvent.Unsubscribe(_eventToken); _eventToken = null; }); try { await Project.CreateAsync(ps); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } } break; default: var query = new OnlineQuery(_activePortalUri); query.ConfigureData("", _result.Id, _result.Name); await new SubmitQuery().DownloadFileAsync(query); //Project package if (_result.OnlineItemType == OnlineItemType.ProjectPackage) { Project.OpenAsync(query.DownloadFileName); } //Project Template else if (_result.OnlineItemType == OnlineItemType.Template) { var ps = new CreateProjectSettings() { Name = System.IO.Path.GetFileNameWithoutExtension(_result.Name), LocationPath = ConfigWithStartWizardModule.DefaultFolder(), TemplatePath = query.DownloadFileName }; try { await Project.CreateAsync(ps); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } } //Map Package else if (_result.OnlineItemType == OnlineItemType.MapPackage) { await Project.CreateAsync(new CreateProjectSettings() { Name = System.IO.Path.GetFileNameWithoutExtension(_result.Name) }); try { var mapPackage = ItemFactory.Create(query.DownloadFileName); await Project.Current.AddAsync(mapPackage); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } } break; } }
/// <summary> /// Execute the given query and return the result /// </summary> /// <param name="query"></param> /// <returns></returns> public async Task <string> ExecAsync(OnlineQuery query, ObservableCollection <OnlineResultItem> results, int maxResults = 0) { if (maxResults == 0) { maxResults = OnlineQuery.DefaultMaxResults; } if (MaxResponseLength == 0) { MaxResponseLength = OnlineQuery.DefaultMaxResponseLength; } _response = new StringBuilder(); _errorResponse = ""; //slap in the initial request _response.AppendLine(query.FinalUrl); _response.AppendLine(""); try { Tuple <long, long> stats = new Tuple <long, long>(-1, -1); do { query.Start = stats.Item2; Debug.WriteLine(""); Debug.WriteLine(query.FinalUrl); Debug.WriteLine(""); HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(query.FinalUrl)); req.Method = "GET"; req.Referer = query.Referer; req.UserAgent = OnlineQuery.DefaultUserAgent; //submit the query var response = await req.GetResponseAsync(); //Headers for prosperity if we're debugging the response WebHeaderCollection whc = response.Headers; if (_response.Length < MaxResponseLength) { for (int i = 0; i < whc.Count; i++) { _response.AppendLine(whc.GetKey(i) + " = " + whc.Get(i)); } if (_response.Length > MaxResponseLength) { _response.AppendLine("..."); } } //read out the json using (StreamReader sr = new StreamReader(response.GetResponseStream())) { string raw = await sr.ReadToEndAsync(); //convert entity-replacement tags raw = raw.Replace("<", "<").Replace(">", ">"); if (_response.Length < MaxResponseLength) { _response.AppendLine(""); _response.AppendLine(raw); if (_response.Length > MaxResponseLength) { _response.AppendLine("..."); } } Debug.WriteLine(""); Debug.WriteLine(raw); Debug.WriteLine(""); //deserialize stats = await ProcessResultsAsync(results, raw, query); } } while (stats.Item2 < maxResults && stats.Item2 > 0); } catch (WebException we) { //bad request _response.AppendLine(""); _response.AppendLine("WebException: " + we.Message); _response.AppendLine(query.FinalUrl); _response.AppendLine(""); _response.AppendLine(new Uri(query.FinalUrl).Scheme.ToUpper() + " " + ((int)we.Status).ToString()); try { _errorResponse = new StreamReader(we.Response.GetResponseStream()).ReadToEnd(); _response.AppendLine(_errorResponse); } catch { } } return(_response.ToString()); }
/// <summary> /// Execute the given query and return the result /// </summary> /// <param name="query"></param> /// <param name="results"></param> /// <param name="portalUrl"></param> /// <param name="maxResults"></param> /// <returns></returns> //public string Exec(OnlineQuery query, ObservableCollection<OnlineResultItem> results, // int maxResults = 0) { // if (maxResults == 0) // maxResults = DefaultMaxResults; // if (MaxResponseLength == 0) // MaxResponseLength = DefaultMaxResponseLength; // _response = new StringBuilder(); // _errorResponse = ""; // //slap in the initial request // _response.AppendLine(query.FinalUrl); // _response.AppendLine(""); // results.Clear(); // try { // Tuple<long, long> stats = new Tuple<long, long>(-1, -1); // do { // query.Start = stats.Item2; // System.Diagnostics.Debug.WriteLine(""); // System.Diagnostics.Debug.WriteLine(query.FinalUrl); // System.Diagnostics.Debug.WriteLine(""); // EsriHttpClient httpClient = new EsriHttpClient(); // var response = httpClient.Get(query.FinalUri.ToString()); // var raw = response.Content.ReadAsStringAsync().Result;//block // stats = ProcessResults(results, raw, query); // } while (stats.Item2 < maxResults && stats.Item2 > 0); // } // catch (WebException we) { // //bad request // _response.AppendLine(""); // _response.AppendLine("WebException: " + we.Message); // _response.AppendLine(query.FinalUrl); // _response.AppendLine(""); // _response.AppendLine(new Uri(query.FinalUrl).Scheme.ToUpper() + " " + // ((int)we.Status).ToString()); // try { // _errorResponse = new StreamReader(we.Response.GetResponseStream()).ReadToEnd(); // _response.AppendLine(_errorResponse); // } // catch { // } // } // finally { // //content = _response.ToString() // // .Replace("{", "{\r\n") // // .Replace("}", "\r\n}") // // .Replace(",\"", ",\r\n\""); // } // return _response.ToString(); //} public async void Exec2Async(OnlineQuery query, ObservableCollection <PortalItem> results, string portalUrl, int maxResults = 0) { if (maxResults == 0) { maxResults = DefaultMaxResults; } if (MaxResponseLength == 0) { MaxResponseLength = DefaultMaxResponseLength; } _response = new StringBuilder(); _errorResponse = ""; //slap in the initial request _response.AppendLine(query.FinalUrl); _response.AppendLine(""); results.Clear(); try { Tuple <long, int> stats = new Tuple <long, int>(-1, -1); var portal = ArcGISPortalManager.Current.GetPortal(new Uri(portalUrl)); int startIndex = 0; do { query.Start = startIndex; System.Diagnostics.Debug.WriteLine(""); System.Diagnostics.Debug.WriteLine(query.FinalUrl); System.Diagnostics.Debug.WriteLine(""); PortalQueryResultSet <PortalItem> portalResults = await ArcGISPortalExtensions.SearchForContentAsync(portal, query.PortalQueryParams); foreach (var item in portalResults.Results.OfType <PortalItem>()) { results.Add(item); } startIndex = results.Count + startIndex; } while (startIndex < maxResults); } catch (WebException we) { //bad request _response.AppendLine(""); _response.AppendLine("WebException: " + we.Message); _response.AppendLine(query.FinalUrl); _response.AppendLine(""); _response.AppendLine(new Uri(query.FinalUrl).Scheme.ToUpper() + " " + ((int)we.Status).ToString()); try { _errorResponse = new StreamReader(we.Response.GetResponseStream()).ReadToEnd(); _response.AppendLine(_errorResponse); } catch { } } finally { } //return _response.ToString(); }