diff --git a/src/Anywhere.ArcGIS/Operation/ServiceDescriptionDetails.cs b/src/Anywhere.ArcGIS/Operation/ServiceDescriptionDetails.cs index b78b1b6..b1686b4 100644 --- a/src/Anywhere.ArcGIS/Operation/ServiceDescriptionDetails.cs +++ b/src/Anywhere.ArcGIS/Operation/ServiceDescriptionDetails.cs @@ -24,7 +24,7 @@ public ServiceDescriptionDetails(ServiceDescription serviceDescription, Action b throw new ArgumentNullException(nameof(serviceDescription)); } } - + /// /// Request for the details of an ArcGIS Server service /// @@ -79,7 +79,13 @@ public class ServiceDescriptionDetailsResponse : PortalResponse [DataMember(Name = "spatialReference")] public SpatialReference SpatialReference { get; set; } - [DataMember(Name = "initialExtent")] + [DataMember(Name = "singleFusedMapCache")] + public bool? SingleFusedMapCache { get; set; } + + [DataMember(Name = "tileInfo")] + public TileInfo TileInfo { get; set; } + + [DataMember(Name = "initialExtent")] public Extent InitialExtent { get; set; } [DataMember(Name = "fullExtent")] @@ -93,9 +99,53 @@ public class ServiceDescriptionDetailsResponse : PortalResponse [DataMember(Name = "layers")] public List Layers { get; set; } + + [DataMember(Name = "tables")] + public List Tables { get; set; } } [DataContract] + public class TileInfo + { + [DataMember(Name = "rows")] + public int Rows { get; set; } + + [DataMember(Name = "cols")] + public int Cols { get; set; } + + [DataMember(Name = "dpi")] + public int Dpi { get; set; } + + [DataMember(Name = "format")] + public string Format { get; set; } + + [DataMember(Name = "compressionQuality")] + public int CompressionQuality { get; set; } + + [DataMember(Name = "origin")] + public Point Origin { get; set; } + + [DataMember(Name = "spatialReference")] + public SpatialReference SpatialReference { get; set; } + + [DataMember(Name = "lods")] + public List Lods { get; set; } + } + [DataContract] + public class Lod + { + [DataMember(Name = "level")] + public int Level { get; set; } + + [DataMember(Name = "resolution")] + public double Resolution { get; set; } + + [DataMember(Name = "scale")] + public double Scale { get; set; } + } + + + [DataContract] public class TimeInfo { [DataMember(Name = "timeExtent")] @@ -175,4 +225,14 @@ public class LayerDetails [IgnoreDataMember] public bool IsGroupLayer { get { return SubLayerIds != null && SubLayerIds.Any() && SubLayerIds.FirstOrDefault() > -1; } } } + + [DataContract] + public class TableDetails + { + [DataMember(Name = "id")] + public int Id { get; set; } + + [DataMember(Name = "name")] + public string Name { get; set; } + } } diff --git a/tests/Anywhere.ArcGIS.Test.Integration/ArcGISGatewayTests.cs b/tests/Anywhere.ArcGIS.Test.Integration/ArcGISGatewayTests.cs index 60ef6bd..c839e80 100644 --- a/tests/Anywhere.ArcGIS.Test.Integration/ArcGISGatewayTests.cs +++ b/tests/Anywhere.ArcGIS.Test.Integration/ArcGISGatewayTests.cs @@ -132,8 +132,30 @@ public async Task CanDescribeSiteServices(string rootUrl) Assert.NotNull(serviceDescription.ServiceDescription); } } - [Theory] + [InlineData("http://services.arcgisonline.co.nz/arcgis", "Generic/newzealand/MapServer")] + public async Task CanGetServiceTileInfo(string rootUrl, string serviceId) + { + var gateway = new PortalGateway(rootUrl); + + var response = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() => + { + return gateway.DescribeService(serviceId.AsEndpoint()); + }); + + Assert.NotNull(response.SingleFusedMapCache); + Assert.NotNull(response.TileInfo); + Assert.NotNull(response.TileInfo.Lods); + Assert.NotNull(response.TileInfo.Origin); + Assert.NotNull(response.TileInfo.SpatialReference); + Assert.NotNull(response.TileInfo.SpatialReference.Wkid); + Assert.Equal(512, response.TileInfo.Rows); + Assert.Equal(512, response.TileInfo.Cols); + Assert.Equal(96, response.TileInfo.Dpi); + + } + + [Theory] [InlineData("http://sampleserver3.arcgisonline.com/ArcGIS/", "Petroleum/KSWells/MapServer/0")] [InlineData("http://sampleserver3.arcgisonline.com/ArcGIS/", "Petroleum/KSWells/MapServer/1")] [InlineData("http://services.arcgisonline.co.nz/arcgis", "Canvas/Light/MapServer/0")]