Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions SW.Bitween.Api/Domain/Subscription/Schedule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,20 @@ public Schedule(Recurrence recurrence, TimeSpan on, bool backwards = false)
switch (Recurrence)
{
case Recurrence.Hourly:
if (on.TotalHours >= 1) throw new BitweenException();
if (on.TotalHours >= 1) throw new BitweenException("Invalid hourly schedule");
break;

case Recurrence.Daily:
if (on.TotalDays >= 1) throw new BitweenException();
if (on.TotalDays >= 1) throw new BitweenException("Invalid daily schedule");
break;

case Recurrence.Weekly:
if (on.TotalDays >= 7) throw new BitweenException();
if (on.TotalDays >= 7) throw new BitweenException("Invalid weekly schedule");
break;

case Recurrence.Monthly:
if (on.TotalDays >= 28) throw new BitweenException();
if (on.Days < 1) throw new BitweenException();
if (on.TotalDays >= 28) throw new BitweenException("Invalid monthly schedule");
if (on.Days < 1) throw new BitweenException("Invalid monthly schedule");
break;

//default:
Expand Down
29 changes: 21 additions & 8 deletions SW.Bitween.Api/Services/NativeAdapterDiscoveryService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ namespace SW.Bitween
{
public class NativeAdapterDiscoveryService(
IEnumerable<INativeInfolinkHandler> nativeHandlers,
IEnumerable<INativeInfolinkMapper> nativeMappers,
IEnumerable<INativeInfolinkReceiver> nativeReceivers,
IEnumerable<INativeInfolinkValidator> nativeValidators,
IEnumerable<INativeAdapter> nativeAdapters)
Expand All @@ -17,11 +18,11 @@ public class NativeAdapterDiscoveryService(
public Dictionary<string, string> GetExpectedStartupValues(string adapterId)
{
var result = new Dictionary<string, string>();

var adapter = nativeAdapters.FirstOrDefault(a => a.GetType().Name.Equals(adapterId, StringComparison.OrdinalIgnoreCase));
if (adapter == null)
return result;

var properties = adapter.StartupValuesType.GetProperties(BindingFlags.Public | BindingFlags.Instance);

foreach (var prop in properties)
Expand All @@ -43,7 +44,7 @@ public Dictionary<string, string> GetExpectedStartupValues(string adapterId)

return result;
}


public INativeInfolinkHandler GetNativeHandler(string adapterId, Dictionary<string, string> settings)
{
Expand All @@ -57,6 +58,18 @@ public INativeInfolinkHandler GetNativeHandler(string adapterId, Dictionary<stri
return result;
}

public INativeInfolinkMapper GetNativeMapper(string adapterId, Dictionary<string, string> settings)
{
var result =
nativeMappers.FirstOrDefault(a => a.GetType().Name.Equals(adapterId, StringComparison.OrdinalIgnoreCase));
if (result != null)
{
result.InitializeStartupValues(settings);
}

return result;
}

public INativeInfolinkReceiver GetNativeReceiver(string adapterId, IDictionary<string, string> settings)
{
var result =
Expand All @@ -80,11 +93,11 @@ public INativeInfolinkValidator GetNativeValidator(string adapterId, IDictionary

return result;
}

public List<string> GetNativeAdapters(string? type)
{
List<INativeAdapter> adapters;

switch (type?.ToLower())
{
case "handlers":
Expand All @@ -97,15 +110,15 @@ public List<string> GetNativeAdapters(string? type)
adapters = nativeValidators.Cast<INativeAdapter>().ToList();
break;
case "mappers":
adapters = nativeHandlers.Cast<INativeAdapter>().ToList();
adapters = nativeMappers.Cast<INativeAdapter>().ToList();
break;
case null:
case null:
adapters = nativeAdapters.ToList();
break;
default:
return new List<string>();
}

return adapters.Select(a => a.GetType().Name).ToList();
}
private string? GetDefaultValue(PropertyInfo property)
Expand Down
6 changes: 3 additions & 3 deletions SW.Bitween.Api/Services/XchangeService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ private async Task<XchangeFile> RunMapper(Xchange xchange, XchangeFile xchangeFi
// Check if it's a native adapter
if (xchange.MapperId.StartsWith(NativeAdapterDiscoveryService.NativePrefix, StringComparison.OrdinalIgnoreCase))
{
var handler = _nativeAdapterDiscovery.GetNativeHandler(xchange.MapperId, mapperProperties);
var handler = _nativeAdapterDiscovery.GetNativeMapper(xchange.MapperId, mapperProperties);
xchangeFile = await handler.Handle(xchangeFile);
}
else
Expand Down Expand Up @@ -168,7 +168,7 @@ public async Task RunValidator(string validatorId, IDictionary<string, string> p
if (validatorId.StartsWith(NativeAdapterDiscoveryService.NativePrefix, StringComparison.OrdinalIgnoreCase))
{
var validator = _nativeAdapterDiscovery.GetNativeValidator(validatorId, properties);

result = await validator.Validate(xchangeFile);
}
else
Expand Down Expand Up @@ -456,7 +456,7 @@ private async Task NotifyResult(Notifier notifier, XchangeResult xchangeResult,
// Check if it's a native adapter
if (notifier.HandlerId.StartsWith(NativeAdapterDiscoveryService.NativePrefix, StringComparison.OrdinalIgnoreCase))
{
var handler = _nativeAdapterDiscovery.GetNativeHandler(notifier.HandlerId, handlerProperties);
var handler = _nativeAdapterDiscovery.GetNativeHandler(notifier.HandlerId, handlerProperties);
await handler.Handle(new XchangeFile(JsonConvert.SerializeObject(notificationData), xchangeResult.Id));
}
else
Expand Down
7 changes: 4 additions & 3 deletions SW.Bitween.NativeAdapters/Interfaces.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ public interface INativeAdapter
public Type StartupValuesType { get; }
}

public interface INativeInfolinkHandler : INativeAdapter,IInfolinkHandler { }
public interface INativeInfolinkValidator: IInfolinkValidator,INativeAdapter{}
public interface INativeInfolinkReceiver: IInfolinkReceiver,INativeAdapter{}
public interface INativeInfolinkHandler : INativeAdapter, IInfolinkHandler { }
public interface INativeInfolinkMapper : INativeAdapter, IInfolinkHandler { }
public interface INativeInfolinkValidator : IInfolinkValidator, INativeAdapter { }
public interface INativeInfolinkReceiver : IInfolinkReceiver, INativeAdapter { }
2 changes: 1 addition & 1 deletion SW.Bitween.NativeAdapters/JsonMapper/NativeJSONMapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace SW.Bitween.NativeAdapters;

public class NativeJSONMapper : INativeInfolinkHandler
public class NativeJSONMapper : INativeInfolinkMapper
{
public string Name => "NativeJSONMapper";
public Type StartupValuesType => typeof(JsonMapperInput);
Expand Down
2 changes: 1 addition & 1 deletion SW.Bitween.NativeAdapters/JsonMapper/ScribanJsonHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public static class ScribanJsonHelper
{
/// <summary>
/// Renders a Scriban template against the provided input JSON and returns the mapped output JSON.
/// </summary>
/// </summary>`
public static string Render(string scribanTemplate, string inputJson)
{
// 1. Parse input JSON
Expand Down
2 changes: 1 addition & 1 deletion SW.Bitween.NativeAdapters/ServiceCollectionExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public static void AddNativeAdapters(this IServiceCollection serviceCollection)
serviceCollection.AddScoped<INativeInfolinkHandler, NativeHttpHandler>();
serviceCollection.AddScoped<INativeAdapter, NativeHttpHandler>();

serviceCollection.AddScoped<INativeInfolinkHandler, NativeJSONMapper>();
serviceCollection.AddScoped<INativeInfolinkMapper, NativeJSONMapper>();
serviceCollection.AddScoped<INativeAdapter, NativeJSONMapper>();

serviceCollection.AddScoped<INativeInfolinkReceiver, NativeHttpReceiver>();
Expand Down