Exemple #1
0
        /// <summary>
        /// get a ApiDescriptionGroup from your dependency injection and use it to query all used types
        /// </summary>
        /// <param name="apiDescription"></param>
        /// <param name="mediaTypesToCheck"></param>
        /// <returns></returns>
        public DistinctTypeList GetUsedContractTypes(ApiDescriptionGroup apiDescription, string?mediaTypesToCheck = null)
        {
            var apiDescriptions = apiDescription.Items
                                  .Where(w => w is not null)
            ;
            var usedTypes = new DistinctTypeList();

            foreach (var description in apiDescriptions !)
            {
                var bodyParameter = description.ParameterDescriptions.Where(IsBodyParameter);
                usedTypes.AddRange(bodyParameter.Select(s => s.Type));
                //TODO option to check for default Asp.net classes
                var responseParameter = description.SupportedResponseTypes.Where(w => w.Type != null && IsCorrectMediaType(mediaTypesToCheck, w));
                usedTypes.AddRange(responseParameter.Select(s => s.Type));
            }

            return(usedTypes);
        }
Exemple #2
0
        /// <summary>
        /// get a IApiDescriptionGroupCollectionProvider from your dependency injection and use it to query all used types
        /// </summary>
        /// <param name="apiDescription"></param>
        /// <param name="mediaTypesToCheck"></param>
        /// <returns></returns>
        public DistinctTypeList GetUsedContractTypes(IApiDescriptionGroupCollectionProvider apiDescription, string?mediaTypesToCheck = null)
        {
            var apiDescriptions = apiDescription.ApiDescriptionGroups?.Items;
            var usedTypes       = new DistinctTypeList();

            foreach (var description in apiDescriptions !)
            {
                usedTypes.AddRange(GetUsedContractTypes(description, mediaTypesToCheck));
            }

            return(usedTypes);
        }