private void ProcessResult( string projectName, string recipeName, IRestResponse <List <ResultItem> > resp, List <string> AoiList, string token, IRestClient client) { Jarvis.Logger.Info(resp.ResponseUri.ToString()); var layername = string.Empty; var aoi = ConvertAoisToGeometryCollection(AoiList); if (resp.Data != null) { if (resp.Data.Count == 0) { this.Invoke((MethodInvoker)(() => { this.loadingCircle.Visible = false; this.loadingCircle.Active = false; MessageBox.Show("No data results"); return; })); } // since there can be multiple query ids its good to check to make sure we don't end up pulling duplicate results. var usedQueries = new HashSet <string>(); foreach (var item in resp.Data) { // if the recipe names don't match move on to the next if (!recipeName.Equals(item.recipeName, StringComparison.OrdinalIgnoreCase)) { continue; } layername = string.Format("{0}|{1}", projectName, item.recipeName); var idahoIds = this.GetIds(resp.Data); this.Invoke((MethodInvoker)(() => { GbdxHelper.AddIdahoWms(idahoIds, layername, this.token); })); if (!string.IsNullOrEmpty(aoi) && !string.IsNullOrEmpty(layername)) { if (usedQueries.Contains(item.properties.query_string)) { continue; } usedQueries.Add(item.properties.query_string); this.GetGeometries(item.properties.query_string, token, aoi, client, layername); } } } this.Invoke((MethodInvoker)(() => { this.loadingCircle.Visible = false; this.loadingCircle.Active = false; })); }
private void GetSources(int applicationState, int attempts = 0) { var client = new RestClient(GbdxHelper.GetEndpointBase(Settings.Default)); var addressUrl = "/insight-vector/api/shape/sources"; var request = new RestRequest(addressUrl, Method.POST); request.AddHeader("Authorization", "Bearer " + this.token); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", this.Aoi, ParameterType.RequestBody); client.ExecuteAsync <SourceTypeResponseObject>( request, resp => this.ProcessSources(resp, applicationState, attempts)); }
private void GetPages(TreeNode node, string pageId, int applicationState, string currentCount, string layerName, StreamWriter fileStreamWriter, int attempts = 0) { var client = new RestClient(GbdxHelper.GetEndpointBase(Settings.Default)); var request = new RestRequest("/insight-vector/api/esri/paging", Method.POST); request.AddHeader("Authorization", "Bearer " + this.token); request.AddHeader("Content-Type", "application/json"); request.AddParameter("ttl", "5m"); request.AddParameter("fields", "attributes"); request.AddParameter("pagingId", pageId); attempts++; client.ExecuteAsync <PagedData2>( request, resp => this.ProcessPage(node, resp, applicationState, currentCount, pageId, layerName, fileStreamWriter, attempts)); }
//private void UpdateStatus(TreeNode node, ) private void GetPagingId(TreeNode node, int applicationState, int attempts = 0) { var sourceNode = (VectorIndexSourceNode)node.Parent.Parent; var geometryNode = (VectorIndexGeometryNode)node.Parent; var typeNode = (VectorIndexTypeNode)node; var addressUrl = string.Empty; if (string.IsNullOrEmpty(this.query)) { addressUrl = string.Format( "/insight-vector/api/shape/{0}/{1}/{2}/paging", sourceNode.Source.Name, geometryNode.GeometryType.Name, typeNode.Type.Name); } else { addressUrl = string.Format( "/insight-vector/api/shape/query/{0}/{1}/paging?q={2}", geometryNode.GeometryType.Name, typeNode.Type.Name, this.query); } var client = new RestClient(GbdxHelper.GetEndpointBase(Settings.Default)); RuntimeInfo arcRuntimeInfo = RuntimeManager.ActiveRuntime; client.UserAgent += arcRuntimeInfo.Product + " " + arcRuntimeInfo.Version; var request = new RestRequest(addressUrl, Method.POST); request.AddHeader("Authorization", "Bearer " + this.token); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", this.Aoi, ParameterType.RequestBody); attempts++; client.ExecuteAsync <PagedData2>(request, resp => this.ProcessPagingId(resp, attempts, node, applicationState)); }
private void GetTypes(TreeNode geometryNode, int applicationState, int attempts = 0) { geometryNode.Text = geometryNode.Text.Replace(GbdxResources.Source_ErrorMessage, string.Empty); geometryNode.Text += GbdxResources.SearchingText; var sourceNode = (VectorIndexSourceNode)geometryNode.Parent; var geomNode = (VectorIndexGeometryNode)geometryNode; var client = new RestClient(GbdxHelper.GetEndpointBase(Settings.Default)); var addressString = string.Empty; if (string.IsNullOrEmpty(this.query)) { addressString = string.Format( "/insight-vector/api/shape/{0}/{1}/types", sourceNode.Source.Name, geomNode.GeometryType.Name); } else { addressString = string.Format( "/insight-vector/api/shape/query/{0}/types?q={1}", geomNode.GeometryType.Name, this.query); } var request = new RestRequest(addressString, Method.POST); request.AddHeader("Authorization", "Bearer " + this.token); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", this.Aoi, ParameterType.RequestBody); attempts++; client.ExecuteAsync <SourceTypeResponseObject>( request, resp => this.ProcessGetTypesResponse(resp, geometryNode, applicationState, attempts)); }
private void GetGeometries(VectorIndexSourceNode source, int applicationState, int attempts = 0) { var client = new RestClient(GbdxHelper.GetEndpointBase(Settings.Default)); var addressUrl = string.Empty; if (string.IsNullOrEmpty(this.query)) { addressUrl = string.Format("/insight-vector/api/shape/{0}/geometries", source.Source.Name); } else { addressUrl = "/insight-vector/api/shape/query/geometries?q=" + this.query; } var request = new RestRequest(addressUrl, Method.POST); request.AddHeader("Authorization", "Bearer " + this.token); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", this.Aoi, ParameterType.RequestBody); attempts++; client.ExecuteAsync <SourceTypeResponseObject>( request, resp => this.ProcessGeometries(resp, source, applicationState, attempts)); }