Exemplo n.º 1
0
        private List <Attribute> GetInvocationMethodFilterAttributes(_IInvocation invocation, IDictionary <string, object> invocationContext)
        {
            var attributes = _attributeProvider.GetAttributes(invocation.Method, invocationContext).ToList();

            if (invocation.Method != invocation.MethodInvocationTarget)
            {
                attributes.AddRange(_attributeProvider.GetAttributes(invocation.MethodInvocationTarget, invocationContext));
            }
            return(attributes);
        }
        private static bool IsUserScopedApi(IAttributeProvider controller)
        {
            var route    = controller.GetAttributes(TypeInfo.From <RouteAttribute>()).SingleOrDefault();
            var template = route?.GetValue <string?>("Template", null);

            return(template?.StartsWith("v1/user/{userId}") ?? false);
        }
        private static IEnumerable <KeyValuePair <string, object> > GetSchemaLookupProperties
            (IAttributeProvider attributeProvider)
        {
            var attribute = attributeProvider.GetAttributes(typeof(DynamicSchemaLookupAttribute), true).SingleOrDefault() as DynamicSchemaLookupAttribute;

            return(attribute.GetSwaggerExtensions());
        }
        private static NullabilityInfo From(IAttributeProvider?type, IAttributeProvider member)
        {
            var typeAttributes   = type?.GetAttributes(inherit: true) ?? new IAttributeInfo[0];
            var memberAttributes = member.GetAttributes(inherit: true);

            return(new NullabilityInfo(GetNullableContextFlag(memberAttributes) ?? GetNullableContextFlag(typeAttributes),
                                       GetNullableFlagsInternal(memberAttributes),
                                       memberAttributes));
        }
        private static string AppendRoutePrefix(string routeTemplate, IAttributeProvider controllerType)
        {
            var routeAttribute = controllerType.GetAttributes(TypeInfo.From <RouteAttribute>()).SingleOrDefault();
            var fullRoute      = (routeAttribute == null ? "" : routeAttribute.GetValue("Template", "") + "/") + routeTemplate;

            if (IsUserScopedApi(controllerType))
            {
                return(fullRoute.Substring("v1/user/{userId}/".Length));
            }
            return(fullRoute.Substring("v1/".Length));
        }
Exemplo n.º 6
0
        public static TAttribute GetAttribute <TAttribute>(this IAttributeProvider source)
            where TAttribute : Attribute
        {
            var attributes = source.GetAttributes(typeof(TAttribute), true);

            if (!attributes.Any())
            {
                return(null);
            }

            return((TAttribute)attributes.FirstOrDefault());
        }
Exemplo n.º 7
0
        private static Attribute GetAttributeByName(IAttributeProvider attributeProvider, string name)
        {
            if (attributeProvider != null)
            {
                IList <Attribute> attributes = attributeProvider.GetAttributes(true);
                foreach (Attribute attribute in attributes)
                {
                    if (string.Equals(attribute.GetType().FullName, name, StringComparison.Ordinal))
                    {
                        return(attribute);
                    }
                }
            }

            return(null);
        }
        private static Attribute GetAttributeByName(IAttributeProvider attributeProvider, string name, out Type matchingType)
        {
            if (attributeProvider != null)
            {
                IList <Attribute> attributes = attributeProvider.GetAttributes(true);
                foreach (Attribute attribute in attributes)
                {
                    if (IsMatchingAttribute(attribute.GetType(), name, out matchingType))
                    {
                        return(attribute);
                    }
                }
            }

            matchingType = null;
            return(null);
        }
Exemplo n.º 9
0
        /// <summary>
        /// Get all attributes, attributes returned by extraAttributes factory will have more priority than
        /// </summary>
        /// <param name="methodInfo"></param>
        /// <param name="invocationContext"></param>
        /// <returns></returns>
        public IEnumerable <Attribute> GetAttributes(MethodInfo methodInfo, IDictionary <string, object> invocationContext)
        {
            var attributes = _extraAttributes()
                             .Where(x => x.Item1 == null || x.Item1 == methodInfo)
                             .Select(x => x.Item2)
                             .ToList();

            var uniqueTypes = attributes
                              .Select(a => a.GetType())
                              .Where(type => type.GetCustomAttributes <AttributeUsageAttribute>().Any(x => x.AllowMultiple == false))
                              .ToList();

            var originalAttributes = _original.GetAttributes(methodInfo, invocationContext)
                                     .Where(a => uniqueTypes.All(t => t != a.GetType()));

            return(originalAttributes.Union(attributes));
        }
 public static IAttributeInfo[] GetAttributes(this IAttributeProvider attributeProvider, ITypeInfo attributeType)
 {
     return(attributeProvider.GetAttributes(true).Where(x => x.AttributeType.Equals(attributeType)).ToArray());
 }
        private static IEnumerable <KeyValuePair <string, object> > GetMetadataExtensions(IAttributeProvider attributeProvider)
        {
            var attribute = attributeProvider.GetAttributes(typeof(MetadataAttribute), false).SingleOrDefault() as MetadataAttribute;

            return(attribute.GetSwaggerExtensions());
        }
Exemplo n.º 12
0
        private static byte?GetNullableContextFlag(IAttributeProvider?attributeProvider)
        {
            var nullableAttribute = attributeProvider?.GetAttributes(true).SingleOrDefault(a => a.AttributeType.Name == AnnotationsNames.NullableContext);

            return((byte?)nullableAttribute?.AttributeData["Flag"]);
        }
Exemplo n.º 13
0
        private static byte[]? GetNullableFlagsInternal(IAttributeProvider?attributeProvider)
        {
            var nullableAttribute = attributeProvider?.GetAttributes(true).SingleOrDefault(a => a.AttributeType.Name == AnnotationsNames.Nullable);

            return(nullableAttribute?.AttributeData["NullableFlags"] as byte[]);
        }
 public static NullabilityInfo FromRoslyn(IAttributeProvider memberInfo)
 {
     return(new NullabilityInfo(null, null, memberInfo.GetAttributes(true)));
 }
 public static bool IsNameDefined(this IAttributeProvider attributeProvider, string name)
 {
     return(attributeProvider.GetAttributes(true).Any(x => x.AttributeType.Name == name));
 }
Exemplo n.º 16
0
 private bool CheckAttribute(IAttributeProvider provider)
 {
     return(provider.GetAttributes(typeof(JsonIgnoreSerializeAttribute), true).Count == 0);
 }
Exemplo n.º 17
0
 public static bool HasAttribute <TAttribute>(this IAttributeProvider source)
     where TAttribute : Attribute
 {
     return(source.GetAttributes(typeof(TAttribute), true).Count > 0);
 }