From 05da0f26cf6cabc57bb58ad561dcacfb32bc326b Mon Sep 17 00:00:00 2001 From: Collin Barrett Date: Wed, 12 Jun 2024 17:27:35 -0500 Subject: [PATCH] =?UTF-8?q?refactor(web):=20=E2=99=BB=EF=B8=8F=20change=20?= =?UTF-8?q?directory=20api=20url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/directory.yml | 4 ++-- .github/workflows/web.yml | 2 +- .../OpenApi/OpenApiConfigurationExtension.cs | 10 ++++++++++ .../Directory/FilterLists.Directory.Api/Program.cs | 8 ++++++-- web/src/App.tsx | 2 +- web/src/hooks/useLanguages.tsx | 2 +- web/src/hooks/useLicenses.tsx | 2 +- web/src/hooks/useListDetails.tsx | 2 +- web/src/hooks/useLists.tsx | 2 +- web/src/hooks/useMaintainers.tsx | 6 +++--- web/src/hooks/useSoftware.tsx | 2 +- web/src/hooks/useSyntaxes.tsx | 2 +- web/src/hooks/useTags.tsx | 4 ++-- web/src/setupProxy.js | 2 +- 14 files changed, 32 insertions(+), 18 deletions(-) diff --git a/.github/workflows/directory.yml b/.github/workflows/directory.yml index 05261a591..da6cb8487 100644 --- a/.github/workflows/directory.yml +++ b/.github/workflows/directory.yml @@ -89,8 +89,8 @@ jobs: AZURE_WEBAPP_NAME: app-filterlists-directory-prod environment: - name: production - url: https://api.filterlists.com/swagger/index.html + name: production-directory-api + url: https://api.filterlists.com steps: - name: Deploy to Azure diff --git a/.github/workflows/web.yml b/.github/workflows/web.yml index fbc035f24..ee4c4df40 100644 --- a/.github/workflows/web.yml +++ b/.github/workflows/web.yml @@ -26,7 +26,7 @@ jobs: if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') environment: - name: production + name: production-web url: https://aspire.filterlists.com # TODO: change to root when merging aspire to main steps: diff --git a/services/Directory/FilterLists.Directory.Api/OpenApi/OpenApiConfigurationExtension.cs b/services/Directory/FilterLists.Directory.Api/OpenApi/OpenApiConfigurationExtension.cs index c9e88da95..9b50da126 100644 --- a/services/Directory/FilterLists.Directory.Api/OpenApi/OpenApiConfigurationExtension.cs +++ b/services/Directory/FilterLists.Directory.Api/OpenApi/OpenApiConfigurationExtension.cs @@ -38,4 +38,14 @@ internal static void AddOpenApiGen(this IServiceCollection services) options.CustomSchemaIds(s => s.FullName?.Replace("+", ".")); }); } + + internal static void UseSwaggerCustom(this IApplicationBuilder app) + { + app.UseSwagger(); + app.UseSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/v1/swagger.json", "FilterLists Directory API v1"); + options.RoutePrefix = string.Empty; + }); + } } \ No newline at end of file diff --git a/services/Directory/FilterLists.Directory.Api/Program.cs b/services/Directory/FilterLists.Directory.Api/Program.cs index 4ed65eb4b..0f7bbdb00 100644 --- a/services/Directory/FilterLists.Directory.Api/Program.cs +++ b/services/Directory/FilterLists.Directory.Api/Program.cs @@ -4,6 +4,10 @@ var builder = WebApplication.CreateBuilder(args); +builder.Services.AddCors(options => options.AddDefaultPolicy(policy => + policy.WithOrigins("https://filterlists.com", "https://aspire.filterlists.com") // TODO: rm 'aspire.' when merging aspire to main + .WithMethods("GET") + .AllowAnyHeader())); builder.WebHost.ConfigureKestrel(serverOptions => serverOptions.AddServerHeader = false); builder.AddServiceDefaults(); builder.Services.AddProblemDetails(); @@ -13,9 +17,9 @@ var app = builder.Build(); app.UseExceptionHandler(); +app.UseCors(); app.MapEndpoints(); app.MapDefaultEndpoints(); -app.UseSwagger(); -app.UseSwaggerUI(); +app.UseSwaggerCustom(); app.Run(); \ No newline at end of file diff --git a/web/src/App.tsx b/web/src/App.tsx index e75b9eea1..0941a61dd 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -115,7 +115,7 @@ const GitHub = () => ( const Api = () => ( - (useApiData("/api/directory/languages") || []).sort( + (useApiData("https://api.filterlists.com/languages") || []).sort( (a: Language, b: Language) => a.name.localeCompare(b.name) ); diff --git a/web/src/hooks/useLicenses.tsx b/web/src/hooks/useLicenses.tsx index f1b73055b..d6e94896e 100644 --- a/web/src/hooks/useLicenses.tsx +++ b/web/src/hooks/useLicenses.tsx @@ -2,6 +2,6 @@ import { License } from "../interfaces/License"; import { useApiData } from "./useApiData"; export const useLicenses = () => - (useApiData("/api/directory/licenses") || []).sort( + (useApiData("https://api.filterlists.com/licenses") || []).sort( (a: License, b: License) => a.name.localeCompare(b.name) ); diff --git a/web/src/hooks/useListDetails.tsx b/web/src/hooks/useListDetails.tsx index 26be8cd14..83ae330a1 100644 --- a/web/src/hooks/useListDetails.tsx +++ b/web/src/hooks/useListDetails.tsx @@ -2,5 +2,5 @@ import { ListDetails } from "../interfaces/ListDetails"; import { useApiData } from "./useApiData"; export const useListDetails = (id: number) => { - return useApiData("/api/directory/lists/" + id); + return useApiData("https://api.filterlists.com/lists/" + id); }; diff --git a/web/src/hooks/useLists.tsx b/web/src/hooks/useLists.tsx index 77abbe2b1..180501bed 100644 --- a/web/src/hooks/useLists.tsx +++ b/web/src/hooks/useLists.tsx @@ -4,7 +4,7 @@ import { List } from "../interfaces/List"; import { useApiData } from "./useApiData"; export const useLists = () => { - const lists = useApiData("/api/directory/lists"); + const lists = useApiData("https://api.filterlists.com/lists"); lists && lists.forEach((l) => (l.slug = slugify(l.name, SlugifyOptions))); return (lists || []).sort((a: List, b: List) => a.name.localeCompare(b.name)); }; diff --git a/web/src/hooks/useMaintainers.tsx b/web/src/hooks/useMaintainers.tsx index ed3799e52..0213d7d62 100644 --- a/web/src/hooks/useMaintainers.tsx +++ b/web/src/hooks/useMaintainers.tsx @@ -2,6 +2,6 @@ import { Maintainer } from "../interfaces/Maintainer"; import { useApiData } from "./useApiData"; export const useMaintainers = () => - (useApiData("/api/directory/maintainers") || []).sort( - (a: Maintainer, b: Maintainer) => a.name.localeCompare(b.name) - ); + ( + useApiData("https://api.filterlists.com/maintainers") || [] + ).sort((a: Maintainer, b: Maintainer) => a.name.localeCompare(b.name)); diff --git a/web/src/hooks/useSoftware.tsx b/web/src/hooks/useSoftware.tsx index deeec3fcb..bcc6db8c1 100644 --- a/web/src/hooks/useSoftware.tsx +++ b/web/src/hooks/useSoftware.tsx @@ -2,6 +2,6 @@ import { Software } from "../interfaces/Software"; import { useApiData } from "./useApiData"; export const useSoftware = () => - (useApiData("/api/directory/software") || []).sort( + (useApiData("https://api.filterlists.com/software") || []).sort( (a: Software, b: Software) => a.name.localeCompare(b.name) ); diff --git a/web/src/hooks/useSyntaxes.tsx b/web/src/hooks/useSyntaxes.tsx index 5cea7a25d..14932be33 100644 --- a/web/src/hooks/useSyntaxes.tsx +++ b/web/src/hooks/useSyntaxes.tsx @@ -2,6 +2,6 @@ import { Syntax } from "../interfaces/Syntax"; import { useApiData } from "./useApiData"; export const useSyntaxes = () => - (useApiData("/api/directory/syntaxes") || []).sort( + (useApiData("https://api.filterlists.com/syntaxes") || []).sort( (a: Syntax, b: Syntax) => a.name.localeCompare(b.name) ); diff --git a/web/src/hooks/useTags.tsx b/web/src/hooks/useTags.tsx index 301d85ead..63691716a 100644 --- a/web/src/hooks/useTags.tsx +++ b/web/src/hooks/useTags.tsx @@ -2,6 +2,6 @@ import { Tag } from "../interfaces/Tag"; import { useApiData } from "./useApiData"; export const useTags = () => - (useApiData("/api/directory/tags") || []).sort((a: Tag, b: Tag) => - a.name.localeCompare(b.name) + (useApiData("https://api.filterlists.com/tags") || []).sort( + (a: Tag, b: Tag) => a.name.localeCompare(b.name) ); diff --git a/web/src/setupProxy.js b/web/src/setupProxy.js index e75a3531a..f96417080 100644 --- a/web/src/setupProxy.js +++ b/web/src/setupProxy.js @@ -2,7 +2,7 @@ const { createProxyMiddleware } = require("http-proxy-middleware"); module.exports = function (app) { app.use( - "/api", + "https://api.filterlists.com", createProxyMiddleware({ target: "http://localhost:8080", changeOrigin: true,