30 lines
889 B
C#
30 lines
889 B
C#
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Api;
|
|
|
|
public static class Program {
|
|
public static void Main(string[] args) {
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
var app = builder.Build();
|
|
|
|
app.MapGet("/api/r/{**file}", async ([FromRoute] string file) => {
|
|
if (!ValidEpisode(file)) return Results.BadRequest();
|
|
try {
|
|
var link = await new B2ApiClient().GetDownloadLink(file);
|
|
return Results.Json(link);
|
|
} catch (Exception ex) {
|
|
Console.WriteLine("Error fetching download link");
|
|
Console.WriteLine($"{ex.GetType().Name}: {ex.Message}");
|
|
Console.WriteLine(ex.StackTrace);
|
|
return Results.Problem();
|
|
}
|
|
});
|
|
|
|
app.Run();
|
|
}
|
|
|
|
private static bool ValidEpisode(string file) {
|
|
return file.StartsWith("otr/", StringComparison.InvariantCulture)
|
|
&& file.Split('/').Length == 3;
|
|
}
|
|
}
|