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 }); }
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}"); }