Beispiel #1
0
        public JsonFolderResponse CreateFolder(CreateFolderParameters createFolderParams, string token)
        {
            //TODO: figure out how to generate the URL
            Uri url = new Uri(string.Format("http://www.arcgis.com/sharing/content/users/{0}/createFolder?f=json&token={1}", userCredentials.Username, token));
            HttpPostRequest request = new HttpPostRequest(url);

            request.AddFields(createFolderParams.GetParameters());

            HttpWebResponse response = request.PostData();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            JsonFolderResponse jsonCreateFolderResponse = JsonConvert.DeserializeObject<JsonFolderResponse>(sr.ReadToEnd());

            //TODO: do this error-checking better
            if (!jsonCreateFolderResponse.success)
            {
                throw new Exception();
            }

            return jsonCreateFolderResponse;
        }
Beispiel #2
0
        private static void QueryArcGISServer(string server, string directory, JsonFolderResponse parentDirectory)
        {
            Tools tools = new Tools();
            JsonArcGISServerResponse agsResponse = tools.QueryArcGISServer(server, directory);
            foreach (string folder in agsResponse.folders)
            {
                Console.WriteLine(string.Format("====================\n\nCreating folder: {0}", folder));
                CreateFolderParameters folderParams = new CreateFolderParameters();
                folderParams.Title = folder;
                AGOLClient client = new AGOLClient(userCreds);
                JsonFolderResponse response = client.CreateFolder(folderParams, token);
                folderIds.Add(response.folder.id);

                //recursive
                Console.WriteLine(string.Format("Recursing {0} for services\n\n", folder));
                QueryArcGISServer(server, folder, response);
            }
            foreach (JsonArcGISServerService service in agsResponse.services)
            {
                Console.WriteLine(string.Format("Indexing service {0}", service.name));

                AddItemParameters addItemParams = new AddItemParameters();

                //TODO: create proper lookup to do this
                string type = String.Empty;
                switch (service.type.ToLower())
                {
                    case "featureserver":
                        type = "Feature Service";
                        break;
                    case "mapserver":
                        type = "Map Service";
                        break;
                    case "imageserver":
                        type = "Image Service";
                        break;
                    case "gpserver":
                        type = "Geoprocessing Service";
                        break;
                    case "geometryserver":
                        type = "Geometry Service";
                        break;
                    case "geocodeserver":
                        type = "Geocoding Service";
                        break;
                }

                if (!server.EndsWith("/")) server += "/";

                addItemParams.Url = String.Format("{0}{1}/{2}", server, service.name, service.type);
                addItemParams.ItemInfoParameters.Type = type;
                addItemParams.Async = true;
                addItemParams.ItemInfoParameters.Title = directory == String.Empty ? service.name : service.name.Substring(directory.Length+1);
                addItemParams.ItemInfoParameters.Tags = "bulkindex";

                AGOLClient client = new AGOLClient(userCreds);
                JsonAddItemResponse addItemResponse = null;
                if (parentDirectory == null)
                {
                    addItemResponse = client.AddItem(addItemParams, token);
                    itemIds.Add(addItemResponse.id);
                }
                else
                {
                    addItemResponse = client.AddItem(addItemParams, parentDirectory.folder.id, token);
                }

                Console.WriteLine(string.Format("Completed {0}\n", addItemResponse.item));
            }
        }