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)); } }