2 Commits

Author SHA1 Message Date
8b5803c085 Make media seekable
Some checks failed
Build and Push Image / build-and-push (push) Has been cancelled
2025-07-09 20:48:55 -04:00
5e2a7b53c9 Added additional media types
Some checks failed
Build and Push Image / build-and-push (push) Has been cancelled
2025-07-09 20:30:45 -04:00
4 changed files with 9 additions and 3 deletions

View File

@@ -50,6 +50,10 @@ public class Media
{ ".xml", MediaType.Code },
{ ".json", MediaType.Code },
{ ".py", MediaType.Code },
{ ".rs", MediaType.Code },
{ ".zed", MediaType.Code },
{ ".ts", MediaType.Code },
{ ".astro", MediaType.Code },
};
[BsonConstructor]

View File

@@ -2,13 +2,15 @@ using AobaCore.Models;
using MaybeError.Errors;
using Microsoft.Extensions.Logging;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.GridFS;
namespace AobaCore.Services;
public class AobaService(IMongoDatabase db)
public class AobaService(IMongoDatabase db, ThumbnailService thumbnailService, ILogger<AobaService> logger)
{
private readonly IMongoCollection<Media> _media = db.GetCollection<Media>("media");
private readonly GridFSBucket _gridFs = new(db);
@@ -69,6 +71,7 @@ public class AobaService(IMongoDatabase db)
{
var fileId = await _gridFs.UploadFromStreamAsync(filename, data, cancellationToken: cancellationToken);
var media = new Media(fileId, filename, owner);
await AddMediaAsync(media, cancellationToken);
return media;
}

View File

@@ -24,7 +24,6 @@ namespace AobaCore.Services;
public class ThumbnailService(IMongoDatabase db, AobaService aobaService)
{
private readonly GridFSBucket _gridfs = new GridFSBucket(db);
private Lock _lock = new();
/// <summary>
///

View File

@@ -17,7 +17,7 @@ public class MediaController(AobaService aobaService, ILogger<MediaController> l
[ResponseCache(Duration = int.MaxValue)]
public async Task<IActionResult> MediaAsync(ObjectId id, [FromServices] MongoClient client, CancellationToken cancellationToken)
{
var file = await aobaService.GetFileStreamAsync(id, cancellationToken: cancellationToken);
var file = await aobaService.GetFileStreamAsync(id, seekable: true, cancellationToken: cancellationToken);
if (file.HasError)
{
logger.LogError(file.Error.Exception, "Failed to load media stream");