Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: Remove BodyDataTransformer options #45

Merged
merged 1 commit into from
Sep 15, 2020
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
8 changes: 4 additions & 4 deletions samples/HelloRin/Models/RinCustomContentTypeTransformer.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Microsoft.Extensions.Primitives;
using Microsoft.Extensions.Primitives;
using Rin.Core;
using Rin.Core.Record;
using System;
Expand All @@ -10,14 +10,14 @@

namespace HelloRin.Models
{
public class RinCustomContentTypeTransformer : BodyDataTransformer
public class RinCustomContentTypeTransformer : IBodyDataTransformer
{
public override bool CanTransform(HttpRequestRecord record, StringValues contentTypeHeaderValues)
public bool CanTransform(HttpRequestRecord record, StringValues contentTypeHeaderValues)
{
return contentTypeHeaderValues.Any(x => x == "application/x-msgpack");
}

public override BodyDataTransformResult Transform(HttpRequestRecord record, byte[] body, StringValues contentTypeHeaderValues)
public BodyDataTransformResult Transform(HttpRequestRecord record, byte[] body, StringValues contentTypeHeaderValues)
{
var data = MessagePack.LZ4MessagePackSerializer.Deserialize<MyClass>(body, MessagePack.Resolvers.ContractlessStandardResolver.Instance);
var json = MessagePack.MessagePackSerializer.ToJson<MyClass>(data, MessagePack.Resolvers.ContractlessStandardResolver.Instance);
Expand Down
3 changes: 2 additions & 1 deletion samples/HelloRin/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Rin.Core;

namespace HelloRin
{
Expand Down Expand Up @@ -37,8 +38,8 @@ public void ConfigureServices(IServiceCollection services)
{
options.RequestRecorder.RetentionMaxRequests = 100;
options.RequestRecorder.Excludes.Add(request => request.Path.Value.EndsWith(".js") || request.Path.Value.EndsWith(".css") || request.Path.Value.EndsWith(".svg"));
options.Inspector.ResponseBodyDataTransformers.Add(new RinCustomContentTypeTransformer());
});
services.AddSingleton<IBodyDataTransformer, RinCustomContentTypeTransformer>();

// Optional: Use Redis as storage
//services.AddRinRedisStorage(options =>
Expand Down
10 changes: 6 additions & 4 deletions src/Rin/Core/BodyDataTransformer.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Microsoft.Extensions.Primitives;
using Microsoft.Extensions.Primitives;
using Rin.Core.Record;
using System.Linq;

Expand All @@ -10,9 +10,11 @@ public interface IBodyDataTransformer
BodyDataTransformResult Transform(HttpRequestRecord record, byte[] body, StringValues contentTypeHeaderValues);
}

public abstract class BodyDataTransformer : IBodyDataTransformer
public interface IRequestBodyDataTransformer : IBodyDataTransformer
{
}

public interface IResponseBodyDataTransformer : IBodyDataTransformer
{
public abstract bool CanTransform(HttpRequestRecord record, StringValues contentTypeHeaderValues);
public abstract BodyDataTransformResult Transform(HttpRequestRecord record, byte[] body, StringValues contentTypeHeaderValues);
}
}
4 changes: 1 addition & 3 deletions src/Rin/Core/InspectorOptions.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Text;

Expand All @@ -7,7 +7,5 @@ namespace Rin.Core
public class InspectorOptions
{
public string MountPath { get; set; } = "/rin";
public List<IBodyDataTransformer> RequestBodyDataTransformers { get; } = new List<IBodyDataTransformer>();
public List<IBodyDataTransformer> ResponseBodyDataTransformers { get; } = new List<IBodyDataTransformer>();
}
}
7 changes: 5 additions & 2 deletions src/Rin/Extensions/RinSerivceExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,11 @@ public static void AddRin(this IServiceCollection services, Action<RinOptions>?
services.AddSingleton<IRinRequestRecordingFeatureAccessor>(new RinRequestRecordingFeatureAccessor());
services.AddSingleton<BodyDataTransformerSet>(serviceProvider =>
{
var transformers = serviceProvider.GetServices<IBodyDataTransformer>().ToArray();
return new BodyDataTransformerSet(new BodyDataTransformerPipeline(transformers), new BodyDataTransformerPipeline(transformers));
var requestTransformers = serviceProvider.GetServices<IRequestBodyDataTransformer>();
var responseTransformers = serviceProvider.GetServices<IResponseBodyDataTransformer>();
var transformers = serviceProvider.GetServices<IBodyDataTransformer>();

return new BodyDataTransformerSet(new BodyDataTransformerPipeline(requestTransformers.Concat(transformers)), new BodyDataTransformerPipeline(responseTransformers.Concat(transformers)));
});
services.TryAddSingleton<IRecordStorage, InMemoryRecordStorage>();
services.AddSingleton<IMessageEventBus<RequestEventMessage>>(new MessageEventBus<RequestEventMessage>());
Expand Down