PR checklist
-
Read the contribution guidelines. -
Ran the shell script under ./bin/
to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.sh
and./bin/security/{LANG}-petstore.sh
if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in.\bin\windows\
. -
Filed the PR against the correct branch: master
,4.0.x
. Default:master
. -
Copied the technical committee to review the pull request if your PR is targeting a particular programming language.
Description of the PR
A refactoring proof of concept for the C# client.
This puts a client abstraction on top of RestSharp, such that consumers can provide a custom implementation. This is useful for SDK creators who would rather use HttpClient, or consumers who would rather construct APIs with their own solution (e.g. in-house api accessors with tracing and logging applied).
This PR includes only template changes, as generating working C# clients is currently broken on master due to a regression in enum processing (see gist).
I'm opening this for feedback.
To evaluate:
cd samples/client/petstore/csharp-refactor/OpenAPIClient
sh build.sh
csharp -r:bin/Org.OpenAPITools.dll -r:bin/Newtonsoft.Json.dll -r:bin/RestSharp.dll
csharp> using Org.OpenAPITools.Api;
csharp> var api = new PetApi("http://petstore.swagger.io/v2")
csharp> api.GetPetById(2)
class Pet {
Id: 2
Category: class Category {
Id: 1
Name: feline
}
Name: catty
PhotoUrls: System.Collections.Generic.List`1[System.String]
Tags: System.Collections.Generic.List`1[Org.OpenAPITools.Model.Tag]
Status: Available
}