Open iBicha opened 6 years ago
I'm interested in making the client generator specific for unity. I was searching the internet if there is something ready. We also finally have "official" json.net ported to the unity. The idea of using scriptable objects to store configurations for each API resource/methods/whole API is also very valid. I remember doing something like this a year ago using swagger 2.0, it was very custom for my project tho. We can start with something simple, for example, supporting only OpenAPI 3.0 and, maybe, creating some universal HTTP handler based on the scriptable object configuration without actual generation of classes and structs for the data.
Is anyone working on this currently?
Not that I know of tbh, I didn't get back to swagger/OpenAPI for a while, so I couldn't contribute much.
Is anyone working on this currently?
I have this one working in Unity on all platforms.
Dope. Well, I've forked this project and hopefully, it won't take me too long to implement. Never done this before.
Edit: Opted for building my own that includes extra functionality that doesn't make sense sitting in the swagger-codegen repo (like generating scriptable objects from arbitrary definitions found in the swagger file). The code generated uses 100% unity libraries. No need to include other dependencies in your project.
hello guys, please ping when you need to merge any PR.
Description
Even though there's two generators for C# (csharp and csharp-dotnet2) both relying on RestSharp, and also both can be adapted to work with Unity, the game engine. But here's my motivation for a separate generator for Unity:
Using UnityWebRequest which is the fastest and has the lowest memory footprint across all platforms Unity supports, for any build settings. In addition, it will result in a smaller build sizes after removing (also, it automatically handles special cases and platforms, such as WebGL, where the .NET networking classes (ie, everything in the System.Net namespace, particularly System.Net.Sockets) are non-functional in WebGL.)
Using a version of
Json.NET
that is adapted for Unity (for both Mono and IL2CPP platforms)A generated code that automatically handles Scripting restrictions (for example, certain types will be stripped out in a IL2CPP build, unless they are used in the code somehwhere, or else json deserialization could fail. The generated code can be done to take this into account)
Handing async operations Unity style (using Coroutines and/or async/await methods, depending on current player and build settings, using platform dependent compilation defines)
Adding some sugar (assembly definition files, scriptable objects to store configurations, custom inspectors to make calls to codegen and regenerate the code - see picture below as an example - , and so on)
Exposing only relevant options to Unity in the generator
Removing irrelevant files (e.g. no need for build scripts or C# solution files)
Tests organised in a way to run well in Unity's test runner
Please let me know what do you think.