Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/centeredge/yardarm
OpenAPI 3 SDK Generator for C#
https://github.com/centeredge/yardarm
csharp hacktoberfest openapi
Last synced: 9 days ago
JSON representation
OpenAPI 3 SDK Generator for C#
- Host: GitHub
- URL: https://github.com/centeredge/yardarm
- Owner: CenterEdge
- License: apache-2.0
- Created: 2020-07-30T03:44:35.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-04-28T13:24:41.000Z (7 months ago)
- Last Synced: 2024-04-28T22:27:22.257Z (7 months ago)
- Topics: csharp, hacktoberfest, openapi
- Language: C#
- Homepage:
- Size: 1.22 MB
- Stars: 44
- Watchers: 6
- Forks: 6
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Yardarm
![Build](https://github.com/CenterEdge/Yardarm/workflows/Build/badge.svg?branch=main&event=push)
[![NuGet](https://img.shields.io/nuget/dt/Yardarm?label=NuGet&logo=NuGet)](https://www.nuget.org/packages/Yardarm)
[![Join the chat at https://gitter.im/CenterEdgeYardarm/community](https://badges.gitter.im/CenterEdgeYardarm/community.svg)](https://gitter.im/CenterEdgeYardarm/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)Yardarm is an OpenAPI 3 SDK Generator for C#. It provides various tools that will generate an SDK for a valid OpenAPI specification.
## Project Goals
- Present a .NET SDK that uses modern .NET/C# paradigms
- High performance, both for generating SDKs and SDK consumers
- Highly extensible
- Mitigate backward compatibility issues as new SDKs are generated from new versions of an OpenAPI specification## Features
- Works with valid OpenAPI 3 specs, in JSON or YAML format
- Many generation options
- Command Line Application
- Docker Image
- In-code via library
- .NET Global Tool
- MSBuild SDK
- Generates a SDK using modern C# patterns and practices as follows:
- Asynchronous methods with cancellation tokens
- Nullable reference types
- Polymorphism
- Interfaces with concrete implementations
- XML documentation for IntelliSense
- Portable PDBs with embedded source code
- Fast SDK generation
- Doesn't make C# files on disk and run MSBuild
- Uses Roslyn to directly generate AST and compile in memory
- Built-in NuGet support
- Generate valid `.nupkg` files directly, with correct dependencies
- Target multiple framework versions in one package automatically
- Automatically restore packages required for compilation
- Highly extensible SDK generation
- Built around plugable extensions that add additional features or modify the C# code used for compilation
- Includes out-of-the-box plugins for common scenarios
- `Newtonsoft.Json` serialization/deserialization
- `System.Text.Json` serialization/deserialization
- `Microsoft.Extensions.Http` for dependency injection
- Highly extensible SDK
- Will allow the SDK consumer to extend the behaviors on the client side
- Pluggable configuration for things like TLS and base urls
- Add `HttpMessageHandler` instances to the `HttpClient` stack
- Mockable API interfaces for unit testing## Consuming Yardarm SDKs
See [the detailed documentation](./docs/consuming) on consuming SDKs generated by Yardarm.
## Generating Yardarm SDKs
See [the detailed documentation](./docs/generating) on generating SDKs using Yardarm.
## Contributing
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.
## Authors
- **Brant Burnett** - *Initial work* - [BrantBurnett](https://github.com/brantburnett)
See also the list of [contributors](https://github.com/CenterEdge/Yardarm/graphs/contributors) who participated in this project.
## License
This project is licensed under the Apache 2.0 License - see the [LICENSE.md](LICENSE.md) file for details