private string GetMetadataForContent(OpenApiContent content, OpenApiMetadataRequest request)
        {
            string basePath = Request.VirtualPath()
                              .EnsureSuffixApplied("/") + GetBasePath(content, request.SchoolYearFromRoute);

            return(content.Metadata
                   .Replace("%HOST%", $"{Request.Host(_useProxyHeaders)}:{Request.Port(_useProxyHeaders)}")
                   .Replace("%TOKEN_URL%", TokenUrl())
                   .Replace("%BASE_PATH%", basePath));
        }
        private string GetBasePath(OpenApiContent apiContent, int?schoolYear)
        {
            string basePath = $"{apiContent.BasePath}";

            if (schoolYear.HasValue)
            {
                basePath += $"/{schoolYear.Value}";
            }

            return(basePath);
        }
        private SwaggerSectionDetails GetSwaggerSectionDetailsForCacheItem(OpenApiContent apiContent,
                                                                           OpenApiMetadaSectionsRequest request)
        {
            // Construct fully qualified metadata url
            var url =
                new Uri(
                    new Uri(new Uri(Request.RootUrl(_useProxyHeaders).EnsureSuffixApplied("/")), "metadata/"),
                    GetMetadataUrlSegmentForCacheItem(apiContent, request.SchoolYearFromRoute));

            return(new SwaggerSectionDetails
            {
                EndpointUri = url.AbsoluteUri, Name = apiContent.Name.NormalizeCompositeTermForDisplay('-').Replace(" ", "-"), Prefix =
                    apiContent.Section.EqualsIgnoreCase(OpenApiMetadataSections.SwaggerUi)
                               ? string.Empty
                               : apiContent.Section
            });
        }
Exemple #4
0
        private string GetMetadataForContent(OpenApiContent content, HttpRequest request, int?schoolYearFromRoute, string instanceIdFromRoute)
        {
            var year = schoolYearFromRoute.HasValue
                ? schoolYearFromRoute.Value.ToString()
                : string.Empty;

            var instanceId = string.IsNullOrEmpty(instanceIdFromRoute) ? string.Empty : $"{instanceIdFromRoute}/";

            string basePath = request.PathBase.Value.EnsureSuffixApplied("/") + content.BasePath.EnsureSuffixApplied("/") + instanceId + year;

            return(content.Metadata
                   .Replace("%HOST%", Host())
                   .Replace("%TOKEN_URL%", TokenUrl())
                   .Replace("%BASE_PATH%", basePath));

            string TokenUrl() => $"{request.RootUrl(_useReverseProxyHeaders)}/{instanceId}oauth/token";

            string Host() => $"{request.Host(_useReverseProxyHeaders)}:{request.Port(_useReverseProxyHeaders)}";
        }
        private string GetMetadataUrlSegmentForCacheItem(OpenApiContent apiContent, int?schoolYear)
        {
            // 'Other' sections (Identity) do not live under 'ods' as other metadata endpoints do.
            // eg identity/v1/2017/swagger.json,
            // eg identity/v1/swagger.json,
            // SDKgen All
            // eg data/v3/2017/swagger.json,
            // eg data/v3/swagger.json,
            var basePath = GetBasePath(apiContent, schoolYear);

            // Profiles and composites endpoints have an extra url segment (profiles or composites).
            // eg data/v3/2017/profiles/assessment/swagger.json
            // eg data/v3/profiles/assessment/swagger.json
            // eg composites/v1/2017/ed-fi/swagger.json
            // eg composites/v1/ed-fi/assessment/swagger.json
            var relativeSectionUri = string.IsNullOrWhiteSpace(apiContent.RelativeSectionPath)
                ? string.Empty
                : apiContent.RelativeSectionPath.EnsureSuffixApplied("/");

            return($"{basePath}/{relativeSectionUri}{SwaggerDocumentHelper.SwaggerJson}".ToLowerInvariant());
        }
 private string GetCacheKey(OpenApiContent openApiContent)
 {
     return($"{openApiContent.Section}-{openApiContent.Name}");
 }