/// <summary> /// Get exposed methods for set /// </summary> /// <returns></returns> public IEnumerable <IExposedMethodInformation> GetExposedMethods() { if (_interfacesFilter == null && _typeFilter == null) { _typeFilter = t => true; } foreach (var type in _types) { if (_where != null && !_where(type)) { continue; } bool expose = false; if (type.GetTypeInfo().IsInterface) { if (_interfacesFilter != null) { expose = _interfacesFilter(type); } } else if (_typeFilter != null) { expose = _typeFilter(type); } if (expose) { List <IMethodAuthorization> authorizations = new List <IMethodAuthorization>(); foreach (var authorizationFunc in _authorizations) { authorizations.AddRange(authorizationFunc(type)); } var nameList = new List <string>(); if (nameList.Count > 0) { _names = nameType => nameList; } foreach (var exposedMethodInformation in BaseExposureConfiguration.GetExposedMethods(type, _apiInformation, _names ?? _apiInformation.NamingConventions.RouteNameGenerator, authorizations, _methodFilter, _activator, _invokerBuilder, null)) { yield return(exposedMethodInformation); } } } }
public IEnumerable <IExposedMethodInformation> GetExposedMethods() { foreach (var methodTuple in _methods) { var methodInfo = methodTuple.Item2.GetMethodInfo(); var filterOut = _currentApiInformation.MethodFilters.Any(func => !func(methodInfo)); if (filterOut) { continue; } var finalNames = new List <string>(); if (_currentApiInformation.Prefixes.Count > 0) { foreach (var prefixes in _currentApiInformation.Prefixes) { foreach (var prefix in prefixes(typeof(object))) { finalNames.Add(prefix + _path); } } } else { finalNames.Add(_path); } var authorizations = new List <IMethodAuthorization>(); foreach (var authorization in _currentApiInformation.Authorizations) { foreach (var methodAuthorization in authorization(typeof(object))) { authorizations.Add(methodAuthorization); } } var filters = new List <Func <ICallExecutionContext, IEnumerable <ICallFilter> > >(); foreach (var func in _currentApiInformation.Filters) { var filter = func(methodInfo); if (filter != null) { filters.Add(filter); } } BaseExposureConfiguration.ProcessAttributesOnMethod(methodInfo, authorizations, filters); var authArray = authorizations.Count > 0 ? authorizations.ToArray() : Array.Empty <IMethodAuthorization>(); var filterArray = filters.Count > 0 ? filters.ToArray() : Array.Empty <Func <ICallExecutionContext, IEnumerable <ICallFilter> > >(); yield return(new FactoryExposedMethodInformation(typeof(object), finalNames, methodTuple.Item1, methodInfo, authArray, filterArray, methodTuple.Item3, null)); } }