Spy.Core.xml
|
<?xml version="1.0"?>
<doc> <assembly> <name>Spy.Core</name> </assembly> <members> <member name="T:Spy.Core.Contracts.AssemblyReport"> <summary> Complete scan report for a .NET assembly. </summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.AssemblyPath"> <summary>Gets or sets the path to the scanned assembly.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.AssemblyName"> <summary>Gets or sets the assembly name.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.ScanTimestamp"> <summary>Gets or sets the timestamp of the scan.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.Surfaces"> <summary>Gets or sets all discovered input surfaces.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.SecurityIssues"> <summary>Gets or sets the security issues found.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.TotalSurfaces"> <summary>Gets the total number of input surfaces discovered.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.TotalHttpEndpoints"> <summary>Gets the number of HTTP endpoints discovered.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.TotalSignalRMethods"> <summary>Gets the number of SignalR methods discovered.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.TotalWcfOperations"> <summary>Gets the number of WCF operations discovered.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.TotalGrpcOperations"> <summary>Gets the number of gRPC operations discovered.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.TotalClasses"> <summary>Gets the number of distinct classes found.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.AuthenticatedSurfaces"> <summary>Gets the number of surfaces requiring authorization.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.AnonymousSurfaces"> <summary>Gets the number of surfaces allowing anonymous access.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.TotalSecurityIssues"> <summary>Gets the total number of security issues found.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.HighSeverityIssues"> <summary>Gets the number of high-severity security issues.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.MediumSeverityIssues"> <summary>Gets the number of medium-severity security issues.</summary> </member> <member name="P:Spy.Core.Contracts.AssemblyReport.LowSeverityIssues"> <summary>Gets the number of low-severity security issues.</summary> </member> <member name="M:Spy.Core.Contracts.AssemblyReport.ToString"> <inheritdoc /> </member> <member name="T:Spy.Core.Contracts.GrpcOperation"> <summary> Represents an operation on a gRPC service. </summary> </member> <member name="P:Spy.Core.Contracts.GrpcOperation.SurfaceType"> <inheritdoc /> </member> <member name="P:Spy.Core.Contracts.GrpcOperation.ServiceName"> <summary>Gets or sets the gRPC service name (e.g. "GreeterService").</summary> </member> <member name="P:Spy.Core.Contracts.GrpcOperation.MethodType"> <summary>Gets or sets the gRPC method type (Unary, ServerStreaming, ClientStreaming, BidiStreaming).</summary> </member> <member name="P:Spy.Core.Contracts.GrpcOperation.DisplayRoute"> <inheritdoc /> </member> <member name="T:Spy.Core.Contracts.GrpcMethodType"> <summary> Identifies the streaming mode of a gRPC method. </summary> </member> <member name="F:Spy.Core.Contracts.GrpcMethodType.Unary"> <summary>Simple request-response.</summary> </member> <member name="F:Spy.Core.Contracts.GrpcMethodType.ServerStreaming"> <summary>Server streams multiple responses.</summary> </member> <member name="F:Spy.Core.Contracts.GrpcMethodType.ClientStreaming"> <summary>Client streams multiple requests.</summary> </member> <member name="F:Spy.Core.Contracts.GrpcMethodType.BidiStreaming"> <summary>Both sides stream.</summary> </member> <member name="T:Spy.Core.Contracts.HttpEndpoint"> <summary> Represents a discovered HTTP endpoint on an ASP.NET Core / Web API controller. </summary> </member> <member name="P:Spy.Core.Contracts.HttpEndpoint.SurfaceType"> <inheritdoc /> </member> <member name="P:Spy.Core.Contracts.HttpEndpoint.Route"> <summary>Gets or sets the full route template for this endpoint.</summary> </member> <member name="P:Spy.Core.Contracts.HttpEndpoint.HttpMethod"> <summary>Gets or sets the HTTP method (GET, POST, PUT, DELETE, PATCH, etc.).</summary> </member> <member name="P:Spy.Core.Contracts.HttpEndpoint.RouteDetails"> <summary>Gets or sets the route information.</summary> </member> <member name="P:Spy.Core.Contracts.HttpEndpoint.DisplayRoute"> <inheritdoc /> </member> <member name="T:Spy.Core.Contracts.InputSurface"> <summary> Abstract base class shared by all discoverable input surfaces. </summary> </member> <member name="P:Spy.Core.Contracts.InputSurface.SurfaceType"> <summary>Gets the kind of input surface.</summary> </member> <member name="P:Spy.Core.Contracts.InputSurface.ClassName"> <summary>Gets or sets the class name (controller name, hub name, etc.).</summary> </member> <member name="P:Spy.Core.Contracts.InputSurface.MethodName"> <summary>Gets or sets the method name.</summary> </member> <member name="P:Spy.Core.Contracts.InputSurface.ReturnType"> <summary>Gets or sets the return type of the method.</summary> </member> <member name="P:Spy.Core.Contracts.InputSurface.IsAsync"> <summary>Gets or sets whether the method is async.</summary> </member> <member name="P:Spy.Core.Contracts.InputSurface.RequiresAuthorization"> <summary>Gets or sets whether the surface requires authorization.</summary> </member> <member name="P:Spy.Core.Contracts.InputSurface.AllowAnonymous"> <summary>Gets or sets whether the surface explicitly allows anonymous access.</summary> </member> <member name="P:Spy.Core.Contracts.InputSurface.Roles"> <summary>Gets or sets the roles required to access this surface.</summary> </member> <member name="P:Spy.Core.Contracts.InputSurface.Policies"> <summary>Gets or sets the authorization policies applied to this surface.</summary> </member> <member name="P:Spy.Core.Contracts.InputSurface.SecurityAttributes"> <summary>Gets or sets the security attributes applied to this surface.</summary> </member> <member name="P:Spy.Core.Contracts.InputSurface.Parameters"> <summary>Gets or sets the parameters of the method.</summary> </member> <member name="P:Spy.Core.Contracts.InputSurface.DisplayRoute"> <summary>Gets the formatted display route for this surface (e.g. "GET api/users" or "WS chat/Send").</summary> </member> <member name="M:Spy.Core.Contracts.InputSurface.ToString"> <inheritdoc /> </member> <member name="T:Spy.Core.Contracts.ParameterSource"> <summary> Specifies the binding source of a parameter. </summary> </member> <member name="F:Spy.Core.Contracts.ParameterSource.Unknown"> <summary>Parameter source is unknown or not explicitly specified.</summary> </member> <member name="F:Spy.Core.Contracts.ParameterSource.Body"> <summary>Parameter is bound from the request body.</summary> </member> <member name="F:Spy.Core.Contracts.ParameterSource.Query"> <summary>Parameter is bound from the query string.</summary> </member> <member name="F:Spy.Core.Contracts.ParameterSource.Route"> <summary>Parameter is bound from the route template.</summary> </member> <member name="F:Spy.Core.Contracts.ParameterSource.Header"> <summary>Parameter is bound from a request header.</summary> </member> <member name="F:Spy.Core.Contracts.ParameterSource.Form"> <summary>Parameter is bound from form data.</summary> </member> <member name="F:Spy.Core.Contracts.ParameterSource.Services"> <summary>Parameter is bound from registered services.</summary> </member> <member name="T:Spy.Core.Contracts.EndpointParameterInfo"> <summary> Represents a parameter on an HTTP endpoint action method. </summary> </member> <member name="P:Spy.Core.Contracts.EndpointParameterInfo.Name"> <summary>Gets or sets the parameter name.</summary> </member> <member name="P:Spy.Core.Contracts.EndpointParameterInfo.Type"> <summary>Gets or sets the CLR type name of the parameter.</summary> </member> <member name="P:Spy.Core.Contracts.EndpointParameterInfo.IsRequired"> <summary>Gets or sets whether the parameter is required.</summary> </member> <member name="P:Spy.Core.Contracts.EndpointParameterInfo.Source"> <summary>Gets or sets the binding source of the parameter.</summary> </member> <member name="M:Spy.Core.Contracts.EndpointParameterInfo.ToString"> <inheritdoc /> </member> <member name="T:Spy.Core.Contracts.RouteInfo"> <summary> Represents route information for an endpoint. </summary> </member> <member name="P:Spy.Core.Contracts.RouteInfo.ControllerRoute"> <summary>Gets or sets the route template from the controller-level [Route] attribute.</summary> </member> <member name="P:Spy.Core.Contracts.RouteInfo.ActionRoute"> <summary>Gets or sets the route template from the action-level attribute.</summary> </member> <member name="P:Spy.Core.Contracts.RouteInfo.CombinedRoute"> <summary>Gets or sets the fully resolved route combining controller and action routes.</summary> </member> <member name="P:Spy.Core.Contracts.RouteInfo.Area"> <summary>Gets or sets the area name, if the controller belongs to an area.</summary> </member> <member name="M:Spy.Core.Contracts.RouteInfo.ToString"> <inheritdoc /> </member> <member name="T:Spy.Core.Contracts.SecurityAttribute"> <summary> Represents security-related attributes applied to a controller or action. </summary> </member> <member name="P:Spy.Core.Contracts.SecurityAttribute.AttributeName"> <summary>Gets or sets the attribute type name (e.g., "AuthorizeAttribute").</summary> </member> <member name="P:Spy.Core.Contracts.SecurityAttribute.Roles"> <summary>Gets or sets the roles specified in the attribute, if any.</summary> </member> <member name="P:Spy.Core.Contracts.SecurityAttribute.Policies"> <summary>Gets or sets the policy names specified in the attribute, if any.</summary> </member> <member name="P:Spy.Core.Contracts.SecurityAttribute.AuthenticationSchemes"> <summary>Gets or sets the authentication schemes, if any.</summary> </member> <member name="M:Spy.Core.Contracts.SecurityAttribute.ToString"> <inheritdoc /> </member> <member name="T:Spy.Core.Contracts.SecuritySeverity"> <summary> Severity level of a security issue. </summary> </member> <member name="F:Spy.Core.Contracts.SecuritySeverity.Info"> <summary>Informational finding.</summary> </member> <member name="F:Spy.Core.Contracts.SecuritySeverity.Low"> <summary>Low severity issue.</summary> </member> <member name="F:Spy.Core.Contracts.SecuritySeverity.Medium"> <summary>Medium severity issue.</summary> </member> <member name="F:Spy.Core.Contracts.SecuritySeverity.High"> <summary>High severity issue.</summary> </member> <member name="F:Spy.Core.Contracts.SecuritySeverity.Critical"> <summary>Critical severity issue.</summary> </member> <member name="T:Spy.Core.Contracts.SecurityIssue"> <summary> Represents a security vulnerability or misconfiguration found in an input surface. </summary> </member> <member name="P:Spy.Core.Contracts.SecurityIssue.Title"> <summary>Gets or sets the short title of the security issue.</summary> </member> <member name="P:Spy.Core.Contracts.SecurityIssue.Description"> <summary>Gets or sets the detailed description of the issue.</summary> </member> <member name="P:Spy.Core.Contracts.SecurityIssue.Severity"> <summary>Gets or sets the severity level.</summary> </member> <member name="P:Spy.Core.Contracts.SecurityIssue.SurfaceRoute"> <summary>Gets or sets the display route of the affected surface (e.g. "GET api/users" or "WS chat/Send").</summary> </member> <member name="P:Spy.Core.Contracts.SecurityIssue.SurfaceType"> <summary>Gets or sets the type of input surface where the issue was found.</summary> </member> <member name="P:Spy.Core.Contracts.SecurityIssue.Recommendation"> <summary>Gets or sets the recommended remediation.</summary> </member> <member name="P:Spy.Core.Contracts.SecurityIssue.ClassName"> <summary>Gets or sets the class name of the affected surface.</summary> </member> <member name="P:Spy.Core.Contracts.SecurityIssue.MethodName"> <summary>Gets or sets the method name of the affected surface.</summary> </member> <member name="M:Spy.Core.Contracts.SecurityIssue.ToString"> <inheritdoc /> </member> <member name="T:Spy.Core.Contracts.SignalRMethod"> <summary> Represents a callable method on a SignalR hub. </summary> </member> <member name="P:Spy.Core.Contracts.SignalRMethod.SurfaceType"> <inheritdoc /> </member> <member name="P:Spy.Core.Contracts.SignalRMethod.HubRoute"> <summary>Gets or sets the conventional hub route (e.g. "chat" for ChatHub).</summary> </member> <member name="P:Spy.Core.Contracts.SignalRMethod.HubName"> <summary>Gets or sets the hub class name.</summary> </member> <member name="P:Spy.Core.Contracts.SignalRMethod.IsStreamingResult"> <summary>Gets or sets whether the method returns a streaming result (IAsyncEnumerable, ChannelReader).</summary> </member> <member name="P:Spy.Core.Contracts.SignalRMethod.AcceptsStreaming"> <summary>Gets or sets whether the method accepts a streaming parameter.</summary> </member> <member name="P:Spy.Core.Contracts.SignalRMethod.DisplayRoute"> <inheritdoc /> </member> <member name="T:Spy.Core.Contracts.SurfaceType"> <summary> Identifies the kind of input surface discovered in an assembly. </summary> </member> <member name="F:Spy.Core.Contracts.SurfaceType.HttpEndpoint"> <summary>An HTTP endpoint on an ASP.NET Core / Web API controller.</summary> </member> <member name="F:Spy.Core.Contracts.SurfaceType.SignalRMethod"> <summary>A callable method on a SignalR hub.</summary> </member> <member name="F:Spy.Core.Contracts.SurfaceType.WcfOperation"> <summary>An operation on a WCF service contract.</summary> </member> <member name="F:Spy.Core.Contracts.SurfaceType.GrpcOperation"> <summary>An operation on a gRPC service.</summary> </member> <member name="T:Spy.Core.Contracts.WcfOperation"> <summary> Represents an operation on a WCF service contract. </summary> </member> <member name="P:Spy.Core.Contracts.WcfOperation.SurfaceType"> <inheritdoc /> </member> <member name="P:Spy.Core.Contracts.WcfOperation.ContractName"> <summary>Gets or sets the service contract interface name (e.g. "IOrderService").</summary> </member> <member name="P:Spy.Core.Contracts.WcfOperation.ServiceNamespace"> <summary>Gets or sets the namespace from [ServiceContract(Namespace=...)].</summary> </member> <member name="P:Spy.Core.Contracts.WcfOperation.IsOneWay"> <summary>Gets or sets whether this is a one-way operation from [OperationContract(IsOneWay=true)].</summary> </member> <member name="P:Spy.Core.Contracts.WcfOperation.DisplayRoute"> <inheritdoc /> </member> <member name="T:Spy.Core.Helpers.ReflectionHelper"> <summary> Shared reflection utilities used by discovery implementations. </summary> </member> <member name="M:Spy.Core.Helpers.ReflectionHelper.GetTypesSafe(System.Reflection.Assembly)"> <summary> Safely loads all types from an assembly, handling partial load failures. </summary> </member> <member name="M:Spy.Core.Helpers.ReflectionHelper.IsAsyncMethod(System.Reflection.MethodInfo)"> <summary> Determines whether a method is async (returns Task, Task<T>, ValueTask, or ValueTask<T>). </summary> </member> <member name="M:Spy.Core.Helpers.ReflectionHelper.IsNullableType(System.Type)"> <summary> Determines whether a type is nullable (Nullable<T> or reference type). </summary> </member> <member name="M:Spy.Core.Helpers.ReflectionHelper.GetFriendlyTypeName(System.Type)"> <summary> Returns a human-friendly name for a CLR type. </summary> </member> <member name="M:Spy.Core.Helpers.ReflectionHelper.GetParameters(System.Reflection.MethodInfo,Spy.Core.Services.AttributeAnalyzer)"> <summary> Builds parameter info for a method's parameters. </summary> </member> <member name="T:Spy.Core.Services.AssemblyScanner"> <summary> Orchestrates assembly scanning, surface discovery, and security analysis. </summary> </member> <member name="M:Spy.Core.Services.AssemblyScanner.#ctor(Spy.Core.Services.IDiscovery[])"> <summary> Initializes a new instance of <see cref="T:Spy.Core.Services.AssemblyScanner"/>. </summary> </member> <member name="M:Spy.Core.Services.AssemblyScanner.ScanAssembly(System.String)"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.AssemblyScanner.ScanAssembly(System.Reflection.Assembly)"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.AssemblyScanner.AnalyzeSecurityIssues(System.Collections.Generic.List{Spy.Core.Contracts.InputSurface})"> <summary> Analyzes all input surfaces for security issues. </summary> </member> <member name="T:Spy.Core.Services.AttributeAnalyzer"> <summary> Analyzes security-related attributes on controllers and actions using reflection. </summary> </member> <member name="M:Spy.Core.Services.AttributeAnalyzer.HasAuthorizeAttribute(System.Reflection.MemberInfo)"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.AttributeAnalyzer.HasAllowAnonymousAttribute(System.Reflection.MemberInfo)"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.AttributeAnalyzer.GetSecurityAttributes(System.Reflection.MemberInfo)"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.AttributeAnalyzer.GetRoles(System.Reflection.MemberInfo)"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.AttributeAnalyzer.GetPolicies(System.Reflection.MemberInfo)"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.AttributeAnalyzer.GetHttpMethod(System.Reflection.MethodInfo)"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.AttributeAnalyzer.GetRouteTemplate(System.Reflection.MemberInfo)"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.AttributeAnalyzer.GetArea(System.Type)"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.AttributeAnalyzer.GetParameterSource(System.Reflection.ParameterInfo)"> <inheritdoc /> </member> <member name="T:Spy.Core.Services.GrpcDiscovery"> <summary> Discovers gRPC service methods by scanning for types that inherit from a generated gRPC base class. </summary> </member> <member name="M:Spy.Core.Services.GrpcDiscovery.#ctor(Spy.Core.Services.AttributeAnalyzer)"> <summary> Initializes a new instance of <see cref="T:Spy.Core.Services.GrpcDiscovery"/>. </summary> </member> <member name="P:Spy.Core.Services.GrpcDiscovery.SurfaceType"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.GrpcDiscovery.Discover(System.Reflection.Assembly)"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.GrpcDiscovery.IsGrpcService(System.Type)"> <summary> Detects whether a type is a gRPC service implementation. A gRPC service inherits from a generated base class whose parent declares a static BindService method. </summary> </member> <member name="M:Spy.Core.Services.GrpcDiscovery.DetermineMethodType(System.Reflection.MethodInfo)"> <summary> Determines the gRPC method type from its parameter signature. </summary> </member> <member name="M:Spy.Core.Services.GrpcDiscovery.GetUserParameters(System.Reflection.MethodInfo)"> <summary> Extracts user-meaningful parameters, excluding ServerCallContext and stream reader/writer params. </summary> </member> <member name="T:Spy.Core.Services.HttpEndpointDiscovery"> <summary> Discovers HTTP endpoints by scanning for ASP.NET Core / Web API controllers. </summary> </member> <member name="M:Spy.Core.Services.HttpEndpointDiscovery.#ctor(Spy.Core.Services.AttributeAnalyzer)"> <summary> Initializes a new instance of <see cref="T:Spy.Core.Services.HttpEndpointDiscovery"/>. </summary> </member> <member name="P:Spy.Core.Services.HttpEndpointDiscovery.SurfaceType"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.HttpEndpointDiscovery.Discover(System.Reflection.Assembly)"> <inheritdoc /> </member> <member name="T:Spy.Core.Services.IDiscovery"> <summary> Discovers input surfaces of a specific type within a .NET assembly. </summary> </member> <member name="P:Spy.Core.Services.IDiscovery.SurfaceType"> <summary>Gets the surface type this discovery implementation handles.</summary> </member> <member name="M:Spy.Core.Services.IDiscovery.Discover(System.Reflection.Assembly)"> <summary>Discovers all input surfaces of this type in the given assembly.</summary> </member> <member name="T:Spy.Core.Services.ScannerFactory"> <summary> Creates a fully wired <see cref="T:Spy.Core.Services.AssemblyScanner"/> with all discovery implementations. </summary> </member> <member name="M:Spy.Core.Services.ScannerFactory.Create"> <summary> Creates an <see cref="T:Spy.Core.Services.AssemblyScanner"/> configured with all built-in discovery types. </summary> </member> <member name="T:Spy.Core.Services.SecurityResolver"> <summary> Resolves merged security attributes from a class and its method. </summary> </member> <member name="M:Spy.Core.Services.SecurityResolver.ReadClass(System.Reflection.MemberInfo)"> <summary> Reads security attributes from a class (controller/hub) level. </summary> </member> <member name="M:Spy.Core.Services.SecurityResolver.Merge(Spy.Core.Services.SecurityResolver.ClassSecurity,System.Reflection.MethodInfo)"> <summary> Merges class-level and method-level security into a resolved result. </summary> </member> <member name="T:Spy.Core.Services.SignalRDiscovery"> <summary> Discovers SignalR hub methods by scanning for types that inherit from Hub or Hub<T>. </summary> </member> <member name="M:Spy.Core.Services.SignalRDiscovery.#ctor(Spy.Core.Services.AttributeAnalyzer)"> <summary> Initializes a new instance of <see cref="T:Spy.Core.Services.SignalRDiscovery"/>. </summary> </member> <member name="P:Spy.Core.Services.SignalRDiscovery.SurfaceType"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.SignalRDiscovery.Discover(System.Reflection.Assembly)"> <inheritdoc /> </member> <member name="T:Spy.Core.Services.WcfDiscovery"> <summary> Discovers WCF service operations by scanning for interfaces with [ServiceContract]. </summary> </member> <member name="M:Spy.Core.Services.WcfDiscovery.#ctor(Spy.Core.Services.AttributeAnalyzer)"> <summary> Initializes a new instance of <see cref="T:Spy.Core.Services.WcfDiscovery"/>. </summary> </member> <member name="P:Spy.Core.Services.WcfDiscovery.SurfaceType"> <inheritdoc /> </member> <member name="M:Spy.Core.Services.WcfDiscovery.Discover(System.Reflection.Assembly)"> <inheritdoc /> </member> </members> </doc> |