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")]