Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            // Connect to Portal/ArcGIS Online
            portalConn = new PortalConnection();
            // Index items on ArcGIS Online
            foreach (string arg in args)
            {
                Console.WriteLine(string.Format("Processing {0}\n", arg));
                QueryArcGISServer(arg, String.Empty, null);
            }

            Console.WriteLine("\nPress Enter to delete all services");

            // press Enter to continue
            while (true)
            {
                if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Enter) break;
            }

            Console.WriteLine("Deleting...");

            // Delete all the indexed content
            UserContentClient client = new UserContentClient(portalConn);
            foreach (string folder in folderIds)
            {
                DeleteFolder.Response response = client.DeleteFolder(folder);
                if (response.success)
                {
                    Console.WriteLine(string.Format("Folder {0} {1}", response.folder.title, response.folder.id));
                }
                else
                {
                    Console.WriteLine(string.Format("Error {0}", response.folder.title));
                    Console.WriteLine(string.Format("{0}\n", response.folder.id));
                }
            }

            foreach (string item in itemIds)
            {
                DeleteItem.Response response = client.DeleteItem(item);
                if (response.success)
                {
                    Console.WriteLine(string.Format("Item {0}", response.itemId));
                }
                else
                {
                    Console.WriteLine(string.Format("Error {0}\n", response.itemId));
                }
            }

            Console.WriteLine("\nPress Esc to quit");

            // press Esc to quit
            while (true)
            {
                if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape) break;
            }
        }
Ejemplo n.º 2
0
        private static void QueryArcGISServer(string server, string directory, string parentDirectory)
        {
            ArcGISServerClient AGSClient = new ArcGISServerClient();
            AGSResponse agsResponse = AGSClient.QueryArcGISServer(server, directory);
            UserContentClient client = new UserContentClient(portalConn);
            foreach (string folder in agsResponse.folders)
            {
                Console.WriteLine(string.Format("====================\n\nCreating folder: {0}", folder));
                CreateFolder.Response response = client.CreateFolder(folder);
                folderIds.Add(response.folder.id);

                // Recursively index all content
                Console.WriteLine(string.Format("Recursing {0} for services\n\n", folder));
                QueryArcGISServer(server, folder, response.folder.id);
            }

            foreach (AGSService service in agsResponse.services)
            {
                Console.WriteLine(string.Format("Indexing service {0}", service.name));

                // TODO: create a proper lookup table 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;
                    default:
                        Console.WriteLine("Ignoring unknown service type " + service.type);
                        continue;
                }

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

                AddItem.Request request = new AddItem.Request();
                request.url = String.Format("{0}{1}/{2}", server, service.name, service.type);
                request.type = type;
                request.async = true;
                request.title = directory == String.Empty ? service.name : service.name.Substring(directory.Length + 1);
                request.tags = "bulkindex";

                AddItem.Response response;

                if (parentDirectory == null)
                {
                    response = client.AddItem(request);
                    itemIds.Add(response.id);
                }
                else
                {
                    request.folderId = parentDirectory;
                    response = client.AddItem(request);
                }

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