/// <summary> /// Default constructor /// </summary> /// <param name="types"></param> /// <param name="apiInformation"></param> /// <param name="activator"></param> public TypeSetExposureConfiguration(IEnumerable <Type> types, ICurrentApiInformation apiInformation, IInstanceActivator activator, IArrayMethodInvokerBuilder invokerBuilder) { _types = types; _apiInformation = apiInformation; _activator = activator; _invokerBuilder = invokerBuilder; }
public ApiConfigurationProvider(IServiceProvider appServices, IInstanceActivator activator, IArrayMethodInvokerBuilder invokerBuilder, IOptions <RpcServiceConfiguration> rpcConfiguration) { _activator = activator; _invokerBuilder = invokerBuilder; _rpcConfiguration = rpcConfiguration; AppServices = appServices; }
public ExposedMethodInformation(Type type, IEnumerable <string> routeNames, string methodName, MethodInfo method, IMethodAuthorization[] methodAuthorizations, Func <ICallExecutionContext, IEnumerable <ICallFilter> >[] filters, IInstanceActivator instanceActivator, IArrayMethodInvokerBuilder invokeMethodBuilder, bool allowCompression, string obsoleteMessage) { _invokeMethodBuilder = invokeMethodBuilder; _allowCompression = allowCompression; Type = type; RouteNames = routeNames; MethodName = methodName; MethodInfo = method; MethodAuthorizations = methodAuthorizations; Filters = filters; ObsoleteMessage = obsoleteMessage; InstanceType = MethodInfo.DeclaringType; InstanceProvider = (context, provider) => instanceActivator.ActivateInstance(context, provider, Type); Parameters = GenerateParameters(); }
public ExposureConfiguration(Type type, ICurrentApiInformation apiInformation, IInstanceActivator activator, IArrayMethodInvokerBuilder invokerBuilder) : base(apiInformation, activator, invokerBuilder) { _type = type; }
/// <summary> /// Get all exposed methods from a type given a current state /// </summary> /// <param name="type"></param> /// <param name="currentApi"></param> /// <param name="namesFunc"></param> /// <param name="authorizations"></param> /// <param name="methodFilter"></param> /// <param name="activator"></param> /// <param name="invokerBuilder"></param> /// <param name="obsoleteMessage"></param> /// <returns></returns> public static IEnumerable <ExposedMethodInformation> GetExposedMethods(Type type, ICurrentApiInformation currentApi, Func <Type, IEnumerable <string> > namesFunc, List <IMethodAuthorization> authorizations, Func <MethodInfo, bool> methodFilter, IInstanceActivator activator, IArrayMethodInvokerBuilder invokerBuilder, string obsoleteMessage) { var names = namesFunc(type).ToList(); List <string> finalNames; if (currentApi.Prefixes.Count > 0) { var newNames = new List <string>(); foreach (var prefixes in currentApi.Prefixes) { foreach (var prefix in prefixes(type)) { foreach (var name in names) { newNames.Add(prefix + name); } } } finalNames = newNames; } else { finalNames = names; } foreach (var authorization in currentApi.Authorizations) { foreach (var methodAuthorization in authorization(type)) { authorizations.Add(methodAuthorization); } } foreach (var method in type.GetRuntimeMethods()) { if (method.IsStatic || !method.IsPublic || method.DeclaringType == typeof(object)) { continue; } var filterOut = currentApi.MethodFilters.Any(func => !func(method)); if (filterOut) { continue; } if (methodFilter != null && !methodFilter(method)) { continue; } var filters = new List <Func <ICallExecutionContext, IEnumerable <ICallFilter> > >(); foreach (var func in currentApi.Filters) { var filter = func(method); if (filter != null) { filters.Add(filter); } } var currentAuth = new List <IMethodAuthorization>(authorizations); var obsolete = ProcessAttributesOnMethod(method, currentAuth, filters); obsoleteMessage = obsoleteMessage ?? obsolete; var authArray = currentAuth.Count > 0 ? currentAuth.ToArray() : Array.Empty <IMethodAuthorization>(); var filterArray = filters.Count > 0 ? filters.ToArray() : Array.Empty <Func <ICallExecutionContext, IEnumerable <ICallFilter> > >(); yield return(new ExposedMethodInformation(type, finalNames, currentApi.NamingConventions.MethodNameGenerator(method), method, authArray, filterArray, activator, invokerBuilder, currentApi.SupportResponseCompression, obsoleteMessage)); } }
/// <summary> /// Default constructor /// </summary> /// <param name="apiInformation"></param> /// <param name="activator"></param> /// <param name="arrayMethodInvokerBuilder"></param> protected BaseExposureConfiguration(ICurrentApiInformation apiInformation, IInstanceActivator activator, IArrayMethodInvokerBuilder arrayMethodInvokerBuilder) { ApiInformation = apiInformation; _activator = activator; _arrayMethodInvokerBuilder = arrayMethodInvokerBuilder; }