Skip to content

Commit 8d12db4

Browse files
committed
fixes and changes
1 parent aa021a7 commit 8d12db4

File tree

14 files changed

+109
-25
lines changed

14 files changed

+109
-25
lines changed

sample/ApiGeneratorSampleApp/ApiGeneratorSampleApI.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
<PrivateAssets>all</PrivateAssets>
3838
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3939
</PackageReference>
40+
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="6.3.1" />
4041
</ItemGroup>
4142

4243
<ItemGroup>

sample/ApiGeneratorSampleApp/Program.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@
1111
builder.Services.AddApiGeneratorIdentity(builder.Configuration);
1212

1313
builder.Services.AddApiGeneratorServices()
14-
.AddAssemblyWithOdata(Assembly.GetExecutingAssembly())
14+
//.AddAssemblyWithOData(Assembly.GetExecutingAssembly())
15+
.AddAssemblyWithODataFromUri("https://raw.githubusercontent.com/DeeJayTC/net-dynamic-api/main/sample/SampleAppJson/ApiDefinition.json","")
1516
//.AddAssembly(Assembly.GetExecutingAssembly())
1617
.AddDataContextSQL()
1718
.AddOData()
18-
.AddSwagger();
19+
.AddSwagger(true);
1920

2021

2122
var app = builder.Build();

sample/SampleAppNuget/Program.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using TCDev.APIGenerator;
44
using TCDev.APIGenerator.Extension;
55
using TCDev.APIGenerator.Identity;
6+
using TCDev.APIGenerator.Services;
67

78
var builder = WebApplication.CreateBuilder(args);
89

@@ -24,16 +25,15 @@
2425
EnableAutomaticMigration = true
2526
}
2627
})
27-
.AddAssembly(Assembly.GetExecutingAssembly())
28+
29+
.AddAssemblyWithOdata(Assembly.GetExecutingAssembly())
2830
.AddDataContextSQL()
2931
.AddOData()
3032
.AddSwagger();
3133

3234

3335
var app = builder.Build();
3436

35-
app.UseApiGenerator();
36-
app.UseAutomaticApiMigrations(true);
3737

3838
// Configure the HTTP request pipeline.
3939

sample/SampleAppNuget/SampleAppNuget.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
<PrivateAssets>all</PrivateAssets>
1313
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1414
</PackageReference>
15-
<PackageReference Include="TCDev.APIGenerator.Data.SQL" Version="0.5.0-WDWC-DEMO" />
16-
<PackageReference Include="TCDev.APIGenerator.OData" Version="0.5.0-WDWC-DEMO" />
15+
<PackageReference Include="TCDev.APIGenerator.Data.SQL" Version="0.6.0-RC1" />
16+
<PackageReference Include="TCDev.APIGenerator.OData" Version="0.6.0-RC1" />
1717
</ItemGroup>
1818

1919
</Project>

src/TCDev.APIGenerator.Data.Postgres/TCDev.APIGenerator.Data.Postgres.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
55
<PackageId>TCDev.APIGenerator.Data.Postgres</PackageId>
6-
<Version>0.6.0-44ffa</Version>
6+
<Version>0.6.0</Version>
7+
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
78
<Authors>Tim Cadenbach</Authors>
89
<Company>Rasepi</Company>
910
<Description>Adds necessary functionality to use Postgres databases with the API Generator. Rasepi greates fully working CRUD Apis from just models</Description>

src/TCDev.APIGenerator.Data.SQL/TCDev.APIGenerator.Data.SQL.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
55
<PackageId>TCDev.APIGenerator.Data.SQL</PackageId>
6-
<Version>0.6.0-44ffa</Version>
6+
<Version>0.6.0</Version>
77
<Authors>Tim Cadenbach</Authors>
88
<Company>TCDev</Company>
99
<Description>Adds necessary functionality to use MS SQL Server and Azure SQL Instances with the API Generator. </Description>

src/TCDev.APIGenerator.Data.SQLite/TCDev.APIGenerator.Data.SQLite.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
55
<PackageId>TCDev.APIGenerator.Data.SQLite</PackageId>
6-
<Version>0.6.0-44ffa</Version>
6+
<Version>0.6.0</Version>
77
<Authors>Tim Cadenbach</Authors>
88
<Company>Rasepi</Company>
99
<Description>Adds necessary functionality to use SQLLite with the API Generator. Rasepi greates fully working CRUD Apis from just models</Description>

src/TCDev.APIGenerator.Data/TCDev.APIGenerator.Data.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<TargetFramework>net6.0</TargetFramework>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
7-
<Version>0.6.0-44ffa</Version>
7+
<Version>0.6.0</Version>
88
<PackageProjectUrl>https://www.rasepi.com</PackageProjectUrl>
99
<PackageIcon>logo_small.png</PackageIcon>
1010
<PackageReadmeFile>README.md</PackageReadmeFile>

src/TCDev.APIGenerator.OData/Services/ServiceExtensions.cs

