Adding login screen, hex grid, and location service

This commit is contained in:
hz
2026-05-18 13:45:47 -05:00
parent 9207fe36a3
commit dd151c5af1
2866 changed files with 64260 additions and 0 deletions
@@ -0,0 +1,62 @@
using LocationsApi.Models;
using LocationsApi.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;
namespace LocationsApi.Controllers;
[ApiController]
[Route("api/[controller]")]
public class LocationsController : ControllerBase
{
private readonly LocationService _locations;
public LocationsController(LocationService locations)
{
_locations = locations;
}
[HttpGet]
public async Task<ActionResult<List<LocationResponse>>> GetAll(
[FromQuery] int? minQ,
[FromQuery] int? maxQ,
[FromQuery] int? minR,
[FromQuery] int? maxR)
{
var locations = minQ.HasValue && maxQ.HasValue && minR.HasValue && maxR.HasValue
? await _locations.GetRangeAsync(minQ.Value, maxQ.Value, minR.Value, maxR.Value)
: await _locations.GetAllAsync();
return Ok(locations.Select(LocationResponse.FromLocation).ToList());
}
[HttpGet("{q:int}/{r:int}")]
public async Task<ActionResult<LocationResponse>> Get(int q, int r)
{
var location = await _locations.GetAsync(q, r);
return location is null ? NotFound() : Ok(LocationResponse.FromLocation(location));
}
[Authorize(Roles = "USER,SUPER")]
[HttpPost("claim")]
public async Task<ActionResult<LocationResponse>> Claim([FromBody] ClaimLocationRequest request)
{
var username = User.FindFirstValue(ClaimTypes.Name);
if (string.IsNullOrWhiteSpace(username))
{
return Unauthorized();
}
var location = await _locations.ClaimAsync(request.Q, request.R, username);
return Ok(LocationResponse.FromLocation(location));
}
[Authorize(Roles = "SUPER")]
[HttpPut]
public async Task<ActionResult<LocationResponse>> Upsert([FromBody] UpsertLocationRequest request)
{
var location = await _locations.UpsertAsync(request);
return Ok(LocationResponse.FromLocation(location));
}
}
+19
View File
@@ -0,0 +1,19 @@
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["LocationsApi.csproj", "./"]
RUN dotnet restore "LocationsApi.csproj"
COPY . .
RUN dotnet publish "LocationsApi.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final
WORKDIR /app
COPY --from=build /app/publish .
ENV ASPNETCORE_URLS=http://+:8080 \
ASPNETCORE_ENVIRONMENT=Production
EXPOSE 8080
ENTRYPOINT ["dotnet", "LocationsApi.dll"]
@@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.8" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.8" />
<PackageReference Include="MongoDB.Driver" Version="3.4.3" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup>
</Project>
+40
View File
@@ -0,0 +1,40 @@
namespace LocationsApi.Models;
public class UpsertLocationRequest
{
public int Q { get; set; }
public int R { get; set; }
public string Terrain { get; set; } = "Field";
public string? Label { get; set; }
public int Level { get; set; } = 1;
}
public class ClaimLocationRequest
{
public int Q { get; set; }
public int R { get; set; }
}
public class LocationResponse
{
public string Id { get; set; } = "";
public int Q { get; set; }
public int R { get; set; }
public string Terrain { get; set; } = "Field";
public string? OwnerUsername { get; set; }
public string? Label { get; set; }
public int Level { get; set; }
public DateTime UpdatedAtUtc { get; set; }
public static LocationResponse FromLocation(Location location) => new()
{
Id = location.Id,
Q = location.Q,
R = location.R,
Terrain = location.Terrain,
OwnerUsername = location.OwnerUsername,
Label = location.Label,
Level = location.Level,
UpdatedAtUtc = location.UpdatedAtUtc
};
}
@@ -0,0 +1,20 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
namespace LocationsApi.Models;
public class Location
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; } = "";
public int Q { get; set; }
public int R { get; set; }
public string Terrain { get; set; } = "Field";
public string? OwnerUsername { get; set; }
public string? Label { get; set; }
public int Level { get; set; } = 1;
public DateTime CreatedAtUtc { get; set; } = DateTime.UtcNow;
public DateTime UpdatedAtUtc { get; set; } = DateTime.UtcNow;
}
+70
View File
@@ -0,0 +1,70 @@
using LocationsApi.Services;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using Microsoft.OpenApi.Models;
using System.Text;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddSingleton<LocationService>();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Locations API", Version = "v1" });
c.AddSecurityDefinition("bearerAuth", new OpenApiSecurityScheme
{
Type = SecuritySchemeType.Http,
Scheme = "bearer",
BearerFormat = "JWT",
Description = "Paste your access token here."
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{ Type = ReferenceType.SecurityScheme, Id = "bearerAuth" }
},
Array.Empty<string>()
}
});
});
var cfg = builder.Configuration;
var jwtKey = cfg["Jwt:Key"] ?? throw new Exception("Jwt:Key missing");
var issuer = cfg["Jwt:Issuer"] ?? "territory-autobattler";
var audience = cfg["Jwt:Audience"] ?? "territory-autobattler-auth-api";
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(o =>
{
o.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = issuer,
ValidateAudience = true,
ValidAudience = audience,
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtKey)),
ValidateLifetime = true,
ClockSkew = TimeSpan.FromSeconds(30)
};
});
builder.Services.AddAuthorization();
var app = builder.Build();
app.MapGet("/healthz", () => Results.Ok("ok"));
app.UseSwagger();
app.UseSwaggerUI(o =>
{
o.SwaggerEndpoint("/swagger/v1/swagger.json", "Locations API v1");
o.RoutePrefix = "swagger";
});
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();
+13
View File
@@ -0,0 +1,13 @@
# LocationsApi
Tracks hex locations for the territory map.
## Endpoints
- `GET /api/locations` List all known locations.
- `GET /api/locations?minQ=-7&maxQ=7&minR=-7&maxR=7` List a coordinate range.
- `GET /api/locations/{q}/{r}` Fetch one location.
- `POST /api/locations/claim` Claim a location for the authenticated user.
- `PUT /api/locations` Upsert location data (SUPER only).
`claim` and `put` require the same JWT issued by AuthApi.
@@ -0,0 +1,91 @@
using LocationsApi.Models;
using MongoDB.Driver;
namespace LocationsApi.Services;
public class LocationService
{
private readonly IMongoCollection<Location> _locations;
public LocationService(IConfiguration cfg)
{
var connectionString = cfg["MongoDB:ConnectionString"] ?? "mongodb://127.0.0.1:27017";
var databaseName = cfg["MongoDB:DatabaseName"] ?? "territory-autobattler";
var client = new MongoClient(connectionString);
var database = client.GetDatabase(databaseName);
_locations = database.GetCollection<Location>("Locations");
var coordinateIndex = Builders<Location>.IndexKeys
.Ascending(x => x.Q)
.Ascending(x => x.R);
_locations.Indexes.CreateOne(new CreateIndexModel<Location>(
coordinateIndex,
new CreateIndexOptions { Unique = true }));
}
public Task<List<Location>> GetAllAsync() =>
_locations.Find(FilterDefinition<Location>.Empty)
.SortBy(x => x.Q)
.ThenBy(x => x.R)
.ToListAsync();
public Task<List<Location>> GetRangeAsync(int minQ, int maxQ, int minR, int maxR) =>
_locations.Find(x => x.Q >= minQ && x.Q <= maxQ && x.R >= minR && x.R <= maxR)
.SortBy(x => x.Q)
.ThenBy(x => x.R)
.ToListAsync();
public async Task<Location?> GetAsync(int q, int r) =>
await _locations.Find(x => x.Q == q && x.R == r).FirstOrDefaultAsync();
public async Task<Location> UpsertAsync(UpsertLocationRequest request, string? ownerUsername = null)
{
var now = DateTime.UtcNow;
var update = Builders<Location>.Update
.SetOnInsert(x => x.CreatedAtUtc, now)
.Set(x => x.Terrain, NormalizeTerrain(request.Terrain))
.Set(x => x.Label, request.Label)
.Set(x => x.Level, Math.Max(1, request.Level))
.Set(x => x.UpdatedAtUtc, now);
if (!string.IsNullOrWhiteSpace(ownerUsername))
{
update = update.Set(x => x.OwnerUsername, ownerUsername);
}
var options = new FindOneAndUpdateOptions<Location>
{
IsUpsert = true,
ReturnDocument = ReturnDocument.After
};
return await _locations.FindOneAndUpdateAsync(
x => x.Q == request.Q && x.R == request.R,
update,
options);
}
public async Task<Location> ClaimAsync(int q, int r, string username)
{
var existing = await GetAsync(q, r);
if (existing is not null)
{
existing.OwnerUsername = username;
existing.UpdatedAtUtc = DateTime.UtcNow;
await _locations.ReplaceOneAsync(x => x.Id == existing.Id, existing);
return existing;
}
return await UpsertAsync(new UpsertLocationRequest { Q = q, R = r, Terrain = "Field" }, username);
}
private static string NormalizeTerrain(string terrain)
{
var trimmed = terrain.Trim();
return trimmed switch
{
"Command" or "Field" or "Forest" or "Ore" or "Highland" => trimmed,
_ => "Field"
};
}
}
@@ -0,0 +1,18 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"MongoDB": {
"ConnectionString": "mongodb://127.0.0.1:27017",
"DatabaseName": "territory-autobattler"
},
"Jwt": {
"Key": "SuperUltraSecureJwtKeyWithAtLeast32Chars!!",
"Issuer": "territory-autobattler",
"Audience": "territory-autobattler-auth-api"
},
"AllowedHosts": "*"
}
@@ -0,0 +1,460 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"LocationsApi/1.0.0": {
"dependencies": {
"Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.8",
"Microsoft.AspNetCore.OpenApi": "8.0.8",
"MongoDB.Driver": "3.4.3",
"Swashbuckle.AspNetCore": "6.5.0"
},
"runtime": {
"LocationsApi.dll": {}
}
},
"DnsClient/1.6.1": {
"dependencies": {
"Microsoft.Win32.Registry": "5.0.0"
},
"runtime": {
"lib/net5.0/DnsClient.dll": {
"assemblyVersion": "1.6.1.0",
"fileVersion": "1.6.1.0"
}
}
},
"Microsoft.AspNetCore.Authentication.JwtBearer/8.0.8": {
"dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.1.2"
},
"runtime": {
"lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": {
"assemblyVersion": "8.0.8.0",
"fileVersion": "8.0.824.36908"
}
}
},
"Microsoft.AspNetCore.OpenApi/8.0.8": {
"dependencies": {
"Microsoft.OpenApi": "1.4.3"
},
"runtime": {
"lib/net8.0/Microsoft.AspNetCore.OpenApi.dll": {
"assemblyVersion": "8.0.8.0",
"fileVersion": "8.0.824.36908"
}
}
},
"Microsoft.Extensions.ApiDescription.Server/6.0.5": {},
"Microsoft.Extensions.Logging.Abstractions/2.0.0": {},
"Microsoft.IdentityModel.Abstractions/7.1.2": {
"runtime": {
"lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": {
"assemblyVersion": "7.1.2.0",
"fileVersion": "7.1.2.41121"
}
}
},
"Microsoft.IdentityModel.JsonWebTokens/7.1.2": {
"dependencies": {
"Microsoft.IdentityModel.Tokens": "7.1.2"
},
"runtime": {
"lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
"assemblyVersion": "7.1.2.0",
"fileVersion": "7.1.2.41121"
}
}
},
"Microsoft.IdentityModel.Logging/7.1.2": {
"dependencies": {
"Microsoft.IdentityModel.Abstractions": "7.1.2"
},
"runtime": {
"lib/net8.0/Microsoft.IdentityModel.Logging.dll": {
"assemblyVersion": "7.1.2.0",
"fileVersion": "7.1.2.41121"
}
}
},
"Microsoft.IdentityModel.Protocols/7.1.2": {
"dependencies": {
"Microsoft.IdentityModel.Logging": "7.1.2",
"Microsoft.IdentityModel.Tokens": "7.1.2"
},
"runtime": {
"lib/net8.0/Microsoft.IdentityModel.Protocols.dll": {
"assemblyVersion": "7.1.2.0",
"fileVersion": "7.1.2.41121"
}
}
},
"Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": {
"dependencies": {
"Microsoft.IdentityModel.Protocols": "7.1.2",
"System.IdentityModel.Tokens.Jwt": "7.1.2"
},
"runtime": {
"lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": {
"assemblyVersion": "7.1.2.0",
"fileVersion": "7.1.2.41121"
}
}
},
"Microsoft.IdentityModel.Tokens/7.1.2": {
"dependencies": {
"Microsoft.IdentityModel.Logging": "7.1.2"
},
"runtime": {
"lib/net8.0/Microsoft.IdentityModel.Tokens.dll": {
"assemblyVersion": "7.1.2.0",
"fileVersion": "7.1.2.41121"
}
}
},
"Microsoft.NETCore.Platforms/5.0.0": {},
"Microsoft.OpenApi/1.4.3": {
"runtime": {
"lib/netstandard2.0/Microsoft.OpenApi.dll": {
"assemblyVersion": "1.4.3.0",
"fileVersion": "1.4.3.0"
}
}
},
"Microsoft.Win32.Registry/5.0.0": {
"dependencies": {
"System.Security.AccessControl": "5.0.0",
"System.Security.Principal.Windows": "5.0.0"
}
},
"MongoDB.Bson/3.4.3": {
"dependencies": {
"System.Memory": "4.5.5",
"System.Runtime.CompilerServices.Unsafe": "5.0.0"
},
"runtime": {
"lib/net6.0/MongoDB.Bson.dll": {
"assemblyVersion": "3.4.3.0",
"fileVersion": "3.4.3.0"
}
}
},
"MongoDB.Driver/3.4.3": {
"dependencies": {
"DnsClient": "1.6.1",
"Microsoft.Extensions.Logging.Abstractions": "2.0.0",
"MongoDB.Bson": "3.4.3",
"SharpCompress": "0.30.1",
"Snappier": "1.0.0",
"System.Buffers": "4.5.1",
"ZstdSharp.Port": "0.7.3"
},
"runtime": {
"lib/net6.0/MongoDB.Driver.dll": {
"assemblyVersion": "3.4.3.0",
"fileVersion": "3.4.3.0"
}
}
},
"SharpCompress/0.30.1": {
"runtime": {
"lib/net5.0/SharpCompress.dll": {
"assemblyVersion": "0.30.1.0",
"fileVersion": "0.30.1.0"
}
}
},
"Snappier/1.0.0": {
"runtime": {
"lib/net5.0/Snappier.dll": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "1.0.0.0"
}
}
},
"Swashbuckle.AspNetCore/6.5.0": {
"dependencies": {
"Microsoft.Extensions.ApiDescription.Server": "6.0.5",
"Swashbuckle.AspNetCore.Swagger": "6.5.0",
"Swashbuckle.AspNetCore.SwaggerGen": "6.5.0",
"Swashbuckle.AspNetCore.SwaggerUI": "6.5.0"
}
},
"Swashbuckle.AspNetCore.Swagger/6.5.0": {
"dependencies": {
"Microsoft.OpenApi": "1.4.3"
},
"runtime": {
"lib/net7.0/Swashbuckle.AspNetCore.Swagger.dll": {
"assemblyVersion": "6.5.0.0",
"fileVersion": "6.5.0.0"
}
}
},
"Swashbuckle.AspNetCore.SwaggerGen/6.5.0": {
"dependencies": {
"Swashbuckle.AspNetCore.Swagger": "6.5.0"
},
"runtime": {
"lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll": {
"assemblyVersion": "6.5.0.0",
"fileVersion": "6.5.0.0"
}
}
},
"Swashbuckle.AspNetCore.SwaggerUI/6.5.0": {
"runtime": {
"lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll": {
"assemblyVersion": "6.5.0.0",
"fileVersion": "6.5.0.0"
}
}
},
"System.Buffers/4.5.1": {},
"System.IdentityModel.Tokens.Jwt/7.1.2": {
"dependencies": {
"Microsoft.IdentityModel.JsonWebTokens": "7.1.2",
"Microsoft.IdentityModel.Tokens": "7.1.2"
},
"runtime": {
"lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": {
"assemblyVersion": "7.1.2.0",
"fileVersion": "7.1.2.41121"
}
}
},
"System.Memory/4.5.5": {},
"System.Runtime.CompilerServices.Unsafe/5.0.0": {},
"System.Security.AccessControl/5.0.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "5.0.0",
"System.Security.Principal.Windows": "5.0.0"
}
},
"System.Security.Principal.Windows/5.0.0": {},
"ZstdSharp.Port/0.7.3": {
"runtime": {
"lib/net7.0/ZstdSharp.dll": {
"assemblyVersion": "0.7.3.0",
"fileVersion": "0.7.3.0"
}
}
}
}
},
"libraries": {
"LocationsApi/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"DnsClient/1.6.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
"path": "dnsclient/1.6.1",
"hashPath": "dnsclient.1.6.1.nupkg.sha512"
},
"Microsoft.AspNetCore.Authentication.JwtBearer/8.0.8": {
"type": "package",
"serviceable": true,
"sha512": "sha512-J145j2LgD4kkkNkrf5DW/pKzithZRKN5EFY+KAO3SqweMyDfv4cgKgtOIsv2bhrOLGqPJixuZkZte7LfK1seYQ==",
"path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.8",
"hashPath": "microsoft.aspnetcore.authentication.jwtbearer.8.0.8.nupkg.sha512"
},
"Microsoft.AspNetCore.OpenApi/8.0.8": {
"type": "package",
"serviceable": true,
"sha512": "sha512-wNHhohqP8rmsQ4UhKbd6jZMD6l+2Q/+DvRBT0Cgqeuglr13aF6sSJWicZKCIhZAUXzuhkdwtHVc95MlPlFk0dA==",
"path": "microsoft.aspnetcore.openapi/8.0.8",
"hashPath": "microsoft.aspnetcore.openapi.8.0.8.nupkg.sha512"
},
"Microsoft.Extensions.ApiDescription.Server/6.0.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==",
"path": "microsoft.extensions.apidescription.server/6.0.5",
"hashPath": "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Abstractions/2.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6ZCllUYGFukkymSTx3Yr0G/ajRxoNJp7/FqSxSB4fGISST54ifBhgu4Nc0ItGi3i6DqwuNd8SUyObmiC++AO2Q==",
"path": "microsoft.extensions.logging.abstractions/2.0.0",
"hashPath": "microsoft.extensions.logging.abstractions.2.0.0.nupkg.sha512"
},
"Microsoft.IdentityModel.Abstractions/7.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-33eTIA2uO/L9utJjZWbKsMSVsQf7F8vtd6q5mQX7ZJzNvCpci5fleD6AeANGlbbb7WX7XKxq9+Dkb5e3GNDrmQ==",
"path": "microsoft.identitymodel.abstractions/7.1.2",
"hashPath": "microsoft.identitymodel.abstractions.7.1.2.nupkg.sha512"
},
"Microsoft.IdentityModel.JsonWebTokens/7.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-cloLGeZolXbCJhJBc5OC05uhrdhdPL6MWHuVUnkkUvPDeK7HkwThBaLZ1XjBQVk9YhxXE2OvHXnKi0PLleXxDg==",
"path": "microsoft.identitymodel.jsonwebtokens/7.1.2",
"hashPath": "microsoft.identitymodel.jsonwebtokens.7.1.2.nupkg.sha512"
},
"Microsoft.IdentityModel.Logging/7.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-YCxBt2EeJP8fcXk9desChkWI+0vFqFLvBwrz5hBMsoh0KJE6BC66DnzkdzkJNqMltLromc52dkdT206jJ38cTw==",
"path": "microsoft.identitymodel.logging/7.1.2",
"hashPath": "microsoft.identitymodel.logging.7.1.2.nupkg.sha512"
},
"Microsoft.IdentityModel.Protocols/7.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-SydLwMRFx6EHPWJ+N6+MVaoArN1Htt92b935O3RUWPY1yUF63zEjvd3lBu79eWdZUwedP8TN2I5V9T3nackvIQ==",
"path": "microsoft.identitymodel.protocols/7.1.2",
"hashPath": "microsoft.identitymodel.protocols.7.1.2.nupkg.sha512"
},
"Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6lHQoLXhnMQ42mGrfDkzbIOR3rzKM1W1tgTeMPLgLCqwwGw0d96xFi/UiX/fYsu7d6cD5MJiL3+4HuI8VU+sVQ==",
"path": "microsoft.identitymodel.protocols.openidconnect/7.1.2",
"hashPath": "microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512"
},
"Microsoft.IdentityModel.Tokens/7.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-oICJMqr3aNEDZOwnH5SK49bR6Z4aX0zEAnOLuhloumOSuqnNq+GWBdQyrgILnlcT5xj09xKCP/7Y7gJYB+ls/g==",
"path": "microsoft.identitymodel.tokens/7.1.2",
"hashPath": "microsoft.identitymodel.tokens.7.1.2.nupkg.sha512"
},
"Microsoft.NETCore.Platforms/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
"path": "microsoft.netcore.platforms/5.0.0",
"hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
},
"Microsoft.OpenApi/1.4.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-rURwggB+QZYcSVbDr7HSdhw/FELvMlriW10OeOzjPT7pstefMo7IThhtNtDudxbXhW+lj0NfX72Ka5EDsG8x6w==",
"path": "microsoft.openapi/1.4.3",
"hashPath": "microsoft.openapi.1.4.3.nupkg.sha512"
},
"Microsoft.Win32.Registry/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
"path": "microsoft.win32.registry/5.0.0",
"hashPath": "microsoft.win32.registry.5.0.0.nupkg.sha512"
},
"MongoDB.Bson/3.4.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZB2nCdlWtmDGItkDFh2E2kfYlXaItG414t9Np7CZhpftLypemYnxtdI52H+0b8RPqoUJD7bUvrf598sDTJd5iA==",
"path": "mongodb.bson/3.4.3",
"hashPath": "mongodb.bson.3.4.3.nupkg.sha512"
},
"MongoDB.Driver/3.4.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-yE6XQiDoFwTH4Xq/STJCbzsz+74RuzCXU45g9gaWFlLyy95xG8utuj+e64uXSbONtzabbp1O/8vfA3/HJXL6Pg==",
"path": "mongodb.driver/3.4.3",
"hashPath": "mongodb.driver.3.4.3.nupkg.sha512"
},
"SharpCompress/0.30.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
"path": "sharpcompress/0.30.1",
"hashPath": "sharpcompress.0.30.1.nupkg.sha512"
},
"Snappier/1.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
"path": "snappier/1.0.0",
"hashPath": "snappier.1.0.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore/6.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-FK05XokgjgwlCI6wCT+D4/abtQkL1X1/B9Oas6uIwHFmYrIO9WUD5aLC9IzMs9GnHfUXOtXZ2S43gN1mhs5+aA==",
"path": "swashbuckle.aspnetcore/6.5.0",
"hashPath": "swashbuckle.aspnetcore.6.5.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore.Swagger/6.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-XWmCmqyFmoItXKFsQSwQbEAsjDKcxlNf1l+/Ki42hcb6LjKL8m5Db69OTvz5vLonMSRntYO1XLqz0OP+n3vKnA==",
"path": "swashbuckle.aspnetcore.swagger/6.5.0",
"hashPath": "swashbuckle.aspnetcore.swagger.6.5.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerGen/6.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Y/qW8Qdg9OEs7V013tt+94OdPxbRdbhcEbw4NiwGvf4YBcfhL/y7qp/Mjv/cENsQ2L3NqJ2AOu94weBy/h4KvA==",
"path": "swashbuckle.aspnetcore.swaggergen/6.5.0",
"hashPath": "swashbuckle.aspnetcore.swaggergen.6.5.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerUI/6.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OvbvxX+wL8skxTBttcBsVxdh73Fag4xwqEU2edh4JMn7Ws/xJHnY/JB1e9RoCb6XpDxUF3hD9A0Z1lEUx40Pfw==",
"path": "swashbuckle.aspnetcore.swaggerui/6.5.0",
"hashPath": "swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512"
},
"System.Buffers/4.5.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
"path": "system.buffers/4.5.1",
"hashPath": "system.buffers.4.5.1.nupkg.sha512"
},
"System.IdentityModel.Tokens.Jwt/7.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Thhbe1peAmtSBFaV/ohtykXiZSOkx59Da44hvtWfIMFofDA3M3LaVyjstACf2rKGn4dEDR2cUpRAZ0Xs/zB+7Q==",
"path": "system.identitymodel.tokens.jwt/7.1.2",
"hashPath": "system.identitymodel.tokens.jwt.7.1.2.nupkg.sha512"
},
"System.Memory/4.5.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
"path": "system.memory/4.5.5",
"hashPath": "system.memory.4.5.5.nupkg.sha512"
},
"System.Runtime.CompilerServices.Unsafe/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
"path": "system.runtime.compilerservices.unsafe/5.0.0",
"hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
},
"System.Security.AccessControl/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
"path": "system.security.accesscontrol/5.0.0",
"hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
},
"System.Security.Principal.Windows/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
"path": "system.security.principal.windows/5.0.0",
"hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
},
"ZstdSharp.Port/0.7.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
"path": "zstdsharp.port/0.7.3",
"hashPath": "zstdsharp.port.0.7.3.nupkg.sha512"
}
}
}
@@ -0,0 +1,19 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "8.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}
@@ -0,0 +1 @@
{"Version":1,"ManifestType":"Build","Endpoints":[]}
@@ -0,0 +1,18 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"MongoDB": {
"ConnectionString": "mongodb://127.0.0.1:27017",
"DatabaseName": "territory-autobattler"
},
"Jwt": {
"Key": "SuperUltraSecureJwtKeyWithAtLeast32Chars!!",
"Issuer": "territory-autobattler",
"Audience": "territory-autobattler-auth-api"
},
"AllowedHosts": "*"
}
@@ -0,0 +1,10 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: territory-autobattler-locations-config
namespace: territory-autobattler
data:
MongoDB__ConnectionString: mongodb://192.168.86.50:27017
MongoDB__DatabaseName: territory-autobattler
Jwt__Issuer: territory-autobattler
Jwt__Audience: territory-autobattler-auth-api
@@ -0,0 +1,34 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: territory-autobattler-locations
namespace: territory-autobattler
labels:
app: territory-autobattler-locations
spec:
replicas: 2
selector:
matchLabels:
app: territory-autobattler-locations
template:
metadata:
labels:
app: territory-autobattler-locations
spec:
containers:
- name: territory-autobattler-locations
image: territory-autobattler-locations:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: territory-autobattler-locations-config
- secretRef:
name: territory-autobattler-locations-secrets
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
@@ -0,0 +1,8 @@
apiVersion: v1
kind: Secret
metadata:
name: territory-autobattler-locations-secrets
namespace: territory-autobattler
type: Opaque
stringData:
Jwt__Key: SuperUltraSecureJwtKeyWithAtLeast32Chars!!
@@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: territory-autobattler-locations
namespace: territory-autobattler
labels:
app: territory-autobattler-locations
spec:
selector:
app: territory-autobattler-locations
type: NodePort
ports:
- name: http
port: 80
targetPort: 8080
nodePort: 30092
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
@@ -0,0 +1,22 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("LocationsApi")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9207fe36a3c0b115c7ad6fd3d148dd6ca2094375")]
[assembly: System.Reflection.AssemblyProductAttribute("LocationsApi")]
[assembly: System.Reflection.AssemblyTitleAttribute("LocationsApi")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
@@ -0,0 +1 @@
b403eb203fdf58aebecc5d945b0abb24d1c483301d0672168baaeecc45119276
@@ -0,0 +1,21 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb = true
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = LocationsApi
build_property.RootNamespace = LocationsApi
build_property.ProjectDir = Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.RazorLangVersion = 8.0
build_property.SupportLocalizedComponentNames =
build_property.GenerateRazorMetadataSourceChecksumAttributes =
build_property.MSBuildProjectDirectory = Z:\Godot\repos\territory-autobattler\microservices\LocationsApi
build_property._RazorSourceGeneratorDebug =
build_property.EffectiveAnalysisLevelStyle = 8.0
build_property.EnableCodeStyleSeverity =
@@ -0,0 +1,17 @@
// <auto-generated/>
global using global::Microsoft.AspNetCore.Builder;
global using global::Microsoft.AspNetCore.Hosting;
global using global::Microsoft.AspNetCore.Http;
global using global::Microsoft.AspNetCore.Routing;
global using global::Microsoft.Extensions.Configuration;
global using global::Microsoft.Extensions.DependencyInjection;
global using global::Microsoft.Extensions.Hosting;
global using global::Microsoft.Extensions.Logging;
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Net.Http.Json;
global using global::System.Threading;
global using global::System.Threading.Tasks;
@@ -0,0 +1,17 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Microsoft.AspNetCore.OpenApi")]
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Swashbuckle.AspNetCore.SwaggerGen")]
// Generated by the MSBuild WriteCodeFragment class.
@@ -0,0 +1 @@
213fc5cde5bb507a54c1db1f4077b959581079a6be1356d37758b728911aa90e
@@ -0,0 +1,48 @@
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\appsettings.json
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\LocationsApi.staticwebassets.endpoints.json
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\LocationsApi.exe
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\LocationsApi.deps.json
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\LocationsApi.runtimeconfig.json
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\LocationsApi.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\LocationsApi.pdb
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\DnsClient.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Microsoft.AspNetCore.Authentication.JwtBearer.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Microsoft.AspNetCore.OpenApi.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Microsoft.IdentityModel.Abstractions.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Microsoft.IdentityModel.JsonWebTokens.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Microsoft.IdentityModel.Logging.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Microsoft.IdentityModel.Protocols.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Microsoft.IdentityModel.Tokens.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Microsoft.OpenApi.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\MongoDB.Bson.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\MongoDB.Driver.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\SharpCompress.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Snappier.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Swashbuckle.AspNetCore.Swagger.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerGen.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerUI.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\System.IdentityModel.Tokens.Jwt.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\bin\Debug\net8.0\ZstdSharp.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\LocationsApi.csproj.AssemblyReference.cache
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\rpswa.dswa.cache.json
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\LocationsApi.GeneratedMSBuildEditorConfig.editorconfig
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\LocationsApi.AssemblyInfoInputs.cache
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\LocationsApi.AssemblyInfo.cs
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\LocationsApi.csproj.CoreCompileInputs.cache
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\LocationsApi.MvcApplicationPartsAssemblyInfo.cs
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\LocationsApi.MvcApplicationPartsAssemblyInfo.cache
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\rjimswa.dswa.cache.json
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\rjsmrazor.dswa.cache.json
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\rjsmcshtml.dswa.cache.json
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\scopedcss\bundle\LocationsApi.styles.css
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\staticwebassets.build.json
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\staticwebassets.build.json.cache
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\staticwebassets.development.json
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\staticwebassets.build.endpoints.json
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\Location.A3B5A80F.Up2Date
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\LocationsApi.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\refint\LocationsApi.dll
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\LocationsApi.pdb
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\LocationsApi.genruntimeconfig.cache
Z:\Godot\repos\territory-autobattler\microservices\LocationsApi\obj\Debug\net8.0\ref\LocationsApi.dll
@@ -0,0 +1 @@
83bedf311e2d79155a30c6cfbf25396b7292e0ddd73f8549c5e526309c66ecc9
@@ -0,0 +1 @@
{"GlobalPropertiesHash":"w7mmSUeJy3EjTBKOw9i7DTiAbSD0tO4IicJPYORYxAc=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["u6f8oDnbzrimiNBDeJHAHevNSr3MAeMqrDg9p7nyxOE=","5iNsYgTJ7UV3yFd6ljv5hsMAG441CEYl/SrWmWfNtXc=","9WHrt72HnJ5zi2iiKthnOFXj64buUk7n8VJpIRqlWUs=","H8SD/zn5odFOCH8IKkG0GxtQdpeP5bXD\u002BPPQyk8g9Tk=","TQpYeFHS2qgMU/ptlMMsuvxql0RCmqmAhUrgJv\u002BHh9A=","AubgranklSc/XcuzOmTCVcnLDHalwHX672pKnqMGGH0=","bRq\u002BCEv/2oksFWboXE/6CRNvoz7a//ybXVNKledXUhc=","aIYHzbHzogvauDRzzlcHDs54OxiLFduH5H6wBtjQMKk="],"CachedAssets":{},"CachedCopyCandidates":{}}
@@ -0,0 +1 @@
{"GlobalPropertiesHash":"GFtoKVzjVKzTL2sykHz39KP6vofGVDcii0x1tMRS6e8=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["u6f8oDnbzrimiNBDeJHAHevNSr3MAeMqrDg9p7nyxOE=","5iNsYgTJ7UV3yFd6ljv5hsMAG441CEYl/SrWmWfNtXc=","9WHrt72HnJ5zi2iiKthnOFXj64buUk7n8VJpIRqlWUs=","H8SD/zn5odFOCH8IKkG0GxtQdpeP5bXD\u002BPPQyk8g9Tk=","TQpYeFHS2qgMU/ptlMMsuvxql0RCmqmAhUrgJv\u002BHh9A=","AubgranklSc/XcuzOmTCVcnLDHalwHX672pKnqMGGH0=","bRq\u002BCEv/2oksFWboXE/6CRNvoz7a//ybXVNKledXUhc=","aIYHzbHzogvauDRzzlcHDs54OxiLFduH5H6wBtjQMKk="],"CachedAssets":{},"CachedCopyCandidates":{}}
@@ -0,0 +1 @@
{"GlobalPropertiesHash":"igFr7v0EeKBfAjhR7vM0gDd+Q/K60wUiwt+1xe9MQyQ=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["u6f8oDnbzrimiNBDeJHAHevNSr3MAeMqrDg9p7nyxOE="],"CachedAssets":{},"CachedCopyCandidates":{}}
@@ -0,0 +1 @@
{"Version":1,"ManifestType":"Build","Endpoints":[]}
@@ -0,0 +1 @@
{"Version":1,"Hash":"DX6lfJZcExz+VmnrPKDSjNGq6P0UUlCwTA5N0Hquk5o=","Source":"LocationsApi","BasePath":"_content/LocationsApi","Mode":"Default","ManifestType":"Build","ReferencedProjectsConfiguration":[],"DiscoveryPatterns":[],"Assets":[],"Endpoints":[]}
@@ -0,0 +1 @@
DX6lfJZcExz+VmnrPKDSjNGq6P0UUlCwTA5N0Hquk5o=
@@ -0,0 +1,94 @@
{
"format": 1,
"restore": {
"Z:\\Godot\\repos\\territory-autobattler\\microservices\\LocationsApi\\LocationsApi.csproj": {}
},
"projects": {
"Z:\\Godot\\repos\\territory-autobattler\\microservices\\LocationsApi\\LocationsApi.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "Z:\\Godot\\repos\\territory-autobattler\\microservices\\LocationsApi\\LocationsApi.csproj",
"projectName": "LocationsApi",
"projectPath": "Z:\\Godot\\repos\\territory-autobattler\\microservices\\LocationsApi\\LocationsApi.csproj",
"packagesPath": "C:\\Users\\hz\\.nuget\\packages\\",
"outputPath": "Z:\\Godot\\repos\\territory-autobattler\\microservices\\LocationsApi\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\hz\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"Microsoft.AspNetCore.Authentication.JwtBearer": {
"target": "Package",
"version": "[8.0.8, )"
},
"Microsoft.AspNetCore.OpenApi": {
"target": "Package",
"version": "[8.0.8, )"
},
"MongoDB.Driver": {
"target": "Package",
"version": "[3.4.3, )"
},
"Swashbuckle.AspNetCore": {
"target": "Package",
"version": "[6.5.0, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.AspNetCore.App": {
"privateAssets": "none"
},
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.310/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\hz\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\hz\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.props" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.props')" />
<Import Project="$(NuGetPackageRoot)swashbuckle.aspnetcore\6.5.0\build\Swashbuckle.AspNetCore.props" Condition="Exists('$(NuGetPackageRoot)swashbuckle.aspnetcore\6.5.0\build\Swashbuckle.AspNetCore.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgMicrosoft_Extensions_ApiDescription_Server Condition=" '$(PkgMicrosoft_Extensions_ApiDescription_Server)' == '' ">C:\Users\hz\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5</PkgMicrosoft_Extensions_ApiDescription_Server>
</PropertyGroup>
</Project>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.targets')" />
</ImportGroup>
</Project>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,38 @@
{
"version": 2,
"dgSpecHash": "H/z66S8JS5M=",
"success": true,
"projectFilePath": "Z:\\Godot\\repos\\territory-autobattler\\microservices\\LocationsApi\\LocationsApi.csproj",
"expectedPackageFiles": [
"C:\\Users\\hz\\.nuget\\packages\\dnsclient\\1.6.1\\dnsclient.1.6.1.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.aspnetcore.authentication.jwtbearer\\8.0.8\\microsoft.aspnetcore.authentication.jwtbearer.8.0.8.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.aspnetcore.openapi\\8.0.8\\microsoft.aspnetcore.openapi.8.0.8.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\2.0.0\\microsoft.extensions.logging.abstractions.2.0.0.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.identitymodel.abstractions\\7.1.2\\microsoft.identitymodel.abstractions.7.1.2.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\7.1.2\\microsoft.identitymodel.jsonwebtokens.7.1.2.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.identitymodel.logging\\7.1.2\\microsoft.identitymodel.logging.7.1.2.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.identitymodel.protocols\\7.1.2\\microsoft.identitymodel.protocols.7.1.2.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.identitymodel.protocols.openidconnect\\7.1.2\\microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.identitymodel.tokens\\7.1.2\\microsoft.identitymodel.tokens.7.1.2.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.netcore.platforms\\5.0.0\\microsoft.netcore.platforms.5.0.0.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.openapi\\1.4.3\\microsoft.openapi.1.4.3.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\microsoft.win32.registry\\5.0.0\\microsoft.win32.registry.5.0.0.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\mongodb.bson\\3.4.3\\mongodb.bson.3.4.3.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\mongodb.driver\\3.4.3\\mongodb.driver.3.4.3.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\sharpcompress\\0.30.1\\sharpcompress.0.30.1.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\snappier\\1.0.0\\snappier.1.0.0.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\swashbuckle.aspnetcore\\6.5.0\\swashbuckle.aspnetcore.6.5.0.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.5.0\\swashbuckle.aspnetcore.swagger.6.5.0.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.5.0\\swashbuckle.aspnetcore.swaggergen.6.5.0.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.5.0\\swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\system.identitymodel.tokens.jwt\\7.1.2\\system.identitymodel.tokens.jwt.7.1.2.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\system.memory\\4.5.5\\system.memory.4.5.5.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\5.0.0\\system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\system.security.principal.windows\\5.0.0\\system.security.principal.windows.5.0.0.nupkg.sha512",
"C:\\Users\\hz\\.nuget\\packages\\zstdsharp.port\\0.7.3\\zstdsharp.port.0.7.3.nupkg.sha512"
],
"logs": []
}