Skip to content

Commit

Permalink
Merge pull request #597 from WideSpectrumComputing/master
Browse files Browse the repository at this point in the history
resolve #585, refactoring and codebase cleanup
  • Loading branch information
akornich authored Oct 6, 2021
2 parents 8117a15 + c735413 commit 9d4ede2
Show file tree
Hide file tree
Showing 58 changed files with 974 additions and 257 deletions.
5 changes: 3 additions & 2 deletions Benchmarker.Common/Benchmarker.Common.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@

<PropertyGroup>
<!--TargetFramework>netstandard2.0</TargetFramework-->
<TargetFrameworks>netcoreapp3.0;netcoreapp2.2;netcoreapp2.1;netcoreapp2.0;net48;net472;net471;net47;net462;net461;netstandard2.1;netstandard2.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<PlatformTarget>AnyCPU</PlatformTarget>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.12.0" />
<PackageReference Include="BenchmarkDotNet" Version="0.13.1" />
<PackageReference Include="coverlet.collector" Version="3.1.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand Down
4 changes: 3 additions & 1 deletion Benchmarker.Common/BenchmarksConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@
{
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Environments;
using BenchmarkDotNet.Horology;
//using BenchmarkDotNet.Horology;
using BenchmarkDotNet.Jobs;

using Perfolizer.Horology;

public class BenchmarksConfig : ManualConfig
{
public BenchmarksConfig()
Expand Down
3 changes: 2 additions & 1 deletion Rollbar.AppSettings.Json/Rollbar.AppSettings.Json.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<Project ToolsVersion="Current">
<Project ToolsVersion="Current">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<!--TargetFrameworks>netcoreapp3.0;netcoreapp2.2;netcoreapp2.1;netcoreapp2.0;net48;net472;net471;net47;net462;net461;net46;net452;net451;netstandard2.1;netstandard2.0</TargetFrameworks-->
<AssemblyName>Rollbar.AppSettings.Json</AssemblyName>
<RootNamespace>Rollbar.AppSettings.Json</RootNamespace>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>

<Import Project="..\SdkCommon.csproj" />
Expand Down
3 changes: 2 additions & 1 deletion Rollbar.Deploys/Rollbar.Deploys.csproj
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
<Project ToolsVersion="Current">

<PropertyGroup>
<TargetFrameworks>netstandard2.1;netstandard2.0</TargetFrameworks>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Rollbar.Deploys</AssemblyName>
<RootNamespace>Rollbar.Deploys</RootNamespace>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|netstandard2.1|AnyCPU'">
Expand Down
3 changes: 2 additions & 1 deletion Rollbar.Net.AspNet.Mvc/Rollbar.Net.AspNet.Mvc.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<Project ToolsVersion="Current">

<PropertyGroup>
<TargetFrameworks>net48;net472;net471;net47;net462;net461;net46;net452;net451</TargetFrameworks>
<TargetFrameworks>net48;net472;net471;net47;net462;net461;net46;net452</TargetFrameworks>
<!--TargetFrameworks>net48;net472;net471;net47;net462;net461</TargetFrameworks-->
<AssemblyName>Rollbar.Net.AspNet.Mvc</AssemblyName>
<RootNamespace>Rollbar.Net.AspNet.Mvc</RootNamespace>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>

<Import Project="..\SdkCommon.csproj" />
Expand Down
3 changes: 2 additions & 1 deletion Rollbar.Net.AspNet.WebApi/Rollbar.Net.AspNet.WebApi.csproj
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
<Project ToolsVersion="Current">

<PropertyGroup>
<TargetFrameworks>net48;net472;net471;net47;net462;net461;net46;net452;net451</TargetFrameworks>
<TargetFrameworks>net48;net472;net471;net47;net462;net461;net46;net452</TargetFrameworks>
<AssemblyName>Rollbar.Net.AspNet.WebApi</AssemblyName>
<RootNamespace>Rollbar.Net.AspNet.WebApi</RootNamespace>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>

<Import Project="..\SdkCommon.csproj" />
Expand Down
3 changes: 2 additions & 1 deletion Rollbar.Net.AspNet/Rollbar.Net.AspNet.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<Project ToolsVersion="Current">

<PropertyGroup>
<TargetFrameworks>net48;net472;net471;net47;net462;net461;net46;net452;net451</TargetFrameworks>
<TargetFrameworks>net48;net472;net471;net47;net462;net461;net46;net452</TargetFrameworks>
<!--TargetFrameworks>net48;net472;net471;net47;net462;net461</TargetFrameworks-->
<AssemblyName>Rollbar.Net.AspNet</AssemblyName>
<RootNamespace>Rollbar.Net.AspNet</RootNamespace>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>

<Import Project="..\SdkCommon.csproj" />
Expand Down
1 change: 1 addition & 0 deletions Rollbar.NetCore.AspNet/ApplicationBuilderExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
{
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

using Rollbar.NetCore.AspNet;

/// <summary>
Expand Down
27 changes: 15 additions & 12 deletions Rollbar.NetCore.AspNet/HttpRequestPackageDecorator.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
using System.Linq;

namespace Rollbar.NetCore.AspNet
namespace Rollbar.NetCore.AspNet
{
using System.Collections.Generic;

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features;

using Rollbar.Common;
using Rollbar.DTOs;
using Rollbar.Serialization.Json;

/// <summary>
/// Class HttpRequestPackageDecorator.
Expand Down Expand Up @@ -64,6 +64,15 @@ protected override void Decorate(Data? rollbarData)
rollbarData.Request = new Request();
}


rollbarData.Request["httpRequestID"] =
this._httpRequest.HttpContext
.Features?
.Get<IHttpRequestIdentifierFeature>()?
.TraceIdentifier;
rollbarData.Request["scheme"] = this._httpRequest.Scheme;
rollbarData.Request["protocol"] = this._httpRequest.Protocol;

rollbarData.Request.Url = this._httpRequest.Host.Value + this._httpRequest.Path;
rollbarData.Request.QueryString = this._httpRequest.QueryString.Value;
if (!string.IsNullOrWhiteSpace(this._httpRequest.Path))
Expand Down Expand Up @@ -116,18 +125,12 @@ private void AssignRequestBody(Request request)
return; // nothing to do...
}

string? jsonString = StreamUtil.ConvertToString(this._httpRequest.Body);
if (string.IsNullOrWhiteSpace(jsonString))
string? jsonString = StreamUtil.CaptureAsStringAsync(this._httpRequest.Body).Result;
if(string.IsNullOrWhiteSpace(jsonString))
{
return;
}
request.PostBody = jsonString;

object? requesBodyObject = JsonUtil.InterpretAsJsonObject(jsonString);
if (requesBodyObject != null)
{
request.PostBody = requesBodyObject;
}
}
}
}
11 changes: 3 additions & 8 deletions Rollbar.NetCore.AspNet/HttpResponsePackageDecorator.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
namespace Rollbar.NetCore.AspNet
{
using System.Collections.Generic;

using Microsoft.AspNetCore.Http;

using Rollbar.Common;
using Rollbar.DTOs;
using Rollbar.Serialization.Json;

/// <summary>
/// Class HttpResponsePackageDecorator.
Expand Down Expand Up @@ -88,18 +89,12 @@ private void AssignResponseBody(Response response)
return; // nothing to do...
}

