mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-04-22 07:06:39 +00:00
downloaderV2, download single tile
This commit is contained in:
@@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.OpenApi.Models;
|
||||
using Swashbuckle.AspNetCore.SwaggerGen;
|
||||
using SatelliteProvider.DataAccess;
|
||||
using SatelliteProvider.DataAccess.Models;
|
||||
using SatelliteProvider.DataAccess.Repositories;
|
||||
using SatelliteProvider.Common.Configs;
|
||||
using SatelliteProvider.Common.Interfaces;
|
||||
@@ -22,6 +23,7 @@ builder.Services.AddSingleton<IRegionRepository>(sp => new RegionRepository(conn
|
||||
|
||||
builder.Services.AddHttpClient();
|
||||
builder.Services.AddSingleton<GoogleMapsDownloader>();
|
||||
builder.Services.AddSingleton<GoogleMapsDownloaderV2>();
|
||||
builder.Services.AddSingleton<ITileService, TileService>();
|
||||
|
||||
builder.Services.AddEndpointsApiExplorer();
|
||||
@@ -97,41 +99,50 @@ IResult UploadImage([FromForm] UploadImageRequest request)
|
||||
return Results.Ok(new SaveResult { Success = false });
|
||||
}
|
||||
|
||||
async Task<IResult> DownloadSingleTile([FromBody] DownloadTileRequest request, ITileService tileService, ILogger<Program> logger)
|
||||
async Task<IResult> DownloadSingleTile([FromBody] DownloadTileRequest request, GoogleMapsDownloaderV2 downloader, ITileRepository tileRepository, ILogger<Program> logger)
|
||||
{
|
||||
try
|
||||
{
|
||||
logger.LogInformation("Downloading single tile at ({Lat}, {Lon}) with zoom level {Zoom}",
|
||||
request.Latitude, request.Longitude, request.ZoomLevel);
|
||||
|
||||
var tiles = await tileService.DownloadAndStoreTilesAsync(
|
||||
var downloadedTile = await downloader.DownloadSingleTileAsync(
|
||||
request.Latitude,
|
||||
request.Longitude,
|
||||
1.0,
|
||||
request.ZoomLevel);
|
||||
|
||||
if (tiles.Count == 0)
|
||||
var now = DateTime.UtcNow;
|
||||
var tileEntity = new TileEntity
|
||||
{
|
||||
logger.LogWarning("No tiles were downloaded");
|
||||
return Results.NotFound(new { message = "No tiles were downloaded" });
|
||||
}
|
||||
Id = Guid.NewGuid(),
|
||||
ZoomLevel = downloadedTile.ZoomLevel,
|
||||
Latitude = downloadedTile.CenterLatitude,
|
||||
Longitude = downloadedTile.CenterLongitude,
|
||||
TileSizeMeters = downloadedTile.TileSizeMeters,
|
||||
TileSizePixels = 256,
|
||||
ImageType = "jpg",
|
||||
MapsVersion = $"downloaded_{now:yyyy-MM-dd}",
|
||||
FilePath = downloadedTile.FilePath,
|
||||
CreatedAt = now,
|
||||
UpdatedAt = now
|
||||
};
|
||||
|
||||
var tile = tiles[0];
|
||||
logger.LogInformation("Tile downloaded successfully: {Id}", tile.Id);
|
||||
await tileRepository.InsertAsync(tileEntity);
|
||||
logger.LogInformation("Tile saved to database with ID: {Id}", tileEntity.Id);
|
||||
|
||||
var response = new DownloadTileResponse
|
||||
{
|
||||
Id = tile.Id,
|
||||
ZoomLevel = tile.ZoomLevel,
|
||||
Latitude = tile.Latitude,
|
||||
Longitude = tile.Longitude,
|
||||
TileSizeMeters = tile.TileSizeMeters,
|
||||
TileSizePixels = tile.TileSizePixels,
|
||||
ImageType = tile.ImageType,
|
||||
MapsVersion = tile.MapsVersion,
|
||||
FilePath = tile.FilePath,
|
||||
CreatedAt = tile.CreatedAt,
|
||||
UpdatedAt = tile.UpdatedAt
|
||||
Id = tileEntity.Id,
|
||||
ZoomLevel = tileEntity.ZoomLevel,
|
||||
Latitude = tileEntity.Latitude,
|
||||
Longitude = tileEntity.Longitude,
|
||||
TileSizeMeters = tileEntity.TileSizeMeters,
|
||||
TileSizePixels = tileEntity.TileSizePixels,
|
||||
ImageType = tileEntity.ImageType,
|
||||
MapsVersion = tileEntity.MapsVersion,
|
||||
FilePath = tileEntity.FilePath,
|
||||
CreatedAt = tileEntity.CreatedAt,
|
||||
UpdatedAt = tileEntity.UpdatedAt
|
||||
};
|
||||
|
||||
return Results.Ok(response);
|
||||
|
||||
Reference in New Issue
Block a user