/*
* Jellyfin.Plugin.Webdav
* Copyright (C) 2025 Jellyfin contributors
* Licensed under GPLv3
*/
namespace Jellyfin.Plugin.Webdav
{
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Configuration;
using Microsoft.Extensions.Hosting;
///
/// Hosted service that registers the WebDAV cache as a virtual folder on startup.
///
public sealed class WebDavSyncService : IHostedService
{
private readonly IServerApplicationPaths appPaths;
private readonly ILibraryManager libraryManager;
///
/// Initializes a new instance of the class.
///
/// Server application paths.
/// Library manager.
public WebDavSyncService(IServerApplicationPaths appPaths, ILibraryManager libraryManager)
{
this.appPaths = appPaths;
this.libraryManager = libraryManager;
}
///
public async Task StartAsync(CancellationToken cancellationToken)
{
var localRoot = Path.Combine(this.appPaths.DefaultUserViewsPath, "WebDAV");
Directory.CreateDirectory(localRoot);
var options = new LibraryOptions();
await this.libraryManager
.AddVirtualFolder("WebDAV", null, options, true)
.ConfigureAwait(false);
}
///
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
}
}