string? jsonString = StreamUtil.ConvertToString(this._httpResponse.Body);
string? jsonString = StreamUtil.CaptureAsStringAsync(this._httpResponse.Body).Result;
if (string.IsNullOrWhiteSpace(jsonString))
{
return;
}
response.Body = jsonString;

object? responseBodyObject = JsonUtil.InterpretAsJsonObject(jsonString);
if (responseBodyObject != null)
{
response.Body = responseBodyObject;
}
}

}
Expand Down
39 changes: 33 additions & 6 deletions Rollbar.NetCore.AspNet/Rollbar.NetCore.AspNet.csproj
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
<Project ToolsVersion="Current">

<PropertyGroup>
<TargetFrameworks>netcoreapp3.0;netcoreapp2.2;netcoreapp2.1;netcoreapp2.0;netstandard2.1;netstandard2.0</TargetFrameworks>
<TargetFrameworks>net5.0;netcoreapp3.1</TargetFrameworks>
<!--TargetFrameworks>net5.0;netcoreapp3.1;netcoreapp2.2;netcoreapp2.1;netcoreapp2.0;netstandard2.1;netstandard2.0</TargetFrameworks-->
<AssemblyName>Rollbar.NetCore.AspNet</AssemblyName>
<RootNamespace>Rollbar.NetCore.AspNet</RootNamespace>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>

<Import Project="..\SdkCommon.csproj" />
Expand All @@ -20,11 +22,36 @@
<ProjectReference Include="..\Rollbar\Rollbar.csproj" />
</ItemGroup>

<ItemGroup Label="Unconditional Package References">
</ItemGroup>

