Skip to content
This repository was archived by the owner on Sep 3, 2024. It is now read-only.

Commit 5491d09

Browse files
displaying provider and version information on the index resource
1 parent 4b92e83 commit 5491d09

2 files changed

Lines changed: 31 additions & 2 deletions

File tree

src/SqlStreamStore.HAL/Index/IndexResource.cs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,41 @@
11
namespace SqlStreamStore.HAL.Index
22
{
3+
using System;
4+
using System.Reflection;
35
using Halcyon.HAL;
6+
using Newtonsoft.Json.Linq;
47

58
internal class IndexResource : IResource
69
{
710
public SchemaSet Schema { get; }
811

9-
public Response Get() => new HalJsonResponse(new HALResponse(null)
12+
private readonly JObject _data;
13+
14+
public IndexResource(IStreamStore streamStore)
15+
{
16+
var streamStoreType = streamStore.GetType();
17+
var streamStoreTypeName = streamStoreType.Name;
18+
_data = JObject.FromObject(new
19+
{
20+
provider = streamStoreTypeName.Substring(0, streamStoreTypeName.Length - "StreamStore".Length),
21+
versions = new
22+
{
23+
streamStore = GetVersion(streamStoreType),
24+
server = GetVersion(typeof(IndexResource))
25+
}
26+
});
27+
}
28+
29+
private static string GetVersion(Type type)
30+
=> type.Assembly
31+
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()
32+
?.InformationalVersion ??
33+
type.Assembly
34+
.GetCustomAttribute<AssemblyVersionAttribute>()
35+
?.Version
36+
?? "unknown";
37+
38+
public Response Get() => new HalJsonResponse(new HALResponse(_data)
1039
.AddLinks(
1140
Links
1241
.RootedAt(string.Empty)

src/SqlStreamStore.HAL/SqlStreamStoreHalMiddleware.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public static IApplicationBuilder UseSqlStreamStoreHal(
7474

7575
options = options ?? new SqlStreamStoreMiddlewareOptions();
7676

77-
var index = new IndexResource();
77+
var index = new IndexResource(streamStore);
7878
var allStream = new AllStreamResource(streamStore, options.UseCanonicalUrls);
7979
var allStreamMessages = new AllStreamMessageResource(streamStore);
8080
var streams = new StreamResource(streamStore);

0 commit comments

Comments
 (0)