Closed andreygolubkow closed 5 months ago
As a backend developer I want to update VK API client using json-schema So that I don't have to write/rewrite C# classes
TaktTusur.Media.Clients.VkApi.csproj
GroupInfoResponse
Models
Requests
WallByIdResponse
IVkApiClient.cs
VkApiClient.cs
VkSchema
schema.json
errors.json
Groups
Wall
methods.json
objects.json
responses.json
*.generated.cs
wall.generated.cs
Possible solution, adaptation needed
Add to TaktTusur.Media.Clients.VkApi.csproj
<ItemGroup> <PackageReference Include="NJsonSchema" Version="10.6.6" /> </ItemGroup>
Create console app TaktTusur.Media.Clients.VkApi.Generator.csproj
TaktTusur.Media.Clients.VkApi.Generator.csproj
static void Main(string[] args) { var directoryPath = "path_to_your_json_schemas"; var outputPath = "path_where_you_want_to_place_generated_classes"; foreach (var filePath in Directory.GetFiles(directoryPath, "*.json")) { var document = JsonSchema.FromFileAsync(filePath).Result; var generator = new CSharpGenerator(document); var file = generator.GenerateFile(); var outputFilePath = Path.Combine(outputPath, Path.GetFileNameWithoutExtension(filePath) + ".cs"); File.WriteAllText(outputFilePath, file); } }
<Target Name="GenerateFromJsonSchema" BeforeTargets="Build"> <MSBuild Projects="path_to_Generator_csproj\Generator.csproj" Targets="Build" /> </Target>
Cannot be implemented, because of we don't have tools to generate classes from vk schema
Support VK API classes generation using json-schema
As a backend developer I want to update VK API client using json-schema So that I don't have to write/rewrite C# classes
Acceptance criteria
Project structure
TaktTusur.Media.Clients.VkApi.csproj
has new folders/files:GroupInfoResponse
,Models
,Requests
,WallByIdResponse
,IVkApiClient.cs
,VkApiClient.cs
VkSchema
VkSchema
contains files from vk-api-schema :schema.json
errors.json
Groups
directory andWall
directory with:methods.json
objects.json
responses.json
Build actions
TaktTusur.Media.Clients.VkApi.csproj
,VkSchema
directory gets C# classes with generated code based on json-schema*.generated.cs
wall.generated.cs
Technical details
Possible solution, adaptation needed
Add to
TaktTusur.Media.Clients.VkApi.csproj
Create console app
TaktTusur.Media.Clients.VkApi.Generator.csproj
Add to
TaktTusur.Media.Clients.VkApi.csproj