<Choose>
<When Condition="$(TargetFramework.StartsWith('netcoreapp3.')) Or '$(TargetFramework)' == 'netstandard2.1'">
<When Condition="'$(TargetFramework)' == 'net5.0'">
<ItemGroup Label="Unconditional Package References">
<PackageReference Include="Microsoft.AspNetCore.App" Version="5.0.*"/>
</ItemGroup>
</When>
<When Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<ItemGroup Label="Unconditional Package References">
<PackageReference Include="Microsoft.AspNetCore.App" Version="3.1.*"/>
</ItemGroup>
</When>
</Choose>

<!--Choose>
<When Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PropertyGroup Label=".NetStandard 2.0 build">
<NetVariant>NET_STANDARD</NetVariant>
<DefineConstants>$(DefineConstants);NETSTANDARD_2_0</DefineConstants>
</PropertyGroup>
</When>
<When Condition="'$(TargetFramework)' == 'netcoreapp2.0'">
<PropertyGroup Label=".NetCore 2.0 build">
<NetVariant>NET_CORE</NetVariant>
<DefineConstants>$(DefineConstants);NETCORE_2_0</DefineConstants>
</PropertyGroup>
</When>
</Choose-->

<!--Choose>
<When Condition="'$(TargetFramework)' == 'net5.0' Or $(TargetFramework.StartsWith('netcoreapp3.')) Or '$(TargetFramework)' == 'netstandard2.1'">
<ItemGroup Label="Package References">
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
Expand All @@ -42,6 +69,6 @@
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.0.0" />
</ItemGroup>
</Otherwise>
</Choose>
</Choose-->

</Project>
73 changes: 73 additions & 0 deletions Rollbar.NetCore.AspNet/RollbarHttpAttributes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,16 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features;

using Rollbar.Common;

/// <summary>
/// Implements a capture bag of HTTP context attributes of interest.
/// </summary>
public class RollbarHttpAttributes
{
//private readonly HttpResponse _httpResponse;
private readonly HttpContext? _httpContext;

/// <summary>
/// Prevents a default instance of the <see cref="RollbarHttpAttributes" /> class from being created.
/// </summary>
Expand All @@ -28,9 +33,12 @@ public RollbarHttpAttributes(HttpContext? context)
return;
}

this._httpContext = context;

this.RequestID = context.Features?
.Get<IHttpRequestIdentifierFeature>()?
.TraceIdentifier;

if (context.Request != null)
{
this.RequestHost = context.Request.Host;
Expand All @@ -40,7 +48,9 @@ public RollbarHttpAttributes(HttpContext? context)
this.RequestQuery = context.Request.QueryString;
this.RequestProtocol = context.Request.Protocol;
this.RequestScheme = context.Request.Scheme;
this.RequestBody = RollbarHttpAttributes.CaptureRequestBody(context.Request);
}

if (context.Response != null)
{
this.ResponseStatusCode = context.Response.StatusCode;
Expand Down Expand Up @@ -74,6 +84,12 @@ public RollbarHttpAttributes(HttpContext? context)
/// <value>The request method.</value>
public string? RequestMethod { get; }

/// <summary>
/// Gets the request body.
/// </summary>
/// <value>The request body.</value>
public string? RequestBody { get; }

/// <summary>
/// Gets the request headers.
/// </summary>
Expand Down Expand Up @@ -109,5 +125,62 @@ public RollbarHttpAttributes(HttpContext? context)
/// </summary>
/// <value>The response headers.</value>
public IHeaderDictionary? ResponseHeaders { get; }

/// <summary>
/// Gets the response body.
/// </summary>
/// <value>The response body.</value>
public string? ResponseBody
{
get
{
return RollbarHttpAttributes.CaptureResponseBody(this._httpContext?.Response);
}
}

/// <summary>
/// Captures the request body.
/// </summary>
/// <param name="request">The request.</param>
/// <returns>System.String.</returns>
public static string? CaptureRequestBody(HttpRequest? request)
{
if(request == null
|| request.ContentLength == null
|| !(request.ContentLength > 0)
|| !request.Body.CanSeek
)
{
return null;
}

string? bodyContent =
StreamUtil.CaptureAsStringAsync(request.BodyReader.AsStream(true)).Result;

return bodyContent;
}

/// <summary>
/// Captures the response body.
/// </summary>
/// <param name="response">The response.</param>
/// <returns>System.String.</returns>
public static string? CaptureResponseBody(HttpResponse? response)
{

if (response == null
|| response.ContentLength == null
|| !(response.ContentLength > 0)
|| !response.Body.CanSeek
)
{
return null;
}

string? bodyContent =
StreamUtil.CaptureAsStringAsync(response.BodyWriter.AsStream(true)).Result;

return bodyContent;
}
}
}
Loading

0 comments on commit 9d4ede2

Please sign in to comment.