Skip to content

Commit 7deecdc

Browse files
[csharp] Add a server generator for FastEndpoints (#19690)
* Add of a first working generator for FastEndpoints framework Generator that support the basics of a FastEndpoints project https://fast-endpoints.com/ * Add respose code documentation support * Add an option to enable use of problem details * Clean enum and model * Add an option to generate record for requests/models * Update sample * Add support of nullable types * Add option to enable authentication * Add option to generate validators * Clean readme.md file * Add option to enable response caching * update readme template * Add missing files references * Update generated sample * Add link to documentation * Add generator documentation * correctly support packageName supportingFiles additions moved to processOpts() * improve useAuthentication option handling Avoid to copy an empty file * processOpts, move call to parent at the end * Update generated sample * Refactor and fix super.processOpts(); call order * Handle the case of multi-line description * Rename field to match naming conventions * Add useApiVersioning option * Update generated sample * Add generator documentation * Fix record when model contains optional properties * Add configuration files for each option * Add sample project for each configuration * Add GitHub Action workflow for sample projects * Add FastEndpoints BindFrom attribute on path, query and form params * Update sample generated projects * Fix validator template * fix alphabetical order * Use fully qualified name for FastEndpoints * Add options to set GUID to be used in sln file * update sample projects * Update generators.md * Fix path in github workflow * Put readme, gitignore and solution file at the root of generated project * update sample projects * Remove the projectGuid option This Guid need to be constant, it is related to project type * update sample projects
1 parent e2553a4 commit 7deecdc

File tree

196 files changed

+14406
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

196 files changed

+14406
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Samples C# .Net 8 FastEndpoints Server
2+
3+
on:
4+
push:
5+
paths:
6+
- samples/server/petstore/aspnet/fastendpoints/**
7+
- samples/server/petstore/aspnet/fastendpoints-*/**
8+
pull_request:
9+
paths:
10+
- samples/server/petstore/aspnet/fastendpoints/**
11+
- samples/server/petstore/aspnet/fastendpoints-*/**
12+
jobs:
13+
build:
14+
name: Build .Net 8 FastEndpoints servers
15+
runs-on: ubuntu-latest
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
sample:
20+
- samples/server/petstore/aspnet/fastendpoints
21+
- samples/server/petstore/aspnet/fastendpoints-useApiVersioning
22+
- samples/server/petstore/aspnet/fastendpoints-useAuthentication
23+
- samples/server/petstore/aspnet/fastendpoints-useProblemDetails
24+
- samples/server/petstore/aspnet/fastendpoints-useRecords
25+
- samples/server/petstore/aspnet/fastendpoints-useResponseCaching
26+
- samples/server/petstore/aspnet/fastendpoints-useValidators
27+
steps:
28+
- uses: actions/checkout@v4
29+
- uses: actions/setup-dotnet@v4.0.1
30+
with:
31+
dotnet-version: '8.0.x'
32+
- name: Build
33+
working-directory: ${{ matrix.sample }}
34+
run: dotnet build Org.OpenAPITools.sln
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
generatorName: aspnet-fastendpoints
2+
outputDir: samples/server/petstore/aspnet/fastendpoints-useApiVersioning
3+
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
4+
templateDir: modules/openapi-generator/src/main/resources/aspnet-fastendpoints
5+
additionalProperties:
6+
hideGenerationTimestamp: "true"
7+
useProblemDetails: "false"
8+
useRecords: "false"
9+
useAuthentication: "false"
10+
useValidators: "false"
11+
useResponseCaching: "false"
12+
useApiVersioning: "true"
13+
routePrefix: "api"
14+
versionPrefix: "v"
15+
solutionGuid: "{1EC59EB0-DA5B-40C0-8E49-A3E0829DBBFC}"
16+
projectConfigurationGuid: "{9685C490-9B77-4EE2-BE4D-811F52665E8F}"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
generatorName: aspnet-fastendpoints
2+
outputDir: samples/server/petstore/aspnet/fastendpoints-useAuthentication
3+
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
4+
templateDir: modules/openapi-generator/src/main/resources/aspnet-fastendpoints
5+
additionalProperties:
6+
hideGenerationTimestamp: "true"
7+
useProblemDetails: "false"
8+
useRecords: "false"
9+
useAuthentication: "true"
10+
useValidators: "false"
11+
useResponseCaching: "false"
12+
useApiVersioning: "false"
13+
routePrefix: "api"
14+
versionPrefix: "v"
15+
solutionGuid: "{10D45F9B-F270-480C-9DA9-720AA62526A4}"
16+
projectConfigurationGuid: "{3FA19D58-AE7C-45E5-B00E-7482026D1816}"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
generatorName: aspnet-fastendpoints
2+
outputDir: samples/server/petstore/aspnet/fastendpoints-useProblemDetails
3+
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
4+
templateDir: modules/openapi-generator/src/main/resources/aspnet-fastendpoints
5+
additionalProperties:
6+
hideGenerationTimestamp: "true"
7+
useProblemDetails: "true"
8+
useRecords: "false"
9+
useAuthentication: "false"
10+
useValidators: "false"
11+
useResponseCaching: "false"
12+
useApiVersioning: "false"
13+
routePrefix: "api"
14+
versionPrefix: "v"
15+
solutionGuid: "{EA9B735E-72CA-44C4-BB28-358BDECE60C8}"
16+
projectConfigurationGuid: "{74D68BAC-36F5-43FC-BE9A-F3E660EECF5D}"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
generatorName: aspnet-fastendpoints
2+
outputDir: samples/server/petstore/aspnet/fastendpoints-useRecords
3+
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
4+
templateDir: modules/openapi-generator/src/main/resources/aspnet-fastendpoints
5+
additionalProperties:
6+
hideGenerationTimestamp: "true"
7+
useProblemDetails: "false"
8+
useRecords: "true"
9+
useAuthentication: "false"
10+
useValidators: "false"
11+
useResponseCaching: "false"
12+
useApiVersioning: "false"
13+
routePrefix: "api"
14+
versionPrefix: "v"
15+
solutionGuid: "{C5D2BEB0-AB74-433F-BC14-DA66CAC82C10}"
16+
projectConfigurationGuid: "{D465FD3B-3146-4661-BB50-522608AA3967}"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
generatorName: aspnet-fastendpoints
2+
outputDir: samples/server/petstore/aspnet/fastendpoints-useResponseCaching
3+
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
4+
templateDir: modules/openapi-generator/src/main/resources/aspnet-fastendpoints
5+
additionalProperties:
6+
hideGenerationTimestamp: "true"
7+
useProblemDetails: "false"
8+
useRecords: "false"
9+
useAuthentication: "false"
10+
useValidators: "false"
11+
useResponseCaching: "true"
12+
useApiVersioning: "false"
13+
routePrefix: "api"
14+
versionPrefix: "v"
15+
solutionGuid: "{BC56C2A3-ACC5-4ED0-AD8F-CD1831B8A467}"
16+
projectConfigurationGuid: "{5D19ACAB-8830-47FD-BAFA-C0985DF9F5F3}"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
generatorName: aspnet-fastendpoints
2+
outputDir: samples/server/petstore/aspnet/fastendpoints-useValidators
3+
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
4+
templateDir: modules/openapi-generator/src/main/resources/aspnet-fastendpoints
5+
additionalProperties:
6+
hideGenerationTimestamp: "true"
7+
useProblemDetails: "false"
8+
useRecords: "false"
9+
useAuthentication: "false"
10+
useValidators: "true"
11+
useResponseCaching: "false"
12+
useApiVersioning: "false"
13+
routePrefix: "api"
14+
versionPrefix: "v"
15+
solutionGuid: "{C7818EE1-09E2-4349-9696-8B1A9119974A}"
16+
projectConfigurationGuid: "{39B801D8-74AA-465D-A637-4A2FFB905378}"

bin/configs/aspnet-fastendpoints.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
generatorName: aspnet-fastendpoints
2+
outputDir: samples/server/petstore/aspnet/fastendpoints
3+
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
4+
templateDir: modules/openapi-generator/src/main/resources/aspnet-fastendpoints
5+
additionalProperties:
6+
hideGenerationTimestamp: "true"
7+
useProblemDetails: "false"
8+
useRecords: "false"
9+
useAuthentication: "false"
10+
useValidators: "false"
11+
useResponseCaching: "false"
12+
useApiVersioning: "false"
13+
routePrefix: "api"
14+
versionPrefix: "v"
15+
solutionGuid: "{4BC03566-F5F9-4E45-A835-8FA3B2B524B9}"
16+
projectConfigurationGuid: "{5F32A09C-5CB7-4917-83AB-CD7D1A04FF49}"

docs/generators.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ The following generators are available:
8484

8585
## SERVER generators
8686
* [ada-server](generators/ada-server.md)
87+
* [aspnet-fastendpoints](generators/aspnet-fastendpoints.md)
8788
* [aspnetcore](generators/aspnetcore.md)
8889
* [cpp-pistache-server](generators/cpp-pistache-server.md)
8990
* [cpp-qt-qhttpengine-server](generators/cpp-qt-qhttpengine-server.md)

0 commit comments

Comments
 (0)