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
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,21 @@ private static void InitRoute(Assembly assembly)
if (assembly == null)
return;

var typeRoutes = assembly.GetTypes().Select(type => new { type, routes = type.GetCustomAttributes<RouteAttribute>().ToList() }).Where(item => item.routes.Count > 0).ToList();
var typeRoutes = assembly.GetTypes()
.Select(type => new { type, routes = GetRouteTemplates(type) })
.Where(item => item.routes.Count > 0)
.ToList();

foreach (var item in typeRoutes)
{
if (_routes.ContainsKey(item.type))
continue;
var routeDatas = item.routes.Select(route =>
var routeDatas = item.routes.Select(template =>
{
var values = (route.Template.StartsWith('/') ? route.Template[1..] : route.Template).Split('/');
var values = (template.StartsWith('/') ? template[1..] : template).Split('/');
return new BlazorRouteData
{
Template = route.Template,
Template = template,
Type = item.type,
RouteKeies = values.Select((value, index) => new BlazorRouteParamKey
{
Expand All @@ -52,6 +55,17 @@ private static void InitRoute(Assembly assembly)
}
}

private static List<string> GetRouteTemplates(Type type)
{
const string routeAttributeName = "Microsoft.AspNetCore.Components.RouteAttribute";
return type.GetCustomAttributes(inherit: true)
.Where(attr => string.Equals(attr.GetType().FullName, routeAttributeName, StringComparison.Ordinal))
.Select(attr => attr.GetType().GetProperty("Template")?.GetValue(attr)?.ToString())
.Where(template => !string.IsNullOrWhiteSpace(template))
.Cast<string>()
.ToList();
}

internal static bool TryGetUrlRoute(string url, out BlazorRouteData? route)
{
route = default;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public static IServiceCollection AddObservable(this IServiceCollection services,

if (blazorRouteAssemblies != null && blazorRouteAssemblies.Any())
{
BlazorRouteManager.InitRoute([.. blazorRouteAssemblies]);
BlazorRouteManager.InitRoute(blazorRouteAssemblies.ToArray());
}

if (traceInstrumentConfig != null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ public static bool IsAspNetCoreFilter(HttpContext httpContext) => !(FilterConsts

internal static bool IsWebsocket(HttpContext httpContext)
{
var connection = httpContext.Request.Headers.Connection.ToString();
var upgrade = httpContext.Request.Headers.Upgrade.ToString();
var connection = httpContext.Request.Headers["Connection"].ToString();
var upgrade = httpContext.Request.Headers["Upgrade"].ToString();
return connection.Contains("upgrade", StringComparison.OrdinalIgnoreCase)
&& upgrade.Contains("websocket", StringComparison.OrdinalIgnoreCase);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ public static void AddMasaHttpRequest(Activity activity, HttpRequest httpRequest
activity.SetTag(OpenTelemetryAttributeName.Http.REQUEST_CONTENT_TYPE, httpRequest.ContentType);
if (httpRequest.Headers != null)
{
activity.SetTag(OpenTelemetryAttributeName.Http.REQUEST_AUTHORIZATION, httpRequest.Headers.Authorization);
activity.SetTag(OpenTelemetryAttributeName.Http.REQUEST_USER_AGENT, httpRequest.Headers.UserAgent);
activity.SetTag(OpenTelemetryAttributeName.Http.REQUEST_AUTHORIZATION, httpRequest.Headers["Authorization"].ToString());
activity.SetTag(OpenTelemetryAttributeName.Http.REQUEST_USER_AGENT, httpRequest.Headers["User-Agent"].ToString());
activity.SetTag(OpenTelemetryAttributeName.Http.CLIENT_IP, GetIp(httpRequest.Headers, httpRequest.HttpContext!.Connection.RemoteIpAddress));
SetMasaCustomerHeaderTags(activity, httpRequest.Headers);
}
Expand All @@ -43,7 +43,7 @@ public static void AddMasaHttpRequest(Activity activity, HttpRequest httpRequest
}

if (!httpRequest.Body.CanSeek)
httpRequest.EnableBuffering();
return;
SetActivityBody(activity, httpRequest.Body, GetHttpRequestEncoding(httpRequest));
}
activity.SetTag(OpenTelemetryAttributeName.Host.NAME, Dns.GetHostName());
Expand Down Expand Up @@ -100,7 +100,7 @@ private static bool TrySetMultipartFormBody(Activity activity, HttpRequest httpR
return false;

if (!httpRequest.Body.CanSeek)
httpRequest.EnableBuffering();
return false;

var form = httpRequest.ReadFormAsync().ConfigureAwait(false).GetAwaiter().GetResult();
var formItems = new List<string>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,12 @@ public static void SetActivityBody(Activity activity, Stream inputSteam, Encodin
public static void SetUserInfo(Activity activity, ClaimsPrincipal? claims)
{
if (claims == null || !claims.Claims.Any()) return;
string userId = claims.FindFirstValue(IdentityClaimConsts.USER_ID) ?? claims.FindFirstValue(ClaimTypes.NameIdentifier) ?? string.Empty;
string userName = claims.FindFirstValue(IdentityClaimConsts.USER_NAME) ?? claims.FindFirstValue(ClaimTypes.Name) ?? string.Empty;
string userId = claims.FindFirst(IdentityClaimConsts.USER_ID)?.Value
?? claims.FindFirst(ClaimTypes.NameIdentifier)?.Value
?? string.Empty;
string userName = claims.FindFirst(IdentityClaimConsts.USER_NAME)?.Value
?? claims.FindFirst(ClaimTypes.Name)?.Value
?? string.Empty;

activity.AddTag(OpenTelemetryAttributeName.EndUser.ID, userId);
activity.AddTag(OpenTelemetryAttributeName.EndUser.USER_NICK_NAME, userName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
</PropertyGroup>

<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftTeskSdkPackageVersion)" />
<PackageReference Include="Moq" Version="$(MoqPackageVersion)" />
<PackageReference Include="MSTest.TestAdapter" Version="$(MSTestPackageVersion)" />
Expand Down
Loading