public ApiDashboardFilterRelation(int?id, IApiFilter filter, bool isVisible, int order) { Id = id; Filter = filter; IsVisible = isVisible; Order = order; }
static void AddInheritedMembers( ITypeSymbol symbol, INamespaceOrTypeSymbol type, Dictionary <string, string?> dict, IReadOnlyList <string> typeParameterNames, IApiFilter apiFilter ) { foreach (var m in type.GetMembers() .Where(m => !(m is INamedTypeSymbol)) .Where( m => apiFilter.CanVisitApi( m, symbol.Equals(type) || !symbol.IsSealed || symbol.TypeKind != TypeKind.Struct ) ) .Where(x => x.IsInheritable())) { var id = symbol.ToString()?.Trim(); if (id != null) { dict.TryAdd(id, type.Equals(symbol) ? null : m.ToDisplayString()); } } }
/// <summary> /// Converts any IApiFilter implementation to QueryParameters applied on RestRequest /// </summary> public static void ApplyFiltersAsQueryString(this RestRequest request, IApiFilter apiFilter) { if (apiFilter == null) { return; } PropertyInfo[] properties = apiFilter.GetType().GetProperties(); foreach (var propertyInfo in properties.Where(x=> x.GetValue(apiFilter) != null)) { if (propertyInfo.PropertyType == typeof (DateTime) || propertyInfo.PropertyType == typeof (DateTime?)) { request.AddQueryParameter(propertyInfo.Name, ((DateTime)propertyInfo.GetValue(apiFilter)).ToString(BaseClient.DateFormat)); continue; } if (propertyInfo.PropertyType == typeof(FilterType)) { request.AddQueryParameter(propertyInfo.Name, ExtractFilterTypeToString(propertyInfo.GetValue(apiFilter))); continue; } request.AddQueryParameter(propertyInfo.Name, propertyInfo.GetValue(apiFilter).ToString()); } }
/// <summary> /// Converts any IApiFilter implementation to QueryParameters applied on RestRequest /// </summary> public static void ApplyFiltersAsQueryString(this RestRequest request, IApiFilter apiFilter) { if (apiFilter == null) { return; } PropertyInfo[] properties = apiFilter.GetType().GetProperties(); foreach (var propertyInfo in properties.Where(x => x.GetValue(apiFilter) != null)) { if (propertyInfo.PropertyType == typeof(DateTime) || propertyInfo.PropertyType == typeof(DateTime?)) { request.AddQueryParameter(propertyInfo.Name, ((DateTime)propertyInfo.GetValue(apiFilter)).ToString(BaseClient.DateFormat)); continue; } if (propertyInfo.PropertyType == typeof(FilterType)) { request.AddQueryParameter(propertyInfo.Name, ExtractFilterTypeToString(propertyInfo.GetValue(apiFilter))); continue; } request.AddQueryParameter(propertyInfo.Name, propertyInfo.GetValue(apiFilter).ToString()); } }
internal static string?GenerateSyntax( this ISymbol symbol, MemberType type, IApiFilter apiFilter ) => type switch {
public ApiFilterWrapper(IApiFilter apiFilter) { if (apiFilter == null) { throw new ArgumentNullException(nameof(apiFilter)); } ApiFilter = apiFilter; }
static IEnumerable <ISymbol> GetImplements(ISymbol symbol, IApiFilter apiFilter) => symbol.ContainingType.AllInterfaces .Where(type => apiFilter.CanVisitApi(type)) .SelectMany(type => type.GetMembers()) .Where( x => apiFilter.CanVisitApi(x) && symbol.Equals( symbol.ContainingType.FindImplementationForInterfaceMember(x) ) );
internal static List <string> GetMethodImplements(this IMethodSymbol symbol, IApiFilter apiFilter) => GetImplements(symbol, apiFilter) .Select( x => symbol.TypeParameters.Length == 0 ? x : ((IMethodSymbol)x).Construct( symbol.TypeParameters.ToArray <ITypeSymbol>() ) ) .Select(x => x.ToDisplayString()) .ToList();
protected T Get <T>(string resource, IApiFilter filter = null) { RestRequest request = CreateRequest(resource, Method.GET); request.ApplyFiltersAsQueryString(filter); IRestResponse response = Client.Execute(request); if (response.StatusCode != HttpStatusCode.OK) { throw new ApplicationException("Response from API is " + response.StatusCode); } return(DeserializedResult <T>(response)); }
public ApiDashboardFilterRelation ConvertToApiEntity(DalDashboardFilterRelation dataEntity) { IApiFilter filter = null; if (dataEntity.FilterTargetId != null) { filter = _filters.Where(t => t.Id == dataEntity.FilterTargetId).FirstOrDefault(); } else { filter = _dashboards.Where(t => t.Id == dataEntity.DashboardTargetId).FirstOrDefault(); } var result = new ApiDashboardFilterRelation(dataEntity.Id, filter, dataEntity.IsVisible, dataEntity.Order); result.IsDirty = dataEntity.IsDirty; result.IsMarkForDeletion = dataEntity.IsMarkForDeletion; return(result); }
public ApiFilterWrapper(IApiFilter apiFilter) { ApiFilter = apiFilter ?? throw new ArgumentNullException(nameof(apiFilter)); }
public static HttpConfiguration RegisterFilter(this HttpConfiguration config, IApiFilter filter) { Filter = filter; return(config); }
static void GenerateInheritance( INamedTypeSymbol symbol, MetadataItem item, IApiFilter apiFilter ) { var dict = new Dictionary <string, string?>(); switch (symbol.TypeKind) { case TypeKind.Class: case TypeKind.Struct: { var type = symbol; var inheritance = new List <string>(); var typeParameterNames = symbol.IsGenericType ? symbol.Accept(TypeGenericParameterNameVisitor.Instance) : EmptyListOfString; while (type != null) { inheritance.AddWhen(type.Kind == SymbolKind.ErrorType, "System.Object"); inheritance.AddWhen(!type.Equals(symbol), type.ToDisplayString()); AddInheritedMembers(symbol, type, dict, typeParameterNames, apiFilter); type = type.BaseType; } if (symbol.TypeKind == TypeKind.Class) { inheritance.Reverse(); item.Inheritance = inheritance; } item.Implements = symbol.AllInterfaces .Where(t => apiFilter.CanVisitApi(t)) .Select(x => x.ToDisplayString()) .ToList(); break; } case TypeKind.Interface: { var typeParameterNames = symbol.IsGenericType ? symbol.Accept(TypeGenericParameterNameVisitor.Instance) : EmptyListOfString; AddInheritedMembers(symbol, symbol, dict, typeParameterNames, apiFilter); foreach (var t in symbol.AllInterfaces) { AddInheritedMembers(symbol, t, dict, typeParameterNames, apiFilter); } break; } } item.InheritedMembers = dict.Values.Where(r => r != null).ToList() !; }
public static void AddFilter(IApiFilter filter) { filters.Add(filter); }
/// <summary> /// Adds the global filter. /// </summary> /// <param name="filter">The filter.</param> /// <returns>Instance of this options</returns> public LiteApiOptions AddGlobalFilter(IApiFilter filter) { GlobalFilters.Add(new ApiFilterWrapper(filter)); return(this); }
internal static List <string> GetMemberImplements(this ISymbol symbol, IApiFilter apiFilter) => GetImplements(symbol, apiFilter) .Select(x => x.ToDisplayString()) .ToList();