Lines changed: 83 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace TCDev.APIGenerator.Services
1212
{
1313
public static class ServiceExtensions
1414
{
15-
public static ApiGeneratorServiceBuilder AddAssemblyWithOdata(this ApiGeneratorServiceBuilder builder, Assembly assembly)
15+
public static ApiGeneratorServiceBuilder AddAssemblyWithOData(this ApiGeneratorServiceBuilder builder, Assembly assembly)
1616
{
1717

1818
if (builder.AssemblyService == null)
@@ -42,10 +42,10 @@ public static ApiGeneratorServiceBuilder AddAssemblyWithOdata(this ApiGeneratorS
4242
}
4343

4444

45-
public static ApiGeneratorServiceBuilder AddAssemblyWithOData(this ApiGeneratorServiceBuilder builder, string apiDefinitionFile)
45+
public static ApiGeneratorServiceBuilder AddAssemblyWithODataFromFile(this ApiGeneratorServiceBuilder builder, string apiDefinitionFile)
4646
{
4747

48-
if (builder.AssemblyService != null)
48+
if (builder.AssemblyService == null)
4949
{
5050
builder.AssemblyService = new AssemblyService();
5151
builder.Services.AddSingleton(builder.AssemblyService);
@@ -77,5 +77,85 @@ public static ApiGeneratorServiceBuilder AddAssemblyWithOData(this ApiGeneratorS
7777
return builder;
7878
}
7979

80+
81+
public static ApiGeneratorServiceBuilder AddAssemblyWithODataFromUri(this ApiGeneratorServiceBuilder builder, string apiDefinitionSource, string token)
82+
{
83+
84+
if (builder.AssemblyService == null)
85+
{
86+
builder.AssemblyService = new AssemblyService();
87+
builder.Services.AddSingleton(builder.AssemblyService);
88+
}
89+
90+
try
91+
{
92+
93+
using(var client = new HttpClient())
94+
{
95+
client.DefaultRequestHeaders.Add("Authentication", $"Bearer {token}");
96+
var jsonDef = client.GetStringAsync(apiDefinitionSource).Result; //Synchronous on purpose!
97+
98+
var jsonDefsLocal = JsonConvert.DeserializeObject<List<JsonClassDefinition>>(jsonDef);
99+
builder.AssemblyService.Types.AddRange(JsonClassService.CreateTypes(jsonDefsLocal));
100+
101+
builder.Services.AddMvc(options =>
102+
options.Conventions.Add(new GenericControllerRouteConvention()))
103+
.ConfigureApplicationPartManager(manager =>
104+
manager.FeatureProviders.Add(
105+
new GenericTypeControllerFeatureProvider(builder.AssemblyService.Types, typeof(GenericODataController<,>)
106+
)
107+
)
108+
);
109+
}
110+
111+
112+
}
113+
catch (FileNotFoundException ex)
114+
{
115+
throw new Exception($"Json Definition File could not be loaded from {apiDefinitionSource}", ex);
116+
}
117+
118+
return builder;
119+
}
120+
121+
public static ApiGeneratorServiceBuilder AddAssemblyWithODataRasepi(this ApiGeneratorServiceBuilder builder, Uri uri, string apiKey)
122+
{
123+
124+
if (builder.AssemblyService == null)
125+
{
126+
builder.AssemblyService = new AssemblyService();
127+
builder.Services.AddSingleton(builder.AssemblyService);
128+
}
129+
130+
try
131+
{
132+
using (var client = new HttpClient())
133+
{
134+
client.DefaultRequestHeaders.Add("rasepi-api-key", apiKey);
135+
//This is a blocking call, yes, on purpose!
136+
var jsonDefRaw = client.GetStringAsync(uri).Result;
137+
var jsonDefRemote = JsonConvert.DeserializeObject<List<JsonClassDefinition>>(jsonDefRaw);
138+
builder.AssemblyService.Types.AddRange(JsonClassService.CreateTypes(jsonDefRemote));
139+
}
140+
141+
builder.Services.AddMvc(options =>
142+
options.Conventions.Add(new GenericControllerRouteConvention()))
143+
.ConfigureApplicationPartManager(manager =>
144+
manager.FeatureProviders.Add(
145+
new GenericTypeControllerFeatureProvider(builder.AssemblyService.Types, typeof(GenericODataController<,>)
146+
)
147+
)
148+
);
149+
150+
151+
}
152+
catch (Exception ex)
153+
{
154+
throw new Exception($"Json Definition not found, make sure its stored in {uri}", ex);
155+
}
156+
157+
return builder;
158+
}
159+
80160
}
81161
}

src/TCDev.APIGenerator.OData/TCDev.APIGenerator.OData.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
7-
<Version>0.6.0-44ffa</Version>
7+
<Version>0.6.0</Version>
88
<Description>Adds OData Support to the API Generator</Description>
99
<PackageProjectUrl>https://www.rasepi.com</PackageProjectUrl>
1010
<PackageReadmeFile>README.md</PackageReadmeFile>

0 commit comments

Comments
 (0)