-
Notifications
You must be signed in to change notification settings - Fork 0
/
RestApiStreamContextBase.cs
57 lines (46 loc) · 1.95 KB
/
RestApiStreamContextBase.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using System;
using System.Text.Json;
using Arcane.Framework.Services.Base;
namespace Arcane.Stream.RestApi.Models.Base;
/// <summary>
/// Base class for REST Api streaming configurations
/// </summary>
public abstract class RestApiStreamContextBase: IStreamContext, IStreamContextWriter
{
/// <inheritdoc cref="IStreamContext.StreamId"/>>
public string StreamId { get; private set; }
/// <inheritdoc cref="IStreamContext.StreamKind"/>>
public string StreamKind { get; private set; }
/// <inheritdoc cref="IStreamContext.IsBackfilling"/>>
public bool IsBackfilling { get; private set; }
/// <inheritdoc cref="IStreamContextWriter.SetStreamId"/>>
public void SetStreamId(string streamId)
{
this.StreamId = streamId;
}
/// <inheritdoc cref="IStreamContextWriter.SetBackfilling"/>>
public void SetBackfilling(bool isRunningInBackfillMode)
{
this.IsBackfilling = isRunningInBackfillMode;
}
/// <inheritdoc cref="IStreamContextWriter.SetStreamKind"/>>
public void SetStreamKind(string streamKind)
{
this.StreamKind = streamKind;
}
public abstract RestApiStreamContextBase LoadSecrets();
protected string GetSecretFromEnvironment(string secretName)
=> Environment.GetEnvironmentVariable($"{nameof(Arcane)}__{secretName}".ToUpperInvariant());
protected TResultType GetJSONSecretFromEnvironment<TResultType>(string secretName)
=> JsonSerializer.Deserialize<TResultType>(this.GetSecretFromEnvironment(secretName) ??
throw new ArgumentNullException($"{nameof(Arcane)}__{secretName}"));
protected TimeSpan? GetNullableTimeSpanObjectFromEnvironment(string secretName)
{
var raw = Environment.GetEnvironmentVariable($"{nameof(Arcane)}__{secretName}".ToUpperInvariant());
if (TimeSpan.TryParse(raw, out var value))
{
return value;
}
return null;
}
}