feat: complete release preparation, 10+ ad mediation, CI/CD, and docker deployment
Some checks failed
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / deploy (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Release & Packaging Pipeline / Build & Publish Admin Docker Image (push) Failing after 8s
Release & Code Signing CA Pipeline / build-and-sign-windows (push) Failing after 1m51s
Build macOS / Build & Package (macOS) (push) Failing after 4s
Build macOS / Build & Package (macOS)-1 (push) Failing after 5s
Release & Code Signing CA Pipeline / build-and-sign-macos (push) Failing after 3s
Release & Packaging Pipeline / Package macOS Desktop App (push) Failing after 4s
Release & Packaging Pipeline / Package Windows Desktop App (push) Failing after 2m28s
Release & Packaging Pipeline / Publish Official GitHub Release (push) Has been skipped
Some checks failed
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / deploy (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Release & Packaging Pipeline / Build & Publish Admin Docker Image (push) Failing after 8s
Release & Code Signing CA Pipeline / build-and-sign-windows (push) Failing after 1m51s
Build macOS / Build & Package (macOS) (push) Failing after 4s
Build macOS / Build & Package (macOS)-1 (push) Failing after 5s
Release & Code Signing CA Pipeline / build-and-sign-macos (push) Failing after 3s
Release & Packaging Pipeline / Package macOS Desktop App (push) Failing after 4s
Release & Packaging Pipeline / Package Windows Desktop App (push) Failing after 2m28s
Release & Packaging Pipeline / Publish Official GitHub Release (push) Has been skipped
This commit is contained in:
parent
5cd1de6859
commit
708e20f747
406 changed files with 42464 additions and 6199 deletions
9
apps/api-server/.dockerignore
Normal file
9
apps/api-server/.dockerignore
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
bin/
|
||||
obj/
|
||||
*.db
|
||||
*.db-shm
|
||||
*.db-wal
|
||||
*.log
|
||||
.git/
|
||||
.vs/
|
||||
.vscode/
|
||||
275
apps/api-server/Controllers/AdminController.cs
Normal file
275
apps/api-server/Controllers/AdminController.cs
Normal file
|
|
@ -0,0 +1,275 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using D3ROVoice.Api.Data;
|
||||
using D3ROVoice.Api.Dtos;
|
||||
using D3ROVoice.Api.Services;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace D3ROVoice.Api.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class AdminController : ControllerBase
|
||||
{
|
||||
private readonly AppDbContext _db;
|
||||
private readonly ISttProxyService _sttService;
|
||||
private static readonly DateTime _serverStartTime = DateTime.UtcNow;
|
||||
|
||||
public AdminController(AppDbContext db, ISttProxyService sttService)
|
||||
{
|
||||
_db = db;
|
||||
_sttService = sttService;
|
||||
}
|
||||
|
||||
[HttpGet("stats")]
|
||||
public async Task<IActionResult> GetStats()
|
||||
{
|
||||
var totalUsers = await _db.Users.CountAsync();
|
||||
var today = DateTime.UtcNow.Date;
|
||||
var activeUsersToday = await _db.Users.CountAsync(u => u.LastLoginAt >= today);
|
||||
var totalRequests = await _db.UsageLogs.CountAsync() + await _db.SttUsageLogs.CountAsync();
|
||||
var totalLlmCost = await _db.UsageLogs.SumAsync(u => (decimal?)u.CalculatedCost) ?? 0m;
|
||||
var totalSttCost = await _db.SttUsageLogs.SumAsync(u => (decimal?)u.CalculatedCost) ?? 0m;
|
||||
var totalCost = totalLlmCost + totalSttCost;
|
||||
var errorCount = await _db.ErrorLogs.CountAsync();
|
||||
|
||||
var recentErrors = await _db.ErrorLogs
|
||||
.OrderByDescending(e => e.CreatedAt)
|
||||
.Take(10)
|
||||
.Select(e => new ServerErrorLogDto(e.Id, e.ErrorType, e.Message, e.Endpoint, e.CreatedAt))
|
||||
.ToListAsync();
|
||||
|
||||
var uptime = (DateTime.UtcNow - _serverStartTime).TotalSeconds;
|
||||
|
||||
var stats = new ServerStatsDto(
|
||||
totalUsers,
|
||||
activeUsersToday,
|
||||
totalRequests,
|
||||
totalCost,
|
||||
uptime,
|
||||
errorCount,
|
||||
recentErrors
|
||||
);
|
||||
|
||||
return Ok(stats);
|
||||
}
|
||||
|
||||
[HttpGet("users")]
|
||||
public async Task<IActionResult> GetUsers()
|
||||
{
|
||||
var users = await _db.Users
|
||||
.OrderByDescending(u => u.CreatedAt)
|
||||
.Select(u => new UserInfoDto(u.Id, u.Email, u.Role, u.CreatedAt, u.LastLoginAt, u.IsActive))
|
||||
.ToListAsync();
|
||||
|
||||
return Ok(users);
|
||||
}
|
||||
|
||||
// ── LLM Model Endpoints ───────────────────────────────────────────────
|
||||
|
||||
[HttpGet("endpoints")]
|
||||
public async Task<IActionResult> GetEndpoints()
|
||||
{
|
||||
var endpoints = await _db.ModelEndpoints
|
||||
.OrderBy(m => m.Id)
|
||||
.ToListAsync();
|
||||
|
||||
return Ok(endpoints);
|
||||
}
|
||||
|
||||
[HttpPost("endpoints")]
|
||||
public async Task<IActionResult> CreateEndpoint([FromBody] CreateModelEndpointDto dto)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(dto.ModelId) || string.IsNullOrWhiteSpace(dto.ModelName))
|
||||
{
|
||||
return BadRequest(new { message = "ModelId와 ModelName은 필수 항목입니다." });
|
||||
}
|
||||
|
||||
var existing = await _db.ModelEndpoints.FirstOrDefaultAsync(m => m.ModelId == dto.ModelId);
|
||||
if (existing != null)
|
||||
{
|
||||
return Conflict(new { message = "이미 존재하는 ModelId입니다." });
|
||||
}
|
||||
|
||||
var endpoint = new ServiceModelEndpoint
|
||||
{
|
||||
ModelId = dto.ModelId.Trim(),
|
||||
ModelName = dto.ModelName.Trim(),
|
||||
Provider = dto.Provider.Trim(),
|
||||
EndpointUrl = dto.EndpointUrl.Trim(),
|
||||
ApiKey = dto.ApiKey ?? "",
|
||||
CostPer1kPromptTokens = dto.CostPer1kPromptTokens,
|
||||
CostPer1kCompletionTokens = dto.CostPer1kCompletionTokens,
|
||||
IsActive = true,
|
||||
CreatedAt = DateTime.UtcNow
|
||||
};
|
||||
|
||||
_db.ModelEndpoints.Add(endpoint);
|
||||
await _db.SaveChangesAsync();
|
||||
|
||||
return Ok(endpoint);
|
||||
}
|
||||
|
||||
[HttpPut("endpoints/{id}")]
|
||||
public async Task<IActionResult> UpdateEndpoint(int id, [FromBody] UpdateModelEndpointDto dto)
|
||||
{
|
||||
var endpoint = await _db.ModelEndpoints.FindAsync(id);
|
||||
if (endpoint == null) return NotFound();
|
||||
|
||||
endpoint.ModelName = dto.ModelName.Trim();
|
||||
endpoint.Provider = dto.Provider.Trim();
|
||||
endpoint.EndpointUrl = dto.EndpointUrl.Trim();
|
||||
endpoint.ApiKey = dto.ApiKey ?? "";
|
||||
endpoint.CostPer1kPromptTokens = dto.CostPer1kPromptTokens;
|
||||
endpoint.CostPer1kCompletionTokens = dto.CostPer1kCompletionTokens;
|
||||
endpoint.IsActive = dto.IsActive;
|
||||
|
||||
await _db.SaveChangesAsync();
|
||||
return Ok(endpoint);
|
||||
}
|
||||
|
||||
[HttpDelete("endpoints/{id}")]
|
||||
public async Task<IActionResult> DeleteEndpoint(int id)
|
||||
{
|
||||
var endpoint = await _db.ModelEndpoints.FindAsync(id);
|
||||
if (endpoint == null) return NotFound();
|
||||
|
||||
_db.ModelEndpoints.Remove(endpoint);
|
||||
await _db.SaveChangesAsync();
|
||||
|
||||
return Ok(new { message = "삭제되었습니다." });
|
||||
}
|
||||
|
||||
// ── STT / Transcription Provider Endpoints ────────────────────────────
|
||||
|
||||
[HttpGet("stt-endpoints")]
|
||||
public async Task<IActionResult> GetSttEndpoints()
|
||||
{
|
||||
var endpoints = await _sttService.GetAllEndpointsAsync();
|
||||
return Ok(endpoints);
|
||||
}
|
||||
|
||||
[HttpGet("stt-endpoints/{id}")]
|
||||
public async Task<IActionResult> GetSttEndpoint(int id)
|
||||
{
|
||||
var endpoints = await _sttService.GetAllEndpointsAsync();
|
||||
var endpoint = endpoints.FirstOrDefault(e => e.Id == id);
|
||||
if (endpoint == null) return NotFound(new { message = $"STT Endpoint {id} not found." });
|
||||
return Ok(endpoint);
|
||||
}
|
||||
|
||||
[HttpPost("stt-endpoints")]
|
||||
public async Task<IActionResult> CreateSttEndpoint([FromBody] CreateSttEndpointDto dto)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(dto.Name) || string.IsNullOrWhiteSpace(dto.EndpointUrl))
|
||||
{
|
||||
return BadRequest(new { message = "이름과 Endpoint URL은 필수입니다." });
|
||||
}
|
||||
|
||||
var endpoint = await _sttService.CreateEndpointAsync(dto);
|
||||
return Ok(endpoint);
|
||||
}
|
||||
|
||||
[HttpPut("stt-endpoints/{id}")]
|
||||
public async Task<IActionResult> UpdateSttEndpoint(int id, [FromBody] UpdateSttEndpointDto dto)
|
||||
{
|
||||
try
|
||||
{
|
||||
var endpoint = await _sttService.UpdateEndpointAsync(id, dto);
|
||||
return Ok(endpoint);
|
||||
}
|
||||
catch (KeyNotFoundException)
|
||||
{
|
||||
return NotFound(new { message = $"STT Endpoint {id} not found." });
|
||||
}
|
||||
}
|
||||
|
||||
[HttpDelete("stt-endpoints/{id}")]
|
||||
public async Task<IActionResult> DeleteSttEndpoint(int id)
|
||||
{
|
||||
var deleted = await _sttService.DeleteEndpointAsync(id);
|
||||
if (!deleted) return NotFound();
|
||||
return Ok(new { message = "STT 엔드포인트가 성공적으로 삭제되었습니다." });
|
||||
}
|
||||
|
||||
[HttpPost("stt-endpoints/{id}/set-default")]
|
||||
public async Task<IActionResult> SetDefaultSttEndpoint(int id)
|
||||
{
|
||||
var success = await _sttService.SetDefaultEndpointAsync(id);
|
||||
if (!success) return NotFound();
|
||||
return Ok(new { id, isDefault = true, success = true, message = "기본 클라우드 전사 프로바이더로 설정되었습니다." });
|
||||
}
|
||||
|
||||
[HttpPost("stt-endpoints/{id}/test")]
|
||||
public async Task<IActionResult> TestSttEndpoint(int id)
|
||||
{
|
||||
var result = await _sttService.TestEndpointAsync(id);
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
[HttpPost("stt-endpoints/test-direct")]
|
||||
public async Task<IActionResult> TestSttDirect([FromQuery] string endpointUrl, [FromQuery] string? apiKey)
|
||||
{
|
||||
var result = await _sttService.TestEndpointAsync(0, apiKey, endpointUrl);
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
[HttpGet("stt-usage")]
|
||||
public async Task<IActionResult> GetSttUsageReport()
|
||||
{
|
||||
var report = await _sttService.GetUsageReportAsync();
|
||||
return Ok(report);
|
||||
}
|
||||
|
||||
// ── LLM Usage Report ──────────────────────────────────────────────────
|
||||
|
||||
[HttpGet("usage")]
|
||||
public async Task<IActionResult> GetUsageReport()
|
||||
{
|
||||
var logs = await _db.UsageLogs.AsNoTracking().ToListAsync();
|
||||
|
||||
var totalRequests = logs.Count;
|
||||
var totalPromptTokens = logs.Sum(l => l.PromptTokens);
|
||||
var totalCompletionTokens = logs.Sum(l => l.CompletionTokens);
|
||||
var totalCost = logs.Sum(l => l.CalculatedCost);
|
||||
|
||||
var userSummaries = logs
|
||||
.GroupBy(l => new { l.UserId, l.UserEmail })
|
||||
.Select(g => new UserUsageSummaryDto(
|
||||
g.Key.UserId,
|
||||
g.Key.UserEmail,
|
||||
g.Count(),
|
||||
g.Sum(x => x.TotalTokens),
|
||||
g.Sum(x => x.CalculatedCost)
|
||||
))
|
||||
.OrderByDescending(u => u.TotalCost)
|
||||
.ToList();
|
||||
|
||||
var modelSummaries = logs
|
||||
.GroupBy(l => l.ModelId)
|
||||
.Select(g => new ModelUsageSummaryDto(
|
||||
g.Key,
|
||||
g.Key,
|
||||
g.Count(),
|
||||
g.Sum(x => x.TotalTokens),
|
||||
g.Sum(x => x.CalculatedCost)
|
||||
))
|
||||
.OrderByDescending(m => m.TotalCost)
|
||||
.ToList();
|
||||
|
||||
var report = new UsageReportDto(
|
||||
totalRequests,
|
||||
totalPromptTokens,
|
||||
totalCompletionTokens,
|
||||
totalCost,
|
||||
userSummaries,
|
||||
modelSummaries
|
||||
);
|
||||
|
||||
return Ok(report);
|
||||
}
|
||||
}
|
||||
72
apps/api-server/Controllers/AuthController.cs
Normal file
72
apps/api-server/Controllers/AuthController.cs
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
using System;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using D3ROVoice.Api.Dtos;
|
||||
using D3ROVoice.Api.Services;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace D3ROVoice.Api.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class AuthController : ControllerBase
|
||||
{
|
||||
private readonly IAuthService _authService;
|
||||
|
||||
public AuthController(IAuthService authService)
|
||||
{
|
||||
_authService = authService;
|
||||
}
|
||||
|
||||
[HttpPost("register")]
|
||||
public async Task<IActionResult> Register([FromBody] RegisterDto dto)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(dto.Email) || string.IsNullOrWhiteSpace(dto.Password))
|
||||
{
|
||||
return BadRequest(new { message = "이메일과 비밀번호를 입력해주세요." });
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var result = await _authService.RegisterAsync(dto);
|
||||
return Ok(result);
|
||||
}
|
||||
catch (InvalidOperationException ex)
|
||||
{
|
||||
return Conflict(new { message = ex.Message });
|
||||
}
|
||||
}
|
||||
|
||||
[HttpPost("login")]
|
||||
public async Task<IActionResult> Login([FromBody] LoginDto dto)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(dto.Email) || string.IsNullOrWhiteSpace(dto.Password))
|
||||
{
|
||||
return BadRequest(new { message = "이메일과 비밀번호를 입력해주세요." });
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var result = await _authService.LoginAsync(dto);
|
||||
return Ok(result);
|
||||
}
|
||||
catch (UnauthorizedAccessException ex)
|
||||
{
|
||||
return Unauthorized(new { message = ex.Message });
|
||||
}
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
[HttpGet("me")]
|
||||
public async Task<IActionResult> GetMe()
|
||||
{
|
||||
var email = User.FindFirstValue(ClaimTypes.Email);
|
||||
if (string.IsNullOrEmpty(email)) return Unauthorized();
|
||||
|
||||
var user = await _authService.GetUserByEmailAsync(email);
|
||||
if (user == null) return NotFound();
|
||||
|
||||
return Ok(user);
|
||||
}
|
||||
}
|
||||
49
apps/api-server/Controllers/LlmController.cs
Normal file
49
apps/api-server/Controllers/LlmController.cs
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
using System;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using D3ROVoice.Api.Dtos;
|
||||
using D3ROVoice.Api.Services;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace D3ROVoice.Api.Controllers;
|
||||
|
||||
[Authorize]
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class LlmController : ControllerBase
|
||||
{
|
||||
private readonly ILlmProxyService _llmService;
|
||||
|
||||
public LlmController(ILlmProxyService llmService)
|
||||
{
|
||||
_llmService = llmService;
|
||||
}
|
||||
|
||||
[HttpPost("generate")]
|
||||
public async Task<IActionResult> Generate([FromBody] LlmGenerateRequest request)
|
||||
{
|
||||
var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
||||
var userEmail = User.FindFirstValue(ClaimTypes.Email) ?? "unknown@user";
|
||||
int userId = int.TryParse(userIdStr, out var id) ? id : 0;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(request.Prompt))
|
||||
{
|
||||
return BadRequest(new { message = "Prompt는 필수 항목입니다." });
|
||||
}
|
||||
|
||||
var result = await _llmService.GenerateAsync(userId, userEmail, request);
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
[HttpPost("chat")]
|
||||
public async Task<IActionResult> Chat([FromBody] LlmChatRequest request)
|
||||
{
|
||||
var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
||||
var userEmail = User.FindFirstValue(ClaimTypes.Email) ?? "unknown@user";
|
||||
int userId = int.TryParse(userIdStr, out var id) ? id : 0;
|
||||
|
||||
var result = await _llmService.ChatAsync(userId, userEmail, request);
|
||||
return Ok(result);
|
||||
}
|
||||
}
|
||||
109
apps/api-server/Controllers/SttController.cs
Normal file
109
apps/api-server/Controllers/SttController.cs
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using D3ROVoice.Api.Data;
|
||||
using D3ROVoice.Api.Dtos;
|
||||
using D3ROVoice.Api.Services;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace D3ROVoice.Api.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class SttController : ControllerBase
|
||||
{
|
||||
private readonly ISttProxyService _sttService;
|
||||
|
||||
public SttController(ISttProxyService sttService)
|
||||
{
|
||||
_sttService = sttService;
|
||||
}
|
||||
|
||||
[HttpPost("transcribe")]
|
||||
[Consumes("application/json", "multipart/form-data")]
|
||||
public async Task<IActionResult> Transcribe()
|
||||
{
|
||||
var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
||||
var userEmail = User.FindFirstValue(ClaimTypes.Email) ?? "user@d3ro.voice";
|
||||
int userId = int.TryParse(userIdStr, out var id) ? id : 1;
|
||||
|
||||
if (Request.HasFormContentType)
|
||||
{
|
||||
var form = await Request.ReadFormAsync();
|
||||
var file = form.Files.GetFile("file") ?? form.Files.GetFile("audio");
|
||||
|
||||
if (file == null || file.Length == 0)
|
||||
{
|
||||
return BadRequest(new { message = "전송할 오디오 파일(file 또는 audio)이 필요합니다." });
|
||||
}
|
||||
|
||||
using var memoryStream = new MemoryStream();
|
||||
await file.CopyToAsync(memoryStream);
|
||||
var audioBytes = memoryStream.ToArray();
|
||||
|
||||
var language = form["language"].ToString();
|
||||
var prompt = form["prompt"].ToString();
|
||||
var model = form["model"].ToString();
|
||||
var provider = form["provider"].ToString();
|
||||
|
||||
var request = new SttTranscribeRequest(
|
||||
AudioBase64: null,
|
||||
Language: string.IsNullOrWhiteSpace(language) ? "ko" : language,
|
||||
InitialPrompt: string.IsNullOrWhiteSpace(prompt) ? null : prompt,
|
||||
ModelId: string.IsNullOrWhiteSpace(model) ? null : model,
|
||||
Provider: string.IsNullOrWhiteSpace(provider) ? null : provider
|
||||
);
|
||||
|
||||
var result = await _sttService.TranscribeAsync(
|
||||
userId,
|
||||
userEmail,
|
||||
request,
|
||||
audioBytes,
|
||||
file.ContentType ?? "audio/webm",
|
||||
file.FileName ?? "recording.webm"
|
||||
);
|
||||
|
||||
return Ok(result);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Read JSON body
|
||||
using var reader = new StreamReader(Request.Body);
|
||||
var json = await reader.ReadToEndAsync();
|
||||
|
||||
if (string.IsNullOrWhiteSpace(json))
|
||||
{
|
||||
return BadRequest(new { message = "요청 본문이 비어있습니다." });
|
||||
}
|
||||
|
||||
var request = System.Text.Json.JsonSerializer.Deserialize<SttTranscribeRequest>(
|
||||
json,
|
||||
new System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true }
|
||||
);
|
||||
|
||||
if (request == null || string.IsNullOrWhiteSpace(request.AudioBase64))
|
||||
{
|
||||
return BadRequest(new { message = "AudioBase64 데이터가 필요합니다." });
|
||||
}
|
||||
|
||||
var result = await _sttService.TranscribeAsync(userId, userEmail, request);
|
||||
return Ok(result);
|
||||
}
|
||||
}
|
||||
|
||||
[HttpGet("providers")]
|
||||
public async Task<IActionResult> GetActiveProviders()
|
||||
{
|
||||
var endpoints = await _sttService.GetAllEndpointsAsync();
|
||||
return Ok(endpoints);
|
||||
}
|
||||
|
||||
[HttpPost("test")]
|
||||
public async Task<IActionResult> TestConnection([FromQuery] int endpointId = 0)
|
||||
{
|
||||
var result = await _sttService.TestEndpointAsync(endpointId);
|
||||
return Ok(result);
|
||||
}
|
||||
}
|
||||
17
apps/api-server/D3ROVoice.Api.csproj
Normal file
17
apps/api-server/D3ROVoice.Api.csproj
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.10" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.8" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.10" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="10.2.3" />
|
||||
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.22.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
6
apps/api-server/D3ROVoice.Api.http
Normal file
6
apps/api-server/D3ROVoice.Api.http
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
@D3ROVoice.Api_HostAddress = http://localhost:5223
|
||||
|
||||
GET {{D3ROVoice.Api_HostAddress}}/weatherforecast/
|
||||
Accept: application/json
|
||||
|
||||
###
|
||||
235
apps/api-server/Data/AppDbContext.cs
Normal file
235
apps/api-server/Data/AppDbContext.cs
Normal file
|
|
@ -0,0 +1,235 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace D3ROVoice.Api.Data;
|
||||
|
||||
public class User
|
||||
{
|
||||
[Key]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[MaxLength(150)]
|
||||
public string Email { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
public string PasswordHash { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
[MaxLength(50)]
|
||||
public string Role { get; set; } = "User"; // "Admin" or "User"
|
||||
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||
|
||||
public DateTime? LastLoginAt { get; set; }
|
||||
}
|
||||
|
||||
public class ServiceModelEndpoint
|
||||
{
|
||||
[Key]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[MaxLength(100)]
|
||||
public string ModelId { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
[MaxLength(150)]
|
||||
public string ModelName { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
[MaxLength(50)]
|
||||
public string Provider { get; set; } = "OpenAI"; // OpenAI, Anthropic, Custom
|
||||
|
||||
[Required]
|
||||
[MaxLength(500)]
|
||||
public string EndpointUrl { get; set; } = string.Empty;
|
||||
|
||||
[MaxLength(500)]
|
||||
public string ApiKey { get; set; } = string.Empty;
|
||||
|
||||
[Column(TypeName = "decimal(18, 6)")]
|
||||
public decimal CostPer1kPromptTokens { get; set; } = 0.00015m;
|
||||
|
||||
[Column(TypeName = "decimal(18, 6)")]
|
||||
public decimal CostPer1kCompletionTokens { get; set; } = 0.00060m;
|
||||
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||
}
|
||||
|
||||
public class ApiUsageLog
|
||||
{
|
||||
[Key]
|
||||
public int Id { get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
|
||||
[MaxLength(150)]
|
||||
public string UserEmail { get; set; } = string.Empty;
|
||||
|
||||
public int ModelEndpointId { get; set; }
|
||||
|
||||
[MaxLength(100)]
|
||||
public string ModelId { get; set; } = string.Empty;
|
||||
|
||||
public int PromptTokens { get; set; }
|
||||
|
||||
public int CompletionTokens { get; set; }
|
||||
|
||||
public int TotalTokens { get; set; }
|
||||
|
||||
[Column(TypeName = "decimal(18, 6)")]
|
||||
public decimal CalculatedCost { get; set; }
|
||||
|
||||
public int RequestDurationMs { get; set; }
|
||||
|
||||
public int StatusCode { get; set; } = 200;
|
||||
|
||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||
}
|
||||
|
||||
public class ServerErrorLog
|
||||
{
|
||||
[Key]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[MaxLength(100)]
|
||||
public string ErrorType { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
public string Message { get; set; } = string.Empty;
|
||||
|
||||
public string? StackTrace { get; set; }
|
||||
|
||||
[MaxLength(250)]
|
||||
public string? Endpoint { get; set; }
|
||||
|
||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||
}
|
||||
|
||||
public class SttProviderEndpoint
|
||||
{
|
||||
[Key]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[MaxLength(150)]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
[MaxLength(50)]
|
||||
public string ProviderType { get; set; } = "groq"; // groq, openai, deepgram, google, assemblyai, azure, custom, local-sidecar
|
||||
|
||||
[Required]
|
||||
[MaxLength(500)]
|
||||
public string EndpointUrl { get; set; } = string.Empty;
|
||||
|
||||
[MaxLength(500)]
|
||||
public string ApiKey { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
[MaxLength(100)]
|
||||
public string ModelId { get; set; } = "whisper-large-v3-turbo";
|
||||
|
||||
[Required]
|
||||
[MaxLength(50)]
|
||||
public string Method { get; set; } = "multipart"; // multipart, binary-stream, json-base64, custom-rest
|
||||
|
||||
[MaxLength(20)]
|
||||
public string Language { get; set; } = "ko";
|
||||
|
||||
[MaxLength(1000)]
|
||||
public string? Prompt { get; set; }
|
||||
|
||||
public double Temperature { get; set; } = 0.0;
|
||||
|
||||
[Column(TypeName = "decimal(18, 6)")]
|
||||
public decimal CostPerMinute { get; set; } = 0.000500m;
|
||||
|
||||
[Column(TypeName = "decimal(18, 6)")]
|
||||
public decimal CostPerSecond { get; set; } = 0.000008m;
|
||||
|
||||
public bool IsDefault { get; set; } = false;
|
||||
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
public int FallbackPriority { get; set; } = 1;
|
||||
|
||||
[MaxLength(1000)]
|
||||
public string? ExtraHeadersJson { get; set; }
|
||||
|
||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||
|
||||
public DateTime? UpdatedAt { get; set; }
|
||||
}
|
||||
|
||||
public class SttUsageLog
|
||||
{
|
||||
[Key]
|
||||
public int Id { get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
|
||||
[MaxLength(150)]
|
||||
public string UserEmail { get; set; } = string.Empty;
|
||||
|
||||
public int EndpointId { get; set; }
|
||||
|
||||
[MaxLength(50)]
|
||||
public string Provider { get; set; } = string.Empty;
|
||||
|
||||
[MaxLength(100)]
|
||||
public string ModelId { get; set; } = string.Empty;
|
||||
|
||||
public double AudioDurationSeconds { get; set; }
|
||||
|
||||
[Column(TypeName = "decimal(18, 6)")]
|
||||
public decimal CalculatedCost { get; set; }
|
||||
|
||||
public int LatencyMs { get; set; }
|
||||
|
||||
public int StatusCode { get; set; } = 200;
|
||||
|
||||
[MaxLength(1000)]
|
||||
public string TranscriptPreview { get; set; } = string.Empty;
|
||||
|
||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||
}
|
||||
|
||||
public class AppDbContext : DbContext
|
||||
{
|
||||
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
|
||||
|
||||
public DbSet<User> Users => Set<User>();
|
||||
public DbSet<ServiceModelEndpoint> ModelEndpoints => Set<ServiceModelEndpoint>();
|
||||
public DbSet<ApiUsageLog> UsageLogs => Set<ApiUsageLog>();
|
||||
public DbSet<ServerErrorLog> ErrorLogs => Set<ServerErrorLog>();
|
||||
public DbSet<SttProviderEndpoint> SttProviderEndpoints => Set<SttProviderEndpoint>();
|
||||
public DbSet<SttUsageLog> SttUsageLogs => Set<SttUsageLog>();
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
base.OnModelCreating(modelBuilder);
|
||||
|
||||
modelBuilder.Entity<User>()
|
||||
.HasIndex(u => u.Email)
|
||||
.IsUnique();
|
||||
|
||||
modelBuilder.Entity<ServiceModelEndpoint>()
|
||||
.HasIndex(m => m.ModelId)
|
||||
.IsUnique();
|
||||
|
||||
modelBuilder.Entity<SttProviderEndpoint>()
|
||||
.HasIndex(s => s.Name);
|
||||
|
||||
modelBuilder.Entity<SttProviderEndpoint>()
|
||||
.HasIndex(s => s.IsDefault);
|
||||
}
|
||||
}
|
||||
27
apps/api-server/Dockerfile
Normal file
27
apps/api-server/Dockerfile
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Multi-stage Docker build for D3RO Voice C# .NET API Backend & BackOffice
|
||||
FROM mcr.microsoft.com/dotnet/sdk:10.0-preview AS build
|
||||
WORKDIR /src
|
||||
|
||||
COPY D3ROVoice.Api.csproj ./
|
||||
RUN dotnet restore
|
||||
|
||||
COPY . ./
|
||||
RUN dotnet publish -c Release -o /app/out
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:10.0-preview AS runtime
|
||||
WORKDIR /app
|
||||
|
||||
# Create persistent storage directory for SQLite database
|
||||
RUN mkdir -p /app/data
|
||||
|
||||
COPY --from=build /app/out ./
|
||||
|
||||
EXPOSE 5000
|
||||
ENV ASPNETCORE_URLS=http://+:5000
|
||||
ENV ASPNETCORE_ENVIRONMENT=Production
|
||||
ENV DATA_DIR=/app/data
|
||||
|
||||
VOLUME ["/app/data"]
|
||||
|
||||
ENTRYPOINT ["dotnet", "D3ROVoice.Api.dll"]
|
||||
|
||||
175
apps/api-server/Dtos/Dtos.cs
Normal file
175
apps/api-server/Dtos/Dtos.cs
Normal file
|
|
@ -0,0 +1,175 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace D3ROVoice.Api.Dtos;
|
||||
|
||||
// Auth DTOs
|
||||
public record RegisterDto(string Email, string Password);
|
||||
public record LoginDto(string Email, string Password);
|
||||
public record AuthResponseDto(string Token, string Email, string Role, DateTime ExpiresAt);
|
||||
public record UserInfoDto(int Id, string Email, string Role, DateTime CreatedAt, DateTime? LastLoginAt, bool IsActive);
|
||||
|
||||
// LLM DTOs
|
||||
public record LlmGenerateRequest(string Prompt, string? Model = null, string? SystemPrompt = null, double Temperature = 0.7, int MaxTokens = 2048);
|
||||
public record LlmGenerateResponse(string Text, string Model, int PromptTokens, int CompletionTokens, double TotalDurationMs, decimal Cost);
|
||||
public record LlmChatMessage(string Role, string Content);
|
||||
public record LlmChatRequest(List<LlmChatMessage> Messages, string? Model = null, double Temperature = 0.7, int MaxTokens = 2048);
|
||||
|
||||
// Admin DTOs
|
||||
public record CreateModelEndpointDto(
|
||||
string ModelId,
|
||||
string ModelName,
|
||||
string Provider,
|
||||
string EndpointUrl,
|
||||
string ApiKey,
|
||||
decimal CostPer1kPromptTokens,
|
||||
decimal CostPer1kCompletionTokens
|
||||
);
|
||||
|
||||
public record UpdateModelEndpointDto(
|
||||
string ModelName,
|
||||
string Provider,
|
||||
string EndpointUrl,
|
||||
string ApiKey,
|
||||
decimal CostPer1kPromptTokens,
|
||||
decimal CostPer1kCompletionTokens,
|
||||
bool IsActive
|
||||
);
|
||||
|
||||
public record ServerStatsDto(
|
||||
int TotalUsers,
|
||||
int ActiveUsersToday,
|
||||
int TotalRequests,
|
||||
decimal TotalCost,
|
||||
double ServerUptimeSeconds,
|
||||
int ErrorCount,
|
||||
List<ServerErrorLogDto> RecentErrors
|
||||
);
|
||||
|
||||
public record ServerErrorLogDto(int Id, string ErrorType, string Message, string? Endpoint, DateTime CreatedAt);
|
||||
|
||||
public record UsageReportDto(
|
||||
int TotalRequests,
|
||||
int TotalPromptTokens,
|
||||
int TotalCompletionTokens,
|
||||
decimal TotalCost,
|
||||
List<UserUsageSummaryDto> UserSummaries,
|
||||
List<ModelUsageSummaryDto> ModelSummaries
|
||||
);
|
||||
|
||||
public record UserUsageSummaryDto(int UserId, string Email, int TotalRequests, int TotalTokens, decimal TotalCost);
|
||||
public record ModelUsageSummaryDto(string ModelId, string ModelName, int TotalRequests, int TotalTokens, decimal TotalCost);
|
||||
|
||||
// STT DTOs
|
||||
public record SttTranscribeRequest(
|
||||
string? AudioBase64 = null,
|
||||
string? Language = "ko",
|
||||
string? InitialPrompt = null,
|
||||
string? ModelId = null,
|
||||
string? Provider = null,
|
||||
double? Temperature = 0.0
|
||||
);
|
||||
|
||||
public record SttTranscribeResponse(
|
||||
string Text,
|
||||
double Confidence,
|
||||
string Language,
|
||||
double DurationSeconds,
|
||||
string Provider,
|
||||
string ModelId,
|
||||
double LatencyMs,
|
||||
decimal Cost
|
||||
);
|
||||
|
||||
public record SttProviderEndpointDto(
|
||||
int Id,
|
||||
string Name,
|
||||
string ProviderType,
|
||||
string EndpointUrl,
|
||||
string ApiKey,
|
||||
string ModelId,
|
||||
string Method,
|
||||
string Language,
|
||||
string? Prompt,
|
||||
double Temperature,
|
||||
decimal CostPerMinute,
|
||||
decimal CostPerSecond,
|
||||
bool IsDefault,
|
||||
bool IsActive,
|
||||
int FallbackPriority,
|
||||
string? ExtraHeadersJson,
|
||||
DateTime CreatedAt,
|
||||
DateTime? UpdatedAt
|
||||
);
|
||||
|
||||
public record CreateSttEndpointDto(
|
||||
string Name,
|
||||
string ProviderType,
|
||||
string EndpointUrl,
|
||||
string? ApiKey,
|
||||
string ModelId,
|
||||
string Method,
|
||||
string? Language,
|
||||
string? Prompt,
|
||||
double Temperature,
|
||||
decimal CostPerMinute,
|
||||
decimal CostPerSecond,
|
||||
bool IsDefault,
|
||||
bool IsActive,
|
||||
int FallbackPriority,
|
||||
string? ExtraHeadersJson
|
||||
);
|
||||
|
||||
public record UpdateSttEndpointDto(
|
||||
string Name,
|
||||
string ProviderType,
|
||||
string EndpointUrl,
|
||||
string? ApiKey,
|
||||
string ModelId,
|
||||
string Method,
|
||||
string? Language,
|
||||
string? Prompt,
|
||||
double Temperature,
|
||||
decimal CostPerMinute,
|
||||
decimal CostPerSecond,
|
||||
bool IsDefault,
|
||||
bool IsActive,
|
||||
int FallbackPriority,
|
||||
string? ExtraHeadersJson
|
||||
);
|
||||
|
||||
public record SttTestResultDto(
|
||||
bool Success,
|
||||
string Message,
|
||||
double LatencyMs,
|
||||
string? TranscriptPreview,
|
||||
string? Provider,
|
||||
string? ModelId
|
||||
);
|
||||
|
||||
public record SttUsageReportDto(
|
||||
int TotalTranscriptions,
|
||||
double TotalAudioMinutes,
|
||||
decimal TotalCost,
|
||||
double AvgLatencyMs,
|
||||
List<SttProviderUsageSummaryDto> ProviderSummaries,
|
||||
List<SttUserUsageSummaryDto> UserSummaries
|
||||
);
|
||||
|
||||
public record SttProviderUsageSummaryDto(
|
||||
string Provider,
|
||||
string ModelId,
|
||||
int TotalRequests,
|
||||
double TotalAudioMinutes,
|
||||
decimal TotalCost,
|
||||
double AvgLatencyMs
|
||||
);
|
||||
|
||||
public record SttUserUsageSummaryDto(
|
||||
int UserId,
|
||||
string Email,
|
||||
int TotalRequests,
|
||||
double TotalAudioMinutes,
|
||||
decimal TotalCost
|
||||
);
|
||||
|
||||
278
apps/api-server/Program.cs
Normal file
278
apps/api-server/Program.cs
Normal file
|
|
@ -0,0 +1,278 @@
|
|||
using System.Text;
|
||||
using D3ROVoice.Api.Data;
|
||||
using D3ROVoice.Api.Services;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Microsoft.OpenApi;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
var serverStartTime = DateTime.UtcNow;
|
||||
|
||||
// Add Services to Container
|
||||
builder.Services.AddControllers();
|
||||
builder.Services.AddHttpClient();
|
||||
builder.Services.AddEndpointsApiExplorer();
|
||||
|
||||
builder.Services.AddSwaggerGen(c =>
|
||||
{
|
||||
c.SwaggerDoc("v1", new OpenApiInfo
|
||||
{
|
||||
Title = "D3RO Voice Cloud API & BackOffice",
|
||||
Version = "v1",
|
||||
Description = "D3RO Voice Self-Hosted Cloud Backend for NAS & Docker"
|
||||
});
|
||||
});
|
||||
|
||||
// Database Connection (SQLite with configurable NAS volume directory)
|
||||
var dataDir = builder.Configuration["DATA_DIR"]
|
||||
?? (Directory.Exists("/app/data") ? "/app/data" : Path.Combine(AppContext.BaseDirectory, "data"));
|
||||
|
||||
var dbPath = builder.Configuration["DB_PATH"]
|
||||
?? builder.Configuration["DATABASE_PATH"]
|
||||
?? Path.Combine(dataDir, "d3ro_api.db");
|
||||
|
||||
var dbDirectory = Path.GetDirectoryName(dbPath);
|
||||
if (!string.IsNullOrEmpty(dbDirectory) && !Directory.Exists(dbDirectory))
|
||||
{
|
||||
Directory.CreateDirectory(dbDirectory);
|
||||
}
|
||||
|
||||
builder.Services.AddDbContext<AppDbContext>(options =>
|
||||
options.UseSqlite($"Data Source={dbPath}"));
|
||||
|
||||
// Services Registration
|
||||
builder.Services.AddScoped<IAuthService, AuthService>();
|
||||
builder.Services.AddScoped<ILlmProxyService, LlmProxyService>();
|
||||
builder.Services.AddScoped<ISttProxyService, SttProxyService>();
|
||||
|
||||
// JWT Authentication Configuration
|
||||
var secretKey = builder.Configuration["Jwt:SecretKey"]
|
||||
?? builder.Configuration["JWT_SECRET"]
|
||||
?? "D3ROVoice_Super_Secure_Secret_Key_2026_Key!";
|
||||
var keyBytes = Encoding.UTF8.GetBytes(secretKey);
|
||||
|
||||
builder.Services.AddAuthentication(options =>
|
||||
{
|
||||
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
})
|
||||
.AddJwtBearer(options =>
|
||||
{
|
||||
options.RequireHttpsMetadata = false;
|
||||
options.SaveToken = true;
|
||||
options.TokenValidationParameters = new TokenValidationParameters
|
||||
{
|
||||
ValidateIssuerSigningKey = true,
|
||||
IssuerSigningKey = new SymmetricSecurityKey(keyBytes),
|
||||
ValidateIssuer = false,
|
||||
ValidateAudience = false,
|
||||
ClockSkew = TimeSpan.Zero
|
||||
};
|
||||
});
|
||||
|
||||
builder.Services.AddCors(options =>
|
||||
{
|
||||
options.AddPolicy("AllowAll", policy =>
|
||||
{
|
||||
policy.AllowAnyOrigin()
|
||||
.AllowAnyMethod()
|
||||
.AllowAnyHeader();
|
||||
});
|
||||
});
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
// Ensure Database is Created & Initialized with default data
|
||||
using (var scope = app.Services.CreateScope())
|
||||
{
|
||||
var db = scope.ServiceProvider.GetRequiredService<AppDbContext>();
|
||||
db.Database.EnsureCreated();
|
||||
|
||||
// Default Model Endpoints if empty
|
||||
if (!db.ModelEndpoints.Any())
|
||||
{
|
||||
db.ModelEndpoints.AddRange(
|
||||
new ServiceModelEndpoint
|
||||
{
|
||||
ModelId = "d3ro-gpt4o-mini",
|
||||
ModelName = "D3RO Standard Model (GPT-4o Mini)",
|
||||
Provider = "OpenAI",
|
||||
EndpointUrl = "https://api.openai.com/v1/chat/completions",
|
||||
CostPer1kPromptTokens = 0.00015m,
|
||||
CostPer1kCompletionTokens = 0.00060m,
|
||||
IsActive = true
|
||||
},
|
||||
new ServiceModelEndpoint
|
||||
{
|
||||
ModelId = "d3ro-claude-35-sonnet",
|
||||
ModelName = "D3RO Pro Model (Claude 3.5 Sonnet)",
|
||||
Provider = "Anthropic",
|
||||
EndpointUrl = "https://api.anthropic.com/v1/messages",
|
||||
CostPer1kPromptTokens = 0.00300m,
|
||||
CostPer1kCompletionTokens = 0.01500m,
|
||||
IsActive = true
|
||||
}
|
||||
);
|
||||
db.SaveChanges();
|
||||
}
|
||||
|
||||
// Default STT Provider Endpoints if empty
|
||||
if (!db.SttProviderEndpoints.Any())
|
||||
{
|
||||
db.SttProviderEndpoints.AddRange(
|
||||
new SttProviderEndpoint
|
||||
{
|
||||
Name = "Groq Whisper LPU Turbo (Ultra Fast)",
|
||||
ProviderType = "groq",
|
||||
EndpointUrl = "https://api.groq.com/openai/v1/audio/transcriptions",
|
||||
ApiKey = builder.Configuration["GROQ_API_KEY"] ?? "",
|
||||
ModelId = "whisper-large-v3-turbo",
|
||||
Method = "multipart",
|
||||
Language = "ko",
|
||||
CostPerMinute = 0.000500m,
|
||||
CostPerSecond = 0.000008m,
|
||||
IsDefault = true,
|
||||
IsActive = true,
|
||||
FallbackPriority = 1,
|
||||
CreatedAt = DateTime.UtcNow
|
||||
},
|
||||
new SttProviderEndpoint
|
||||
{
|
||||
Name = "OpenAI Whisper Official",
|
||||
ProviderType = "openai",
|
||||
EndpointUrl = "https://api.openai.com/v1/audio/transcriptions",
|
||||
ApiKey = builder.Configuration["OPENAI_API_KEY"] ?? "",
|
||||
ModelId = "whisper-1",
|
||||
Method = "multipart",
|
||||
Language = "ko",
|
||||
CostPerMinute = 0.006000m,
|
||||
CostPerSecond = 0.000100m,
|
||||
IsDefault = false,
|
||||
IsActive = true,
|
||||
FallbackPriority = 2,
|
||||
CreatedAt = DateTime.UtcNow
|
||||
},
|
||||
new SttProviderEndpoint
|
||||
{
|
||||
Name = "Deepgram Nova-3 Industry Standard",
|
||||
ProviderType = "deepgram",
|
||||
EndpointUrl = "https://api.deepgram.com/v1/listen",
|
||||
ApiKey = builder.Configuration["DEEPGRAM_API_KEY"] ?? "",
|
||||
ModelId = "nova-3",
|
||||
Method = "binary-stream",
|
||||
Language = "ko",
|
||||
CostPerMinute = 0.004300m,
|
||||
CostPerSecond = 0.000072m,
|
||||
IsDefault = false,
|
||||
IsActive = true,
|
||||
FallbackPriority = 3,
|
||||
CreatedAt = DateTime.UtcNow
|
||||
},
|
||||
new SttProviderEndpoint
|
||||
{
|
||||
Name = "Google Gemini 2.0 Flash / Cloud STT",
|
||||
ProviderType = "google",
|
||||
EndpointUrl = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent",
|
||||
ApiKey = builder.Configuration["GEMINI_API_KEY"] ?? builder.Configuration["GOOGLE_API_KEY"] ?? "",
|
||||
ModelId = "gemini-2.0-flash",
|
||||
Method = "json-base64",
|
||||
Language = "ko",
|
||||
CostPerMinute = 0.001000m,
|
||||
CostPerSecond = 0.000017m,
|
||||
IsDefault = false,
|
||||
IsActive = true,
|
||||
FallbackPriority = 4,
|
||||
CreatedAt = DateTime.UtcNow
|
||||
},
|
||||
new SttProviderEndpoint
|
||||
{
|
||||
Name = "Local Sidecar / Self-Hosted Whisper",
|
||||
ProviderType = "local-sidecar",
|
||||
EndpointUrl = "http://localhost:8971/stt/transcribe",
|
||||
ApiKey = "",
|
||||
ModelId = "whisper-large-v3-turbo",
|
||||
Method = "multipart",
|
||||
Language = "ko",
|
||||
CostPerMinute = 0.000000m,
|
||||
CostPerSecond = 0.000000m,
|
||||
IsDefault = false,
|
||||
IsActive = true,
|
||||
FallbackPriority = 5,
|
||||
CreatedAt = DateTime.UtcNow
|
||||
}
|
||||
);
|
||||
db.SaveChanges();
|
||||
}
|
||||
|
||||
// Default Admin User seed & update password to Test1234!
|
||||
var adminUser = db.Users.FirstOrDefault(u => u.Email == "admin" || u.Email == "admin@d3ro.voice");
|
||||
var passwordHash = AuthService.HashPassword("Test1234!");
|
||||
if (adminUser == null)
|
||||
{
|
||||
db.Users.AddRange(
|
||||
new User
|
||||
{
|
||||
Email = "admin",
|
||||
PasswordHash = passwordHash,
|
||||
Role = "SuperAdmin",
|
||||
CreatedAt = DateTime.UtcNow,
|
||||
IsActive = true
|
||||
},
|
||||
new User
|
||||
{
|
||||
Email = "admin@d3ro.voice",
|
||||
PasswordHash = passwordHash,
|
||||
Role = "SuperAdmin",
|
||||
CreatedAt = DateTime.UtcNow,
|
||||
IsActive = true
|
||||
}
|
||||
);
|
||||
db.SaveChanges();
|
||||
}
|
||||
else
|
||||
{
|
||||
adminUser.PasswordHash = passwordHash;
|
||||
adminUser.Role = "SuperAdmin";
|
||||
adminUser.IsActive = true;
|
||||
db.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI();
|
||||
|
||||
app.UseCors("AllowAll");
|
||||
app.UseDefaultFiles();
|
||||
app.UseStaticFiles();
|
||||
|
||||
app.UseAuthentication();
|
||||
app.UseAuthorization();
|
||||
|
||||
// Health Check Endpoints for Docker & NAS Container Monitoring
|
||||
app.MapGet("/health", () => Results.Ok(new
|
||||
{
|
||||
status = "Healthy",
|
||||
service = "D3RO Voice Cloud API",
|
||||
version = "1.0.0",
|
||||
uptimeSeconds = (DateTime.UtcNow - serverStartTime).TotalSeconds,
|
||||
database = File.Exists(dbPath) ? "Connected" : "Initializing",
|
||||
timestamp = DateTime.UtcNow
|
||||
}));
|
||||
|
||||
app.MapGet("/api/health", () => Results.Ok(new
|
||||
{
|
||||
status = "Healthy",
|
||||
service = "D3RO Voice Cloud API",
|
||||
version = "1.0.0",
|
||||
uptimeSeconds = (DateTime.UtcNow - serverStartTime).TotalSeconds,
|
||||
database = File.Exists(dbPath) ? "Connected" : "Initializing",
|
||||
timestamp = DateTime.UtcNow
|
||||
}));
|
||||
|
||||
app.MapControllers();
|
||||
|
||||
// Fallback to Admin BackOffice UI index.html
|
||||
app.MapFallbackToFile("/admin/{*path}", "admin/index.html");
|
||||
|
||||
app.Run();
|
||||
23
apps/api-server/Properties/launchSettings.json
Normal file
23
apps/api-server/Properties/launchSettings.json
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"$schema": "https://json.schemastore.org/launchsettings.json",
|
||||
"profiles": {
|
||||
"http": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": false,
|
||||
"applicationUrl": "http://localhost:5223",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"https": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": false,
|
||||
"applicationUrl": "https://localhost:7191;http://localhost:5223",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
121
apps/api-server/Services/AuthService.cs
Normal file
121
apps/api-server/Services/AuthService.cs
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
using System;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.Security.Claims;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using D3ROVoice.Api.Data;
|
||||
using D3ROVoice.Api.Dtos;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
|
||||
namespace D3ROVoice.Api.Services;
|
||||
|
||||
public interface IAuthService
|
||||
{
|
||||
Task<AuthResponseDto> RegisterAsync(RegisterDto dto);
|
||||
Task<AuthResponseDto> LoginAsync(LoginDto dto);
|
||||
Task<UserInfoDto?> GetUserByEmailAsync(string email);
|
||||
}
|
||||
|
||||
public class AuthService : IAuthService
|
||||
{
|
||||
private readonly AppDbContext _db;
|
||||
private readonly IConfiguration _config;
|
||||
|
||||
public AuthService(AppDbContext db, IConfiguration config)
|
||||
{
|
||||
_db = db;
|
||||
_config = config;
|
||||
}
|
||||
|
||||
public async Task<AuthResponseDto> RegisterAsync(RegisterDto dto)
|
||||
{
|
||||
var existing = await _db.Users.FirstOrDefaultAsync(u => u.Email.ToLower() == dto.Email.ToLower());
|
||||
if (existing != null)
|
||||
{
|
||||
throw new InvalidOperationException("이미 등록된 이메일 주소입니다.");
|
||||
}
|
||||
|
||||
var isFirstUser = !await _db.Users.AnyAsync();
|
||||
var user = new User
|
||||
{
|
||||
Email = dto.Email.Trim().ToLower(),
|
||||
PasswordHash = HashPassword(dto.Password),
|
||||
Role = isFirstUser ? "Admin" : "User",
|
||||
CreatedAt = DateTime.UtcNow,
|
||||
IsActive = true
|
||||
};
|
||||
|
||||
_db.Users.Add(user);
|
||||
await _db.SaveChangesAsync();
|
||||
|
||||
return GenerateToken(user);
|
||||
}
|
||||
|
||||
public async Task<AuthResponseDto> LoginAsync(LoginDto dto)
|
||||
{
|
||||
var user = await _db.Users.FirstOrDefaultAsync(u => u.Email.ToLower() == dto.Email.ToLower());
|
||||
if (user == null || !VerifyPassword(dto.Password, user.PasswordHash))
|
||||
{
|
||||
throw new UnauthorizedAccessException("이메일 또는 비밀번호가 올바르지 않습니다.");
|
||||
}
|
||||
|
||||
if (!user.IsActive)
|
||||
{
|
||||
throw new UnauthorizedAccessException("비활성화된 계정입니다. 관리자에게 문의하세요.");
|
||||
}
|
||||
|
||||
user.LastLoginAt = DateTime.UtcNow;
|
||||
await _db.SaveChangesAsync();
|
||||
|
||||
return GenerateToken(user);
|
||||
}
|
||||
|
||||
public async Task<UserInfoDto?> GetUserByEmailAsync(string email)
|
||||
{
|
||||
var user = await _db.Users.AsNoTracking().FirstOrDefaultAsync(u => u.Email.ToLower() == email.ToLower());
|
||||
if (user == null) return null;
|
||||
return new UserInfoDto(user.Id, user.Email, user.Role, user.CreatedAt, user.LastLoginAt, user.IsActive);
|
||||
}
|
||||
|
||||
private AuthResponseDto GenerateToken(User user)
|
||||
{
|
||||
var secretKey = _config["Jwt:SecretKey"] ?? "D3ROVoice_Super_Secure_Secret_Key_2026_Key!";
|
||||
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey));
|
||||
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
|
||||
|
||||
var claims = new[]
|
||||
{
|
||||
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
|
||||
new Claim(ClaimTypes.Email, user.Email),
|
||||
new Claim(ClaimTypes.Role, user.Role)
|
||||
};
|
||||
|
||||
var expiresAt = DateTime.UtcNow.AddDays(30);
|
||||
|
||||
var token = new JwtSecurityToken(
|
||||
issuer: _config["Jwt:Issuer"] ?? "D3ROVoiceApi",
|
||||
audience: _config["Jwt:Audience"] ?? "D3ROVoiceClient",
|
||||
claims: claims,
|
||||
expires: expiresAt,
|
||||
signingCredentials: creds
|
||||
);
|
||||
|
||||
var tokenHandler = new JwtSecurityTokenHandler();
|
||||
return new AuthResponseDto(tokenHandler.WriteToken(token), user.Email, user.Role, expiresAt);
|
||||
}
|
||||
|
||||
public static string HashPassword(string password)
|
||||
{
|
||||
using var sha256 = SHA256.Create();
|
||||
var bytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(password + "D3RO_SALT_2026"));
|
||||
return Convert.ToBase64String(bytes);
|
||||
}
|
||||
|
||||
private static bool VerifyPassword(string password, string hash)
|
||||
{
|
||||
return HashPassword(password) == hash;
|
||||
}
|
||||
}
|
||||
185
apps/api-server/Services/LlmProxyService.cs
Normal file
185
apps/api-server/Services/LlmProxyService.cs
Normal file
|
|
@ -0,0 +1,185 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using D3ROVoice.Api.Data;
|
||||
using D3ROVoice.Api.Dtos;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace D3ROVoice.Api.Services;
|
||||
|
||||
public interface ILlmProxyService
|
||||
{
|
||||
Task<LlmGenerateResponse> GenerateAsync(int userId, string userEmail, LlmGenerateRequest request);
|
||||
Task<LlmGenerateResponse> ChatAsync(int userId, string userEmail, LlmChatRequest request);
|
||||
}
|
||||
|
||||
public class LlmProxyService : ILlmProxyService
|
||||
{
|
||||
private readonly AppDbContext _db;
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
private readonly ILogger<LlmProxyService> _logger;
|
||||
|
||||
public LlmProxyService(AppDbContext db, IHttpClientFactory httpClientFactory, ILogger<LlmProxyService> logger)
|
||||
{
|
||||
_db = db;
|
||||
_httpClientFactory = httpClientFactory;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public async Task<LlmGenerateResponse> GenerateAsync(int userId, string userEmail, LlmGenerateRequest request)
|
||||
{
|
||||
var modelId = string.IsNullOrWhiteSpace(request.Model) ? "d3ro-gpt4o-mini" : request.Model;
|
||||
var endpoint = await _db.ModelEndpoints.FirstOrDefaultAsync(m => m.ModelId == modelId && m.IsActive);
|
||||
|
||||
if (endpoint == null)
|
||||
{
|
||||
// fallback: first active model endpoint or create default mockup endpoint
|
||||
endpoint = await _db.ModelEndpoints.FirstOrDefaultAsync(m => m.IsActive);
|
||||
if (endpoint == null)
|
||||
{
|
||||
endpoint = new ServiceModelEndpoint
|
||||
{
|
||||
ModelId = "d3ro-gpt4o-mini",
|
||||
ModelName = "D3RO Default Model",
|
||||
Provider = "Mock",
|
||||
EndpointUrl = "https://api.openai.com/v1/chat/completions",
|
||||
CostPer1kPromptTokens = 0.00015m,
|
||||
CostPer1kCompletionTokens = 0.00060m,
|
||||
IsActive = true
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
var sw = Stopwatch.StartNew();
|
||||
int promptTokens = Math.Max(10, request.Prompt.Length / 4);
|
||||
int completionTokens = 0;
|
||||
string responseText = "";
|
||||
|
||||
if (endpoint.Provider == "Mock" || string.IsNullOrWhiteSpace(endpoint.ApiKey))
|
||||
{
|
||||
// Intelligent local echo / mock processing for standalone API testing
|
||||
responseText = $"[D3RO Online Model - {endpoint.ModelName}] {request.Prompt}";
|
||||
completionTokens = Math.Max(15, responseText.Length / 4);
|
||||
sw.Stop();
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
var client = _httpClientFactory.CreateClient();
|
||||
client.Timeout = TimeSpan.FromSeconds(60);
|
||||
|
||||
var payload = new
|
||||
{
|
||||
model = endpoint.ModelId,
|
||||
messages = new[]
|
||||
{
|
||||
new { role = "system", content = request.SystemPrompt ?? "You are a helpful AI assistant." },
|
||||
new { role = "user", content = request.Prompt }
|
||||
},
|
||||
temperature = request.Temperature,
|
||||
max_tokens = request.MaxTokens
|
||||
};
|
||||
|
||||
var httpRequest = new HttpRequestMessage(HttpMethod.Post, endpoint.EndpointUrl)
|
||||
{
|
||||
Content = new StringContent(JsonSerializer.Serialize(payload), Encoding.UTF8, "application/json")
|
||||
};
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(endpoint.ApiKey))
|
||||
{
|
||||
httpRequest.Headers.Authorization = new AuthenticationHeaderValue("Bearer", endpoint.ApiKey);
|
||||
}
|
||||
|
||||
var httpResponse = await client.SendAsync(httpRequest);
|
||||
sw.Stop();
|
||||
|
||||
if (httpResponse.IsSuccessStatusCode)
|
||||
{
|
||||
var jsonStr = await httpResponse.Content.ReadAsStringAsync();
|
||||
using var doc = JsonDocument.Parse(jsonStr);
|
||||
var root = doc.RootElement;
|
||||
|
||||
if (root.TryGetProperty("choices", out var choices) && choices.GetArrayLength() > 0)
|
||||
{
|
||||
var msg = choices[0].GetProperty("message").GetProperty("content").GetString();
|
||||
responseText = msg ?? "";
|
||||
}
|
||||
|
||||
if (root.TryGetProperty("usage", out var usage))
|
||||
{
|
||||
if (usage.TryGetProperty("prompt_tokens", out var pt)) promptTokens = pt.GetInt32();
|
||||
if (usage.TryGetProperty("completion_tokens", out var ct)) completionTokens = ct.GetInt32();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.LogWarning("Remote endpoint returned non-success status: {Status}", httpResponse.StatusCode);
|
||||
responseText = $"[Processed via {endpoint.ModelName}] {request.Prompt}";
|
||||
completionTokens = Math.Max(15, responseText.Length / 4);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
sw.Stop();
|
||||
_logger.LogError(ex, "Error calling model endpoint {Endpoint}", endpoint.EndpointUrl);
|
||||
|
||||
// Record Error log
|
||||
_db.ErrorLogs.Add(new ServerErrorLog
|
||||
{
|
||||
ErrorType = "ModelProxyError",
|
||||
Message = ex.Message,
|
||||
StackTrace = ex.StackTrace,
|
||||
Endpoint = endpoint.EndpointUrl,
|
||||
CreatedAt = DateTime.UtcNow
|
||||
});
|
||||
|
||||
responseText = $"[D3RO Fallback Service] {request.Prompt}";
|
||||
completionTokens = Math.Max(15, responseText.Length / 4);
|
||||
}
|
||||
}
|
||||
|
||||
decimal promptCost = (promptTokens / 1000m) * endpoint.CostPer1kPromptTokens;
|
||||
decimal completionCost = (completionTokens / 1000m) * endpoint.CostPer1kCompletionTokens;
|
||||
decimal totalCost = promptCost + completionCost;
|
||||
|
||||
// Log usage to database
|
||||
var usageLog = new ApiUsageLog
|
||||
{
|
||||
UserId = userId,
|
||||
UserEmail = userEmail,
|
||||
ModelEndpointId = endpoint.Id,
|
||||
ModelId = endpoint.ModelId,
|
||||
PromptTokens = promptTokens,
|
||||
CompletionTokens = completionTokens,
|
||||
TotalTokens = promptTokens + completionTokens,
|
||||
CalculatedCost = totalCost,
|
||||
RequestDurationMs = (int)sw.ElapsedMilliseconds,
|
||||
StatusCode = 200,
|
||||
CreatedAt = DateTime.UtcNow
|
||||
};
|
||||
|
||||
_db.UsageLogs.Add(usageLog);
|
||||
await _db.SaveChangesAsync();
|
||||
|
||||
return new LlmGenerateResponse(
|
||||
responseText,
|
||||
endpoint.ModelId,
|
||||
promptTokens,
|
||||
completionTokens,
|
||||
sw.ElapsedMilliseconds,
|
||||
totalCost
|
||||
);
|
||||
}
|
||||
|
||||
public async Task<LlmGenerateResponse> ChatAsync(int userId, string userEmail, LlmChatRequest request)
|
||||
{
|
||||
var lastMsg = request.Messages.Count > 0 ? request.Messages[^1].Content : "";
|
||||
return await GenerateAsync(userId, userEmail, new LlmGenerateRequest(lastMsg, request.Model, null, request.Temperature, request.MaxTokens));
|
||||
}
|
||||
}
|
||||
1134
apps/api-server/Services/SttProxyService.cs
Normal file
1134
apps/api-server/Services/SttProxyService.cs
Normal file
File diff suppressed because it is too large
Load diff
8
apps/api-server/appsettings.Development.json
Normal file
8
apps/api-server/appsettings.Development.json
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
}
|
||||
}
|
||||
9
apps/api-server/appsettings.json
Normal file
9
apps/api-server/appsettings.json
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
||||
585
apps/api-server/bin/Debug/net10.0/D3ROVoice.Api.deps.json
Normal file
585
apps/api-server/bin/Debug/net10.0/D3ROVoice.Api.deps.json
Normal file
|
|
@ -0,0 +1,585 @@
|
|||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v10.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v10.0": {
|
||||
"D3ROVoice.Api/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Authentication.JwtBearer": "10.0.10",
|
||||
"Microsoft.AspNetCore.OpenApi": "10.0.8",
|
||||
"Microsoft.EntityFrameworkCore.Sqlite": "10.0.10",
|
||||
"Swashbuckle.AspNetCore": "10.2.3",
|
||||
"System.IdentityModel.Tokens.Jwt": "8.22.0"
|
||||
},
|
||||
"runtime": {
|
||||
"D3ROVoice.Api.dll": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Authentication.JwtBearer/10.0.10": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.19.2"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": {
|
||||
"assemblyVersion": "10.0.10.0",
|
||||
"fileVersion": "10.0.1026.32716"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.OpenApi/10.0.8": {
|
||||
"dependencies": {
|
||||
"Microsoft.OpenApi": "2.7.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.OpenApi.dll": {
|
||||
"assemblyVersion": "10.0.8.0",
|
||||
"fileVersion": "10.0.826.23019"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Bcl.Cryptography/10.0.2": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Bcl.Cryptography.dll": {
|
||||
"assemblyVersion": "10.0.0.2",
|
||||
"fileVersion": "10.0.225.61305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Data.Sqlite.Core/10.0.10": {
|
||||
"dependencies": {
|
||||
"SQLitePCLRaw.core": "2.1.11"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Data.Sqlite.dll": {
|
||||
"assemblyVersion": "10.0.10.0",
|
||||
"fileVersion": "10.0.1026.32716"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore/10.0.10": {
|
||||
"dependencies": {
|
||||
"Microsoft.EntityFrameworkCore.Abstractions": "10.0.10"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.EntityFrameworkCore.dll": {
|
||||
"assemblyVersion": "10.0.10.0",
|
||||
"fileVersion": "10.0.1026.32716"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Abstractions/10.0.10": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
|
||||
"assemblyVersion": "10.0.10.0",
|
||||
"fileVersion": "10.0.1026.32716"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Relational/10.0.10": {
|
||||
"dependencies": {
|
||||
"Microsoft.EntityFrameworkCore": "10.0.10"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.EntityFrameworkCore.Relational.dll": {
|
||||
"assemblyVersion": "10.0.10.0",
|
||||
"fileVersion": "10.0.1026.32716"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Sqlite/10.0.10": {
|
||||
"dependencies": {
|
||||
"Microsoft.EntityFrameworkCore.Sqlite.Core": "10.0.10",
|
||||
"Microsoft.Extensions.DependencyModel": "10.0.10",
|
||||
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.11",
|
||||
"SQLitePCLRaw.core": "2.1.11"
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Sqlite.Core/10.0.10": {
|
||||
"dependencies": {
|
||||
"Microsoft.Data.Sqlite.Core": "10.0.10",
|
||||
"Microsoft.EntityFrameworkCore.Relational": "10.0.10",
|
||||
"Microsoft.Extensions.DependencyModel": "10.0.10",
|
||||
"SQLitePCLRaw.core": "2.1.11"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.EntityFrameworkCore.Sqlite.dll": {
|
||||
"assemblyVersion": "10.0.10.0",
|
||||
"fileVersion": "10.0.1026.32716"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyModel/10.0.10": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.DependencyModel.dll": {
|
||||
"assemblyVersion": "10.0.0.10",
|
||||
"fileVersion": "10.0.1026.32716"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Abstractions/8.22.0": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.IdentityModel.Abstractions.dll": {
|
||||
"assemblyVersion": "8.22.0.0",
|
||||
"fileVersion": "8.22.0.26208"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.JsonWebTokens/8.22.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Tokens": "8.22.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
|
||||
"assemblyVersion": "8.22.0.0",
|
||||
"fileVersion": "8.22.0.26208"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Logging/8.22.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Abstractions": "8.22.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.IdentityModel.Logging.dll": {
|
||||
"assemblyVersion": "8.22.0.0",
|
||||
"fileVersion": "8.22.0.26208"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Protocols/8.19.2": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Tokens": "8.22.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.IdentityModel.Protocols.dll": {
|
||||
"assemblyVersion": "8.19.2.0",
|
||||
"fileVersion": "8.19.2.26195"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Protocols.OpenIdConnect/8.19.2": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Protocols": "8.19.2",
|
||||
"System.IdentityModel.Tokens.Jwt": "8.22.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": {
|
||||
"assemblyVersion": "8.19.2.0",
|
||||
"fileVersion": "8.19.2.26195"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Tokens/8.22.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Bcl.Cryptography": "10.0.2",
|
||||
"Microsoft.IdentityModel.Logging": "8.22.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.IdentityModel.Tokens.dll": {
|
||||
"assemblyVersion": "8.22.0.0",
|
||||
"fileVersion": "8.22.0.26208"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.OpenApi/2.7.5": {
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.OpenApi.dll": {
|
||||
"assemblyVersion": "2.7.5.0",
|
||||
"fileVersion": "2.7.5.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SQLitePCLRaw.bundle_e_sqlite3/2.1.11": {
|
||||
"dependencies": {
|
||||
"SQLitePCLRaw.lib.e_sqlite3": "2.1.11",
|
||||
"SQLitePCLRaw.provider.e_sqlite3": "2.1.11"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {
|
||||
"assemblyVersion": "2.1.11.2622",
|
||||
"fileVersion": "2.1.11.2622"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SQLitePCLRaw.core/2.1.11": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/SQLitePCLRaw.core.dll": {
|
||||
"assemblyVersion": "2.1.11.2622",
|
||||
"fileVersion": "2.1.11.2622"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SQLitePCLRaw.lib.e_sqlite3/2.1.11": {
|
||||
"runtimeTargets": {
|
||||
"runtimes/browser-wasm/nativeassets/net9.0/e_sqlite3.a": {
|
||||
"rid": "browser-wasm",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-arm/native/libe_sqlite3.so": {
|
||||
"rid": "linux-arm",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-arm64/native/libe_sqlite3.so": {
|
||||
"rid": "linux-arm64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-armel/native/libe_sqlite3.so": {
|
||||
"rid": "linux-armel",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-mips64/native/libe_sqlite3.so": {
|
||||
"rid": "linux-mips64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-musl-arm/native/libe_sqlite3.so": {
|
||||
"rid": "linux-musl-arm",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-musl-arm64/native/libe_sqlite3.so": {
|
||||
"rid": "linux-musl-arm64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-musl-riscv64/native/libe_sqlite3.so": {
|
||||
"rid": "linux-musl-riscv64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-musl-s390x/native/libe_sqlite3.so": {
|
||||
"rid": "linux-musl-s390x",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-musl-x64/native/libe_sqlite3.so": {
|
||||
"rid": "linux-musl-x64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-ppc64le/native/libe_sqlite3.so": {
|
||||
"rid": "linux-ppc64le",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-riscv64/native/libe_sqlite3.so": {
|
||||
"rid": "linux-riscv64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-s390x/native/libe_sqlite3.so": {
|
||||
"rid": "linux-s390x",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-x64/native/libe_sqlite3.so": {
|
||||
"rid": "linux-x64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/linux-x86/native/libe_sqlite3.so": {
|
||||
"rid": "linux-x86",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib": {
|
||||
"rid": "maccatalyst-arm64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/maccatalyst-x64/native/libe_sqlite3.dylib": {
|
||||
"rid": "maccatalyst-x64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/osx-arm64/native/libe_sqlite3.dylib": {
|
||||
"rid": "osx-arm64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/osx-x64/native/libe_sqlite3.dylib": {
|
||||
"rid": "osx-x64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/win-arm/native/e_sqlite3.dll": {
|
||||
"rid": "win-arm",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/win-arm64/native/e_sqlite3.dll": {
|
||||
"rid": "win-arm64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/win-x64/native/e_sqlite3.dll": {
|
||||
"rid": "win-x64",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/win-x86/native/e_sqlite3.dll": {
|
||||
"rid": "win-x86",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SQLitePCLRaw.provider.e_sqlite3/2.1.11": {
|
||||
"dependencies": {
|
||||
"SQLitePCLRaw.core": "2.1.11"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll": {
|
||||
"assemblyVersion": "2.1.11.2622",
|
||||
"fileVersion": "2.1.11.2622"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Swashbuckle.AspNetCore/10.2.3": {
|
||||
"dependencies": {
|
||||
"Swashbuckle.AspNetCore.Swagger": "10.2.3",
|
||||
"Swashbuckle.AspNetCore.SwaggerGen": "10.2.3",
|
||||
"Swashbuckle.AspNetCore.SwaggerUI": "10.2.3"
|
||||
}
|
||||
},
|
||||
"Swashbuckle.AspNetCore.Swagger/10.2.3": {
|
||||
"dependencies": {
|
||||
"Microsoft.OpenApi": "2.7.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Swashbuckle.AspNetCore.Swagger.dll": {
|
||||
"assemblyVersion": "10.2.3.0",
|
||||
"fileVersion": "10.2.3.2721"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Swashbuckle.AspNetCore.SwaggerGen/10.2.3": {
|
||||
"dependencies": {
|
||||
"Swashbuckle.AspNetCore.Swagger": "10.2.3"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Swashbuckle.AspNetCore.SwaggerGen.dll": {
|
||||
"assemblyVersion": "10.2.3.0",
|
||||
"fileVersion": "10.2.3.2721"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Swashbuckle.AspNetCore.SwaggerUI/10.2.3": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Swashbuckle.AspNetCore.SwaggerUI.dll": {
|
||||
"assemblyVersion": "10.2.3.0",
|
||||
"fileVersion": "10.2.3.2721"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.IdentityModel.Tokens.Jwt/8.22.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.JsonWebTokens": "8.22.0",
|
||||
"Microsoft.IdentityModel.Tokens": "8.22.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/System.IdentityModel.Tokens.Jwt.dll": {
|
||||
"assemblyVersion": "8.22.0.0",
|
||||
"fileVersion": "8.22.0.26208"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"D3ROVoice.Api/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Microsoft.AspNetCore.Authentication.JwtBearer/10.0.10": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-VAcqS42zb9WJd9DjPdkVTS5YrQENmNzPNJuRu8VAW7x3TEWUipc4d4hHzVJdFB0h/KLdr4XcXZzRHcUOKVanMQ==",
|
||||
"path": "microsoft.aspnetcore.authentication.jwtbearer/10.0.10",
|
||||
"hashPath": "microsoft.aspnetcore.authentication.jwtbearer.10.0.10.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.OpenApi/10.0.8": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-cw24xHE2QaWwyEG9GQwFbjboyabub6Vd80DIItUGENzcQOa/BEnTrXsg2GADqWTmY/3ycqk9ToLGjgvF/VRlGA==",
|
||||
"path": "microsoft.aspnetcore.openapi/10.0.8",
|
||||
"hashPath": "microsoft.aspnetcore.openapi.10.0.8.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Bcl.Cryptography/10.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==",
|
||||
"path": "microsoft.bcl.cryptography/10.0.2",
|
||||
"hashPath": "microsoft.bcl.cryptography.10.0.2.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Data.Sqlite.Core/10.0.10": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-TPCs0ldm7AWqcKmp6f/Xr+14sat7hx4rHfRlS4RgCURBH2thEWbAKEyX7cCWr63zVJVOJIJZTg2cBiUXa8ys6g==",
|
||||
"path": "microsoft.data.sqlite.core/10.0.10",
|
||||
"hashPath": "microsoft.data.sqlite.core.10.0.10.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore/10.0.10": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-a0V7zj/VbYP6dTdWpUgE/r2PuLKtUGe2aJ0lVKkn/wP9ZhaxUz2kQydVfvOjCv2SKxlrqdBfHhPD4Cvlf+4ffA==",
|
||||
"path": "microsoft.entityframeworkcore/10.0.10",
|
||||
"hashPath": "microsoft.entityframeworkcore.10.0.10.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Abstractions/10.0.10": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-bOzrFCl6uZCjaSh2bG1ToRQRdx+iXvxosCg9hFyG9OWeAzOFI4xev9OqKeWfKf/kAHyox2JnbcvLVf2ceA7sqA==",
|
||||
"path": "microsoft.entityframeworkcore.abstractions/10.0.10",
|
||||
"hashPath": "microsoft.entityframeworkcore.abstractions.10.0.10.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Relational/10.0.10": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-wNonj40aZxia+GtuBiiD6ZqVh4h6y5Nje1bGdmzZ8/ui0QRsAN+S0SIrLHFCEGbG9cDbeaE40sh+Lr7o9rRs6g==",
|
||||
"path": "microsoft.entityframeworkcore.relational/10.0.10",
|
||||
"hashPath": "microsoft.entityframeworkcore.relational.10.0.10.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Sqlite/10.0.10": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-kzg9MuQNJvZQxAU+piSkEzc7/1tpW6n1nVSGGMObu2GgxLK8Nf+6fvZundaznTZ+O2KhfPZ8HFNCzMH3PWDUmA==",
|
||||
"path": "microsoft.entityframeworkcore.sqlite/10.0.10",
|
||||
"hashPath": "microsoft.entityframeworkcore.sqlite.10.0.10.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Sqlite.Core/10.0.10": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-YbVWMIouzwTKBiLms8boa7xeRT88wI14R1msv3XExFk9n0/sa8nU7MwDa1CKtfLGMJs7O7QWuS9/xhcQ72AD2A==",
|
||||
"path": "microsoft.entityframeworkcore.sqlite.core/10.0.10",
|
||||
"hashPath": "microsoft.entityframeworkcore.sqlite.core.10.0.10.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyModel/10.0.10": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-rfZA1RjR021RPqSmIPovfz2aOd79TGqJ9BengbjnzIISOVwjLmuSDnhCMmiY/1c6iYvGolQ1iNGzkav0u11XEA==",
|
||||
"path": "microsoft.extensions.dependencymodel/10.0.10",
|
||||
"hashPath": "microsoft.extensions.dependencymodel.10.0.10.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.IdentityModel.Abstractions/8.22.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-LU3V3owsu4vGpCg2kyL7SsQEuHwcoJ8FSNBqzLADzCf3/PcKUTcx5Plsd51DoTJMfK/WigXV/03UhaN5JXE6uQ==",
|
||||
"path": "microsoft.identitymodel.abstractions/8.22.0",
|
||||
"hashPath": "microsoft.identitymodel.abstractions.8.22.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.IdentityModel.JsonWebTokens/8.22.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-kv6peMLjALZLDAy2H3F77KjVRdwiscn2p/g3ui2chcbuEcAX2MpAbyDcYnJ7Vyh8jZ1aJWrniUMCDWoOgnu4NQ==",
|
||||
"path": "microsoft.identitymodel.jsonwebtokens/8.22.0",
|
||||
"hashPath": "microsoft.identitymodel.jsonwebtokens.8.22.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.IdentityModel.Logging/8.22.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-G9Tl0yXSlr2pkXv4EpXjO16M4q6oo9N/od+gNyOusZ8yM8LZg1H3f/QOMFuOJiV6znzY5MkAREU97JRRnqpEQw==",
|
||||
"path": "microsoft.identitymodel.logging/8.22.0",
|
||||
"hashPath": "microsoft.identitymodel.logging.8.22.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.IdentityModel.Protocols/8.19.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-sGxSsSrZXNmca6D+jHH2rVRyo2nNRd/g4H9CFbPmLLq0xgoH1U0orLWE5minfijw7+zq49tBs7txenbfAErRoQ==",
|
||||
"path": "microsoft.identitymodel.protocols/8.19.2",
|
||||
"hashPath": "microsoft.identitymodel.protocols.8.19.2.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.IdentityModel.Protocols.OpenIdConnect/8.19.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-1XOcyY36cVymzE3qKdzKaUEZ4Pzt7ZpSa14JZoPPK1NLFUkQDs85TCqpV6XDo0YjFXj6nVK00AfOHppjghjhtw==",
|
||||
"path": "microsoft.identitymodel.protocols.openidconnect/8.19.2",
|
||||
"hashPath": "microsoft.identitymodel.protocols.openidconnect.8.19.2.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.IdentityModel.Tokens/8.22.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-i4lywKKUuVmheCUA+w/q8QNPReNI0qanHI9hhz48AFqD1ljyb8sxPL2RbXOGiPV13XdJ4kxieL9ukS7tD43LxA==",
|
||||
"path": "microsoft.identitymodel.tokens/8.22.0",
|
||||
"hashPath": "microsoft.identitymodel.tokens.8.22.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.OpenApi/2.7.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==",
|
||||
"path": "microsoft.openapi/2.7.5",
|
||||
"hashPath": "microsoft.openapi.2.7.5.nupkg.sha512"
|
||||
},
|
||||
"SQLitePCLRaw.bundle_e_sqlite3/2.1.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-DC4nA7yWnf4UZdgJDF+9Mus4/cb0Y3Sfgi3gDnAoKNAIBwzkskNAbNbyu+u4atT0ruVlZNJfwZmwiEwE5oz9LQ==",
|
||||
"path": "sqlitepclraw.bundle_e_sqlite3/2.1.11",
|
||||
"hashPath": "sqlitepclraw.bundle_e_sqlite3.2.1.11.nupkg.sha512"
|
||||
},
|
||||
"SQLitePCLRaw.core/2.1.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-PK0GLFkfhZzLQeR3PJf71FmhtHox+U3vcY6ZtswoMjrefkB9k6ErNJEnwXqc5KgXDSjige2XXrezqS39gkpQKA==",
|
||||
"path": "sqlitepclraw.core/2.1.11",
|
||||
"hashPath": "sqlitepclraw.core.2.1.11.nupkg.sha512"
|
||||
},
|
||||
"SQLitePCLRaw.lib.e_sqlite3/2.1.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Ev2ytaXiOlWZ4b3R67GZBsemTINslLD1DCJr2xiacpn4tbapu0Q4dHEzSvZSMnVWeE5nlObU3VZN2p81q3XOYQ==",
|
||||
"path": "sqlitepclraw.lib.e_sqlite3/2.1.11",
|
||||
"hashPath": "sqlitepclraw.lib.e_sqlite3.2.1.11.nupkg.sha512"
|
||||
},
|
||||
"SQLitePCLRaw.provider.e_sqlite3/2.1.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Y/0ZkR+r0Cg3DQFuCl1RBnv/tmxpIZRU3HUvelPw6MVaKHwYYR8YNvgs0vuNuXCMvlyJ+Fh88U1D4tah1tt6qw==",
|
||||
"path": "sqlitepclraw.provider.e_sqlite3/2.1.11",
|
||||
"hashPath": "sqlitepclraw.provider.e_sqlite3.2.1.11.nupkg.sha512"
|
||||
},
|
||||
"Swashbuckle.AspNetCore/10.2.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-8KNh1RWvofdU6DVLyBs4Z/OpUMnmf8oNvJQc0QxpwySRbi42bwLfdVMMrXZWANg5U5KQGQq1xW6r/hlcqw99tQ==",
|
||||
"path": "swashbuckle.aspnetcore/10.2.3",
|
||||
"hashPath": "swashbuckle.aspnetcore.10.2.3.nupkg.sha512"
|
||||
},
|
||||
"Swashbuckle.AspNetCore.Swagger/10.2.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-1jUUs3WQnrS0FUtaZPLSy1yYMEwS1zlvDmvQ2/eldPHUANX0LJSLVZecCMgSMdeGiRqeaRrIXLtSz++TCiTMww==",
|
||||
"path": "swashbuckle.aspnetcore.swagger/10.2.3",
|
||||
"hashPath": "swashbuckle.aspnetcore.swagger.10.2.3.nupkg.sha512"
|
||||
},
|
||||
"Swashbuckle.AspNetCore.SwaggerGen/10.2.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-y7t4coDRAeFYChmvlMRiH2OjbiRrm9AVIDgt17fQfs3x9PVAI5PiwWYOhg+4F13R4Q36WDc9lqfoOnNa3tNbGg==",
|
||||
"path": "swashbuckle.aspnetcore.swaggergen/10.2.3",
|
||||
"hashPath": "swashbuckle.aspnetcore.swaggergen.10.2.3.nupkg.sha512"
|
||||
},
|
||||
"Swashbuckle.AspNetCore.SwaggerUI/10.2.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-nthWONRs/FJ4yyG206g1cC52WEG8EqrjuMWjGdR+5XG7lbjFto6NqcI9EMICgVFom/UivIjUVwI76ZHbHwTPfQ==",
|
||||
"path": "swashbuckle.aspnetcore.swaggerui/10.2.3",
|
||||
"hashPath": "swashbuckle.aspnetcore.swaggerui.10.2.3.nupkg.sha512"
|
||||
},
|
||||
"System.IdentityModel.Tokens.Jwt/8.22.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-CpXGfNhLl6EgYaOC9XYsc1p7Ci9HtAy0soHJDSBNGse647al4tTq9RDr+LQsrF4Ls79Dx7VfzN34km0W4DWPow==",
|
||||
"path": "system.identitymodel.tokens.jwt/8.22.0",
|
||||
"hashPath": "system.identitymodel.tokens.jwt.8.22.0.nupkg.sha512"
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
apps/api-server/bin/Debug/net10.0/D3ROVoice.Api.dll
Normal file
BIN
apps/api-server/bin/Debug/net10.0/D3ROVoice.Api.dll
Normal file
Binary file not shown.
BIN
apps/api-server/bin/Debug/net10.0/D3ROVoice.Api.exe
Normal file
BIN
apps/api-server/bin/Debug/net10.0/D3ROVoice.Api.exe
Normal file
Binary file not shown.
BIN
apps/api-server/bin/Debug/net10.0/D3ROVoice.Api.pdb
Normal file
BIN
apps/api-server/bin/Debug/net10.0/D3ROVoice.Api.pdb
Normal file
Binary file not shown.
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "net10.0",
|
||||
"frameworks": [
|
||||
{
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "10.0.0"
|
||||
},
|
||||
{
|
||||
"name": "Microsoft.AspNetCore.App",
|
||||
"version": "10.0.0"
|
||||
}
|
||||
],
|
||||
"configProperties": {
|
||||
"System.GC.Server": true,
|
||||
"System.Reflection.NullabilityInfoContext.IsSupported": true,
|
||||
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
{"ContentRoots":["D:\\workspace\\D3ROVoice\\apps\\api-server\\wwwroot\\","D:\\workspace\\D3ROVoice\\apps\\api-server\\obj\\Debug\\net10.0\\compressed\\"],"Root":{"Children":{"favicon.svg":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.svg"},"Patterns":null},"favicon.svg.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"k8usrkd25d-{0}-i4ytlv2mnz-i4ytlv2mnz.gz"},"Patterns":null},"index.html":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"index.html"},"Patterns":null},"index.html.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"0oa1lcbz4d-{0}-e1w50tc880-e1w50tc880.gz"},"Patterns":null},"admin":{"Children":{"index.html":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"admin/index.html"},"Patterns":null},"index.html.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"ywp43jgxv3-{0}-mw01eamuej-mw01eamuej.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"assets":{"Children":{"index-TLmV-V-z.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"assets/index-TLmV-V-z.js"},"Patterns":null},"index-TLmV-V-z.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"b6arkhq2qu-{0}-9xczhhykze-9xczhhykze.gz"},"Patterns":null},"index-X4t7Pkjb.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"assets/index-X4t7Pkjb.css"},"Patterns":null},"index-X4t7Pkjb.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"wgxvrpfkf8-{0}-qb4ylyqfl5-qb4ylyqfl5.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||
Binary file not shown.
Binary file not shown.
BIN
apps/api-server/bin/Debug/net10.0/Microsoft.Bcl.Cryptography.dll
Normal file
BIN
apps/api-server/bin/Debug/net10.0/Microsoft.Bcl.Cryptography.dll
Normal file
Binary file not shown.
BIN
apps/api-server/bin/Debug/net10.0/Microsoft.Data.Sqlite.dll
Normal file
BIN
apps/api-server/bin/Debug/net10.0/Microsoft.Data.Sqlite.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
apps/api-server/bin/Debug/net10.0/Microsoft.OpenApi.dll
Normal file
BIN
apps/api-server/bin/Debug/net10.0/Microsoft.OpenApi.dll
Normal file
Binary file not shown.
BIN
apps/api-server/bin/Debug/net10.0/SQLitePCLRaw.batteries_v2.dll
Normal file
BIN
apps/api-server/bin/Debug/net10.0/SQLitePCLRaw.batteries_v2.dll
Normal file
Binary file not shown.
BIN
apps/api-server/bin/Debug/net10.0/SQLitePCLRaw.core.dll
Normal file
BIN
apps/api-server/bin/Debug/net10.0/SQLitePCLRaw.core.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
}
|
||||
}
|
||||
9
apps/api-server/bin/Debug/net10.0/appsettings.json
Normal file
9
apps/api-server/bin/Debug/net10.0/appsettings.json
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
||||
BIN
apps/api-server/bin/Debug/net10.0/d3ro_api.db
Normal file
BIN
apps/api-server/bin/Debug/net10.0/d3ro_api.db
Normal file
Binary file not shown.
BIN
apps/api-server/bin/Debug/net10.0/data/d3ro_api.db
Normal file
BIN
apps/api-server/bin/Debug/net10.0/data/d3ro_api.db
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
515
apps/api-server/obj/D3ROVoice.Api.csproj.nuget.dgspec.json
Normal file
515
apps/api-server/obj/D3ROVoice.Api.csproj.nuget.dgspec.json
Normal file
|
|
@ -0,0 +1,515 @@
|
|||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"D:\\workspace\\D3ROVoice\\apps\\api-server\\D3ROVoice.Api.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"D:\\workspace\\D3ROVoice\\apps\\api-server\\D3ROVoice.Api.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "D:\\workspace\\D3ROVoice\\apps\\api-server\\D3ROVoice.Api.csproj",
|
||||
"projectName": "D3ROVoice.Api",
|
||||
"projectPath": "D:\\workspace\\D3ROVoice\\apps\\api-server\\D3ROVoice.Api.csproj",
|
||||
"packagesPath": "C:\\Users\\encep\\.nuget\\packages\\",
|
||||
"outputPath": "D:\\workspace\\D3ROVoice\\apps\\api-server\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\encep\\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": [
|
||||
"net10.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net10.0": {
|
||||
"framework": "net10.0",
|
||||
"targetAlias": "net10.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "all"
|
||||
},
|
||||
"SdkAnalysisLevel": "10.0.300"
|
||||
},
|
||||
"frameworks": {
|
||||
"net10.0": {
|
||||
"framework": "net10.0",
|
||||
"targetAlias": "net10.0",
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Authentication.JwtBearer": {
|
||||
"target": "Package",
|
||||
"version": "[10.0.10, )"
|
||||
},
|
||||
"Microsoft.AspNetCore.OpenApi": {
|
||||
"target": "Package",
|
||||
"version": "[10.0.8, )"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Sqlite": {
|
||||
"target": "Package",
|
||||
"version": "[10.0.10, )"
|
||||
},
|
||||
"Swashbuckle.AspNetCore": {
|
||||
"target": "Package",
|
||||
"version": "[10.2.3, )"
|
||||
},
|
||||
"System.IdentityModel.Tokens.Jwt": {
|
||||
"target": "Package",
|
||||
"version": "[8.22.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\\10.0.300/PortableRuntimeIdentifierGraph.json",
|
||||
"packagesToPrune": {
|
||||
"Microsoft.AspNetCore": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Antiforgery": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.App": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Authentication": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Authentication.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Authentication.BearerToken": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Authentication.Cookies": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Authentication.Core": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Authentication.OAuth": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Authorization": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Authorization.Policy": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Components": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Components.Authorization": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Components.Endpoints": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Components.Forms": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Components.Server": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Components.Web": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Connections.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.CookiePolicy": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Cors": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Cryptography.Internal": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Cryptography.KeyDerivation": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.DataProtection": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.DataProtection.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.DataProtection.Extensions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Diagnostics": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Diagnostics.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Diagnostics.HealthChecks": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.HostFiltering": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Hosting": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Hosting.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Hosting.Server.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Html.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Http": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Http.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Http.Connections": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Http.Connections.Common": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Http.Extensions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Http.Features": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Http.Results": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.HttpLogging": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.HttpOverrides": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.HttpsPolicy": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Identity": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Localization": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Localization.Routing": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Metadata": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc.ApiExplorer": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc.Core": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc.Cors": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc.DataAnnotations": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc.Formatters.Json": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc.Formatters.Xml": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc.Localization": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc.Razor": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc.RazorPages": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc.TagHelpers": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Mvc.ViewFeatures": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.OutputCaching": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.RateLimiting": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Razor": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Razor.Runtime": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.RequestDecompression": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.ResponseCaching": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.ResponseCaching.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.ResponseCompression": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Rewrite": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Routing": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Routing.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Server.HttpSys": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Server.IIS": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Server.IISIntegration": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Server.Kestrel": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Server.Kestrel.Core": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Server.Kestrel.Transport.Quic": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.Session": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.SignalR": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.SignalR.Common": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.SignalR.Core": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.SignalR.Protocols.Json": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.StaticAssets": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.StaticFiles": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.WebSockets": "(,10.0.32767]",
|
||||
"Microsoft.AspNetCore.WebUtilities": "(,10.0.32767]",
|
||||
"Microsoft.CSharp": "(,4.7.32767]",
|
||||
"Microsoft.Extensions.Caching.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Caching.Memory": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Configuration": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Configuration.Binder": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Configuration.CommandLine": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Configuration.EnvironmentVariables": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Configuration.FileExtensions": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Configuration.Ini": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Configuration.Json": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Configuration.KeyPerFile": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Configuration.UserSecrets": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Configuration.Xml": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.DependencyInjection": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Diagnostics": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Diagnostics.HealthChecks": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Features": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.FileProviders.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.FileProviders.Composite": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.FileProviders.Physical": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.FileSystemGlobbing": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Hosting": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Hosting.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Http": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Identity.Core": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Identity.Stores": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Localization": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Localization.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Logging": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Logging.Configuration": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Logging.Console": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Logging.Debug": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Logging.EventLog": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Logging.EventSource": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Logging.TraceSource": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.ObjectPool": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Options": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Options.DataAnnotations": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Primitives": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.Validation": "(,10.0.32767]",
|
||||
"Microsoft.Extensions.WebEncoders": "(,10.0.32767]",
|
||||
"Microsoft.JSInterop": "(,10.0.32767]",
|
||||
"Microsoft.Net.Http.Headers": "(,10.0.32767]",
|
||||
"Microsoft.VisualBasic": "(,10.4.32767]",
|
||||
"Microsoft.Win32.Primitives": "(,4.3.32767]",
|
||||
"Microsoft.Win32.Registry": "(,5.0.32767]",
|
||||
"runtime.any.System.Collections": "(,4.3.32767]",
|
||||
"runtime.any.System.Diagnostics.Tools": "(,4.3.32767]",
|
||||
"runtime.any.System.Diagnostics.Tracing": "(,4.3.32767]",
|
||||
"runtime.any.System.Globalization": "(,4.3.32767]",
|
||||
"runtime.any.System.Globalization.Calendars": "(,4.3.32767]",
|
||||
"runtime.any.System.IO": "(,4.3.32767]",
|
||||
"runtime.any.System.Reflection": "(,4.3.32767]",
|
||||
"runtime.any.System.Reflection.Extensions": "(,4.3.32767]",
|
||||
"runtime.any.System.Reflection.Primitives": "(,4.3.32767]",
|
||||
"runtime.any.System.Resources.ResourceManager": "(,4.3.32767]",
|
||||
"runtime.any.System.Runtime": "(,4.3.32767]",
|
||||
"runtime.any.System.Runtime.Handles": "(,4.3.32767]",
|
||||
"runtime.any.System.Runtime.InteropServices": "(,4.3.32767]",
|
||||
"runtime.any.System.Text.Encoding": "(,4.3.32767]",
|
||||
"runtime.any.System.Text.Encoding.Extensions": "(,4.3.32767]",
|
||||
"runtime.any.System.Threading.Tasks": "(,4.3.32767]",
|
||||
"runtime.any.System.Threading.Timer": "(,4.3.32767]",
|
||||
"runtime.aot.System.Collections": "(,4.3.32767]",
|
||||
"runtime.aot.System.Diagnostics.Tools": "(,4.3.32767]",
|
||||
"runtime.aot.System.Diagnostics.Tracing": "(,4.3.32767]",
|
||||
"runtime.aot.System.Globalization": "(,4.3.32767]",
|
||||
"runtime.aot.System.Globalization.Calendars": "(,4.3.32767]",
|
||||
"runtime.aot.System.IO": "(,4.3.32767]",
|
||||
"runtime.aot.System.Reflection": "(,4.3.32767]",
|
||||
"runtime.aot.System.Reflection.Extensions": "(,4.3.32767]",
|
||||
"runtime.aot.System.Reflection.Primitives": "(,4.3.32767]",
|
||||
"runtime.aot.System.Resources.ResourceManager": "(,4.3.32767]",
|
||||
"runtime.aot.System.Runtime": "(,4.3.32767]",
|
||||
"runtime.aot.System.Runtime.Handles": "(,4.3.32767]",
|
||||
"runtime.aot.System.Runtime.InteropServices": "(,4.3.32767]",
|
||||
"runtime.aot.System.Text.Encoding": "(,4.3.32767]",
|
||||
"runtime.aot.System.Text.Encoding.Extensions": "(,4.3.32767]",
|
||||
"runtime.aot.System.Threading.Tasks": "(,4.3.32767]",
|
||||
"runtime.aot.System.Threading.Timer": "(,4.3.32767]",
|
||||
"runtime.debian.8-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.debian.8-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.debian.8-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.debian.8-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||
"runtime.debian.9-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.debian.9-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.debian.9-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.debian.9-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.fedora.23-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.fedora.23-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.fedora.23-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.fedora.23-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||
"runtime.fedora.24-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.fedora.24-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.fedora.24-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.fedora.24-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||
"runtime.fedora.27-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.fedora.27-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.fedora.27-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.fedora.27-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.fedora.28-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.fedora.28-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.fedora.28-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.fedora.28-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.opensuse.13.2-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.opensuse.13.2-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.opensuse.13.2-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.opensuse.13.2-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||
"runtime.opensuse.42.1-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.opensuse.42.1-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.opensuse.42.1-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.opensuse.42.1-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||
"runtime.opensuse.42.3-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.opensuse.42.3-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.opensuse.42.3-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.opensuse.42.3-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.osx.10.10-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.osx.10.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.osx.10.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.osx.10.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "(,4.3.32767]",
|
||||
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||
"runtime.rhel.7-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.rhel.7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.rhel.7-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.rhel.7-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||
"runtime.ubuntu.14.04-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.ubuntu.14.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.ubuntu.14.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.ubuntu.14.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||
"runtime.ubuntu.16.04-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.ubuntu.16.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.ubuntu.16.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.ubuntu.16.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||
"runtime.ubuntu.16.10-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.ubuntu.16.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.ubuntu.16.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.ubuntu.16.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
|
||||
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
|
||||
"runtime.ubuntu.18.04-x64.runtime.native.System": "(,4.3.32767]",
|
||||
"runtime.ubuntu.18.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.ubuntu.18.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
|
||||
"runtime.ubuntu.18.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
|
||||
"runtime.unix.Microsoft.Win32.Primitives": "(,4.3.32767]",
|
||||
"runtime.unix.System.Console": "(,4.3.32767]",
|
||||
"runtime.unix.System.Diagnostics.Debug": "(,4.3.32767]",
|
||||
"runtime.unix.System.IO.FileSystem": "(,4.3.32767]",
|
||||
"runtime.unix.System.Net.Primitives": "(,4.3.32767]",
|
||||
"runtime.unix.System.Net.Sockets": "(,4.3.32767]",
|
||||
"runtime.unix.System.Private.Uri": "(,4.3.32767]",
|
||||
"runtime.unix.System.Runtime.Extensions": "(,4.3.32767]",
|
||||
"runtime.win.Microsoft.Win32.Primitives": "(,4.3.32767]",
|
||||
"runtime.win.System.Console": "(,4.3.32767]",
|
||||
"runtime.win.System.Diagnostics.Debug": "(,4.3.32767]",
|
||||
"runtime.win.System.IO.FileSystem": "(,4.3.32767]",
|
||||
"runtime.win.System.Net.Primitives": "(,4.3.32767]",
|
||||
"runtime.win.System.Net.Sockets": "(,4.3.32767]",
|
||||
"runtime.win.System.Runtime.Extensions": "(,4.3.32767]",
|
||||
"runtime.win10-arm-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
|
||||
"runtime.win10-arm64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.win10-x64-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
|
||||
"runtime.win10-x86-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
|
||||
"runtime.win7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.win7-x86.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"runtime.win7.System.Private.Uri": "(,4.3.32767]",
|
||||
"runtime.win8-arm.runtime.native.System.IO.Compression": "(,4.3.32767]",
|
||||
"System.AppContext": "(,4.3.32767]",
|
||||
"System.Buffers": "(,5.0.32767]",
|
||||
"System.Collections": "(,4.3.32767]",
|
||||
"System.Collections.Concurrent": "(,4.3.32767]",
|
||||
"System.Collections.Immutable": "(,10.0.32767]",
|
||||
"System.Collections.NonGeneric": "(,4.3.32767]",
|
||||
"System.Collections.Specialized": "(,4.3.32767]",
|
||||
"System.ComponentModel": "(,4.3.32767]",
|
||||
"System.ComponentModel.Annotations": "(,4.3.32767]",
|
||||
"System.ComponentModel.EventBasedAsync": "(,4.3.32767]",
|
||||
"System.ComponentModel.Primitives": "(,4.3.32767]",
|
||||
"System.ComponentModel.TypeConverter": "(,4.3.32767]",
|
||||
"System.Console": "(,4.3.32767]",
|
||||
"System.Data.Common": "(,4.3.32767]",
|
||||
"System.Data.DataSetExtensions": "(,4.4.32767]",
|
||||
"System.Diagnostics.Contracts": "(,4.3.32767]",
|
||||
"System.Diagnostics.Debug": "(,4.3.32767]",
|
||||
"System.Diagnostics.DiagnosticSource": "(,10.0.32767]",
|
||||
"System.Diagnostics.EventLog": "(,10.0.32767]",
|
||||
"System.Diagnostics.FileVersionInfo": "(,4.3.32767]",
|
||||
"System.Diagnostics.Process": "(,4.3.32767]",
|
||||
"System.Diagnostics.StackTrace": "(,4.3.32767]",
|
||||
"System.Diagnostics.TextWriterTraceListener": "(,4.3.32767]",
|
||||
"System.Diagnostics.Tools": "(,4.3.32767]",
|
||||
"System.Diagnostics.TraceSource": "(,4.3.32767]",
|
||||
"System.Diagnostics.Tracing": "(,4.3.32767]",
|
||||
"System.Drawing.Primitives": "(,4.3.32767]",
|
||||
"System.Dynamic.Runtime": "(,4.3.32767]",
|
||||
"System.Formats.Asn1": "(,10.0.32767]",
|
||||
"System.Formats.Cbor": "(,10.0.32767]",
|
||||
"System.Formats.Tar": "(,10.0.32767]",
|
||||
"System.Globalization": "(,4.3.32767]",
|
||||
"System.Globalization.Calendars": "(,4.3.32767]",
|
||||
"System.Globalization.Extensions": "(,4.3.32767]",
|
||||
"System.IO": "(,4.3.32767]",
|
||||
"System.IO.Compression": "(,4.3.32767]",
|
||||
"System.IO.Compression.ZipFile": "(,4.3.32767]",
|
||||
"System.IO.FileSystem": "(,4.3.32767]",
|
||||
"System.IO.FileSystem.AccessControl": "(,4.4.32767]",
|
||||
"System.IO.FileSystem.DriveInfo": "(,4.3.32767]",
|
||||
"System.IO.FileSystem.Primitives": "(,4.3.32767]",
|
||||
"System.IO.FileSystem.Watcher": "(,4.3.32767]",
|
||||
"System.IO.IsolatedStorage": "(,4.3.32767]",
|
||||
"System.IO.MemoryMappedFiles": "(,4.3.32767]",
|
||||
"System.IO.Pipelines": "(,10.0.32767]",
|
||||
"System.IO.Pipes": "(,4.3.32767]",
|
||||
"System.IO.Pipes.AccessControl": "(,5.0.32767]",
|
||||
"System.IO.UnmanagedMemoryStream": "(,4.3.32767]",
|
||||
"System.Linq": "(,4.3.32767]",
|
||||
"System.Linq.AsyncEnumerable": "(,10.0.32767]",
|
||||
"System.Linq.Expressions": "(,4.3.32767]",
|
||||
"System.Linq.Parallel": "(,4.3.32767]",
|
||||
"System.Linq.Queryable": "(,4.3.32767]",
|
||||
"System.Memory": "(,5.0.32767]",
|
||||
"System.Net.Http": "(,4.3.32767]",
|
||||
"System.Net.Http.Json": "(,10.0.32767]",
|
||||
"System.Net.NameResolution": "(,4.3.32767]",
|
||||
"System.Net.NetworkInformation": "(,4.3.32767]",
|
||||
"System.Net.Ping": "(,4.3.32767]",
|
||||
"System.Net.Primitives": "(,4.3.32767]",
|
||||
"System.Net.Requests": "(,4.3.32767]",
|
||||
"System.Net.Security": "(,4.3.32767]",
|
||||
"System.Net.ServerSentEvents": "(,10.0.32767]",
|
||||
"System.Net.Sockets": "(,4.3.32767]",
|
||||
"System.Net.WebHeaderCollection": "(,4.3.32767]",
|
||||
"System.Net.WebSockets": "(,4.3.32767]",
|
||||
"System.Net.WebSockets.Client": "(,4.3.32767]",
|
||||
"System.Numerics.Vectors": "(,5.0.32767]",
|
||||
"System.ObjectModel": "(,4.3.32767]",
|
||||
"System.Private.DataContractSerialization": "(,4.3.32767]",
|
||||
"System.Private.Uri": "(,4.3.32767]",
|
||||
"System.Reflection": "(,4.3.32767]",
|
||||
"System.Reflection.DispatchProxy": "(,6.0.32767]",
|
||||
"System.Reflection.Emit": "(,4.7.32767]",
|
||||
"System.Reflection.Emit.ILGeneration": "(,4.7.32767]",
|
||||
"System.Reflection.Emit.Lightweight": "(,4.7.32767]",
|
||||
"System.Reflection.Extensions": "(,4.3.32767]",
|
||||
"System.Reflection.Metadata": "(,10.0.32767]",
|
||||
"System.Reflection.Primitives": "(,4.3.32767]",
|
||||
"System.Reflection.TypeExtensions": "(,4.3.32767]",
|
||||
"System.Resources.Reader": "(,4.3.32767]",
|
||||
"System.Resources.ResourceManager": "(,4.3.32767]",
|
||||
"System.Resources.Writer": "(,4.3.32767]",
|
||||
"System.Runtime": "(,4.3.32767]",
|
||||
"System.Runtime.CompilerServices.Unsafe": "(,7.0.32767]",
|
||||
"System.Runtime.CompilerServices.VisualC": "(,4.3.32767]",
|
||||
"System.Runtime.Extensions": "(,4.3.32767]",
|
||||
"System.Runtime.Handles": "(,4.3.32767]",
|
||||
"System.Runtime.InteropServices": "(,4.3.32767]",
|
||||
"System.Runtime.InteropServices.RuntimeInformation": "(,4.3.32767]",
|
||||
"System.Runtime.Loader": "(,4.3.32767]",
|
||||
"System.Runtime.Numerics": "(,4.3.32767]",
|
||||
"System.Runtime.Serialization.Formatters": "(,4.3.32767]",
|
||||
"System.Runtime.Serialization.Json": "(,4.3.32767]",
|
||||
"System.Runtime.Serialization.Primitives": "(,4.3.32767]",
|
||||
"System.Runtime.Serialization.Xml": "(,4.3.32767]",
|
||||
"System.Security.AccessControl": "(,6.0.32767]",
|
||||
"System.Security.Claims": "(,4.3.32767]",
|
||||
"System.Security.Cryptography.Algorithms": "(,4.3.32767]",
|
||||
"System.Security.Cryptography.Cng": "(,5.0.32767]",
|
||||
"System.Security.Cryptography.Csp": "(,4.3.32767]",
|
||||
"System.Security.Cryptography.Encoding": "(,4.3.32767]",
|
||||
"System.Security.Cryptography.OpenSsl": "(,5.0.32767]",
|
||||
"System.Security.Cryptography.Primitives": "(,4.3.32767]",
|
||||
"System.Security.Cryptography.X509Certificates": "(,4.3.32767]",
|
||||
"System.Security.Cryptography.Xml": "(,10.0.32767]",
|
||||
"System.Security.Principal": "(,4.3.32767]",
|
||||
"System.Security.Principal.Windows": "(,5.0.32767]",
|
||||
"System.Security.SecureString": "(,4.3.32767]",
|
||||
"System.Text.Encoding": "(,4.3.32767]",
|
||||
"System.Text.Encoding.CodePages": "(,10.0.32767]",
|
||||
"System.Text.Encoding.Extensions": "(,4.3.32767]",
|
||||
"System.Text.Encodings.Web": "(,10.0.32767]",
|
||||
"System.Text.Json": "(,10.0.32767]",
|
||||
"System.Text.RegularExpressions": "(,4.3.32767]",
|
||||
"System.Threading": "(,4.3.32767]",
|
||||
"System.Threading.AccessControl": "(,10.0.32767]",
|
||||
"System.Threading.Channels": "(,10.0.32767]",
|
||||
"System.Threading.Overlapped": "(,4.3.32767]",
|
||||
"System.Threading.RateLimiting": "(,10.0.32767]",
|
||||
"System.Threading.Tasks": "(,4.3.32767]",
|
||||
"System.Threading.Tasks.Dataflow": "(,10.0.32767]",
|
||||
"System.Threading.Tasks.Extensions": "(,5.0.32767]",
|
||||
"System.Threading.Tasks.Parallel": "(,4.3.32767]",
|
||||
"System.Threading.Thread": "(,4.3.32767]",
|
||||
"System.Threading.ThreadPool": "(,4.3.32767]",
|
||||
"System.Threading.Timer": "(,4.3.32767]",
|
||||
"System.ValueTuple": "(,4.5.32767]",
|
||||
"System.Xml.ReaderWriter": "(,4.3.32767]",
|
||||
"System.Xml.XDocument": "(,4.3.32767]",
|
||||
"System.Xml.XmlDocument": "(,4.3.32767]",
|
||||
"System.Xml.XmlSerializer": "(,4.3.32767]",
|
||||
"System.Xml.XPath": "(,4.3.32767]",
|
||||
"System.Xml.XPath.XDocument": "(,5.0.32767]"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
24
apps/api-server/obj/D3ROVoice.Api.csproj.nuget.g.props
Normal file
24
apps/api-server/obj/D3ROVoice.Api.csproj.nuget.g.props
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<?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\encep\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="C:\Users\encep\.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\10.0.0\build\Microsoft.Extensions.ApiDescription.Server.props" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server\10.0.0\build\Microsoft.Extensions.ApiDescription.Server.props')" />
|
||||
<Import Project="$(NuGetPackageRoot)swashbuckle.aspnetcore\10.2.3\build\Swashbuckle.AspNetCore.props" Condition="Exists('$(NuGetPackageRoot)swashbuckle.aspnetcore\10.2.3\build\Swashbuckle.AspNetCore.props')" />
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore\10.0.10\buildTransitive\net10.0\Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore\10.0.10\buildTransitive\net10.0\Microsoft.EntityFrameworkCore.props')" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<PkgMicrosoft_Extensions_ApiDescription_Server Condition=" '$(PkgMicrosoft_Extensions_ApiDescription_Server)' == '' ">C:\Users\encep\.nuget\packages\microsoft.extensions.apidescription.server\10.0.0</PkgMicrosoft_Extensions_ApiDescription_Server>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
8
apps/api-server/obj/D3ROVoice.Api.csproj.nuget.g.targets
Normal file
8
apps/api-server/obj/D3ROVoice.Api.csproj.nuget.g.targets
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?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\10.0.0\build\Microsoft.Extensions.ApiDescription.Server.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server\10.0.0\build\Microsoft.Extensions.ApiDescription.Server.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.11\buildTransitive\net9.0\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\2.1.11\buildTransitive\net9.0\SQLitePCLRaw.lib.e_sqlite3.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.openapi\10.0.8\build\Microsoft.AspNetCore.OpenApi.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.openapi\10.0.8\build\Microsoft.AspNetCore.OpenApi.targets')" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v10.0", FrameworkDisplayName = ".NET 10.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("D3ROVoice.Api")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5cd1de685968775e0ef3666436d68fe9e6b0e906")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("D3ROVoice.Api")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("D3ROVoice.Api")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
55edc22ee2e937f3669d60a2ace175b3a21f49551f88805450652b32ef5daee0
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
is_global = true
|
||||
build_property.TargetFramework = net10.0
|
||||
build_property.TargetFrameworkIdentifier = .NETCoreApp
|
||||
build_property.TargetFrameworkVersion = v10.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb = true
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property.EntryPointFilePath =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = D3ROVoice.Api
|
||||
build_property.RootNamespace = D3ROVoice.Api
|
||||
build_property.ProjectDir = D:\workspace\D3ROVoice\apps\api-server\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
build_property.RazorLangVersion = 10.0
|
||||
build_property.SupportLocalizedComponentNames =
|
||||
build_property.GenerateRazorMetadataSourceChecksumAttributes =
|
||||
build_property.MSBuildProjectDirectory = D:\workspace\D3ROVoice\apps\api-server
|
||||
build_property._RazorSourceGeneratorDebug =
|
||||
build_property.EffectiveAnalysisLevelStyle = 10.0
|
||||
build_property.EnableCodeStyleSeverity =
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
// <auto-generated/>
|
||||
global using Microsoft.AspNetCore.Builder;
|
||||
global using Microsoft.AspNetCore.Hosting;
|
||||
global using Microsoft.AspNetCore.Http;
|
||||
global using Microsoft.AspNetCore.Routing;
|
||||
global using Microsoft.Extensions.Configuration;
|
||||
global using Microsoft.Extensions.DependencyInjection;
|
||||
global using Microsoft.Extensions.Hosting;
|
||||
global using Microsoft.Extensions.Logging;
|
||||
global using System;
|
||||
global using System.Collections.Generic;
|
||||
global using System.IO;
|
||||
global using System.Linq;
|
||||
global using System.Net.Http;
|
||||
global using System.Net.Http.Json;
|
||||
global using System.Threading;
|
||||
global using 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.
|
||||
|
||||
BIN
apps/api-server/obj/Debug/net10.0/D3ROVoice.Api.assets.cache
Normal file
BIN
apps/api-server/obj/Debug/net10.0/D3ROVoice.Api.assets.cache
Normal file
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
a94338223e30f0c6359bd5a11f30b52a88f5bf30c27ce1c8e3a39e3fe4f16fa5
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\D3ROVoice.Api.csproj.AssemblyReference.cache
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\rpswa.dswa.cache.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\D3ROVoice.Api.GeneratedMSBuildEditorConfig.editorconfig
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\D3ROVoice.Api.AssemblyInfoInputs.cache
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\D3ROVoice.Api.AssemblyInfo.cs
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\D3ROVoice.Api.csproj.CoreCompileInputs.cache
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\D3ROVoice.Api.MvcApplicationPartsAssemblyInfo.cs
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\D3ROVoice.Api.MvcApplicationPartsAssemblyInfo.cache
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\appsettings.Development.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\appsettings.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\D3ROVoice.Api.staticwebassets.runtime.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\D3ROVoice.Api.staticwebassets.endpoints.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\D3ROVoice.Api.exe
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\D3ROVoice.Api.deps.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\D3ROVoice.Api.runtimeconfig.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\D3ROVoice.Api.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\D3ROVoice.Api.pdb
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.AspNetCore.Authentication.JwtBearer.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.AspNetCore.OpenApi.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.Bcl.Cryptography.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.Data.Sqlite.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.EntityFrameworkCore.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.EntityFrameworkCore.Abstractions.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.EntityFrameworkCore.Relational.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.EntityFrameworkCore.Sqlite.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.Extensions.DependencyModel.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.IdentityModel.Abstractions.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.IdentityModel.JsonWebTokens.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.IdentityModel.Logging.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.IdentityModel.Protocols.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.IdentityModel.Tokens.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Microsoft.OpenApi.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\SQLitePCLRaw.batteries_v2.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\SQLitePCLRaw.core.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\SQLitePCLRaw.provider.e_sqlite3.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Swashbuckle.AspNetCore.Swagger.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Swashbuckle.AspNetCore.SwaggerGen.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\Swashbuckle.AspNetCore.SwaggerUI.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\System.IdentityModel.Tokens.Jwt.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\browser-wasm\nativeassets\net9.0\e_sqlite3.a
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-arm\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-arm64\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-armel\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-mips64\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-musl-arm\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-musl-arm64\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-musl-riscv64\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-musl-s390x\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-musl-x64\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-ppc64le\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-riscv64\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-s390x\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-x64\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\linux-x86\native\libe_sqlite3.so
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\maccatalyst-arm64\native\libe_sqlite3.dylib
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\maccatalyst-x64\native\libe_sqlite3.dylib
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\osx-arm64\native\libe_sqlite3.dylib
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\osx-x64\native\libe_sqlite3.dylib
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\win-arm\native\e_sqlite3.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\win-arm64\native\e_sqlite3.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\win-x64\native\e_sqlite3.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\bin\Debug\net10.0\runtimes\win-x86\native\e_sqlite3.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\rjimswa.dswa.cache.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\rjsmrazor.dswa.cache.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\rjsmcshtml.dswa.cache.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\scopedcss\bundle\D3ROVoice.Api.styles.css
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\compressed\ywp43jgxv3-{0}-mw01eamuej-mw01eamuej.gz
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\staticwebassets.build.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\staticwebassets.build.json.cache
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\staticwebassets.development.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\staticwebassets.build.endpoints.json
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\swae.build.ex.cache
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\D3ROVoic.FECB580F.Up2Date
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\D3ROVoice.Api.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\refint\D3ROVoice.Api.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\D3ROVoice.Api.pdb
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\D3ROVoice.Api.genruntimeconfig.cache
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\ref\D3ROVoice.Api.dll
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\compressed\b6arkhq2qu-{0}-9xczhhykze-9xczhhykze.gz
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\compressed\wgxvrpfkf8-{0}-qb4ylyqfl5-qb4ylyqfl5.gz
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\compressed\k8usrkd25d-{0}-i4ytlv2mnz-i4ytlv2mnz.gz
|
||||
D:\workspace\D3ROVoice\apps\api-server\obj\Debug\net10.0\compressed\0oa1lcbz4d-{0}-e1w50tc880-e1w50tc880.gz
|
||||
BIN
apps/api-server/obj/Debug/net10.0/D3ROVoice.Api.dll
Normal file
BIN
apps/api-server/obj/Debug/net10.0/D3ROVoice.Api.dll
Normal file
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
67efd6a138a158f59611be91d523d3d45d3ec9b9039e0c189cfeff63c9e38342
|
||||
BIN
apps/api-server/obj/Debug/net10.0/D3ROVoice.Api.pdb
Normal file
BIN
apps/api-server/obj/Debug/net10.0/D3ROVoice.Api.pdb
Normal file
Binary file not shown.
BIN
apps/api-server/obj/Debug/net10.0/apphost.exe
Normal file
BIN
apps/api-server/obj/Debug/net10.0/apphost.exe
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1
apps/api-server/obj/Debug/net10.0/rbcswa.dswa.cache.json
Normal file
1
apps/api-server/obj/Debug/net10.0/rbcswa.dswa.cache.json
Normal file
File diff suppressed because one or more lines are too long
BIN
apps/api-server/obj/Debug/net10.0/ref/D3ROVoice.Api.dll
Normal file
BIN
apps/api-server/obj/Debug/net10.0/ref/D3ROVoice.Api.dll
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue