mirror of
				https://github.com/Kareadita/Kavita.git
				synced 2025-11-04 03:27:05 -05:00 
			
		
		
		
	* Added some basic OPDS implementation * Fixed an issue with feed href * More changes * Added library routes and moved user code to a method so we can hack in fixed code without authentication * Images now load on the OPDS reusing our existing Image infrastructure. * Added the ability to download and moved some download code to a dedicated service * Download is working, pagination is implemented. * Refactored libraries to use pagination * Laid foundation for OpenSearch implementation * Fixed up some serialization issues and some old code that wasn't referencing helper methods * Ensure chapters are sorted when we send them over OPDS * OpenSearch implemented * Removed any support for OPDS-PS due to lack of apps supporting it. * Don't distribute development.json nor stats directory on build. * Implemented In Progress feed as well. * Ability to enable OPDS for server. OPDS now accepts initial call as POST in case app uses username/password. * UI now properly renders state for OPDS enablement. Added Collections routes. * Fixed pagination startIndex on OPDS feeds when there is less than 1 page. * Chunky Reader now works. It only accepts UTF-8 encodings * More Chunky fixes * More chunky changes, such a fussy client. * Implemented the ability to have a custom api key assigned to a user and use that api key as your authentication token against OPDS routing. * Implemented the ability to reset your API Key * Fixed favicon not being sent back correctly * Fixed an issue where images wouldn't send on OPDS feed. * Implemented Page streaming and fixed a pagination bug * Hooked in the ability to save progress in Kavita when Page Streaming
		
			
				
	
	
		
			67 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using API.Data;
 | 
						|
using API.Helpers;
 | 
						|
using API.Interfaces;
 | 
						|
using API.Interfaces.Services;
 | 
						|
using API.Services;
 | 
						|
using API.Services.Tasks;
 | 
						|
using API.SignalR.Presence;
 | 
						|
using Kavita.Common;
 | 
						|
using Microsoft.AspNetCore.Hosting;
 | 
						|
using Microsoft.EntityFrameworkCore;
 | 
						|
using Microsoft.Extensions.Configuration;
 | 
						|
using Microsoft.Extensions.DependencyInjection;
 | 
						|
using Microsoft.Extensions.Hosting;
 | 
						|
using Microsoft.Extensions.Logging;
 | 
						|
 | 
						|
namespace API.Extensions
 | 
						|
{
 | 
						|
    public static class ApplicationServiceExtensions
 | 
						|
    {
 | 
						|
        public static void AddApplicationServices(this IServiceCollection services, IConfiguration config, IWebHostEnvironment env)
 | 
						|
        {
 | 
						|
            services.AddAutoMapper(typeof(AutoMapperProfiles).Assembly);
 | 
						|
            services.AddScoped<IStatsService, StatsService>();
 | 
						|
            services.AddScoped<ITaskScheduler, TaskScheduler>();
 | 
						|
            services.AddScoped<IDirectoryService, DirectoryService>();
 | 
						|
            services.AddScoped<ITokenService, TokenService>();
 | 
						|
            services.AddScoped<ICacheService, CacheService>();
 | 
						|
            services.AddScoped<IUnitOfWork, UnitOfWork>();
 | 
						|
            services.AddScoped<IScannerService, ScannerService>();
 | 
						|
            services.AddScoped<IArchiveService, ArchiveService>();
 | 
						|
            services.AddScoped<IMetadataService, MetadataService>();
 | 
						|
            services.AddScoped<IBackupService, BackupService>();
 | 
						|
            services.AddScoped<ICleanupService, CleanupService>();
 | 
						|
            services.AddScoped<IBookService, BookService>();
 | 
						|
            services.AddScoped<IImageService, ImageService>();
 | 
						|
            services.AddScoped<IVersionUpdaterService, VersionUpdaterService>();
 | 
						|
            services.AddScoped<IDownloadService, DownloadService>();
 | 
						|
            services.AddScoped<IReaderService, ReaderService>();
 | 
						|
 | 
						|
            services.AddScoped<IPresenceTracker, PresenceTracker>();
 | 
						|
 | 
						|
            services.AddSqLite(config, env);
 | 
						|
            services.AddLogging(config);
 | 
						|
            services.AddSignalR();
 | 
						|
        }
 | 
						|
 | 
						|
        private static void AddSqLite(this IServiceCollection services, IConfiguration config,
 | 
						|
            IWebHostEnvironment env)
 | 
						|
        {
 | 
						|
            services.AddDbContext<DataContext>(options =>
 | 
						|
            {
 | 
						|
                options.UseSqlite(config.GetConnectionString("DefaultConnection"));
 | 
						|
                options.EnableSensitiveDataLogging(env.IsDevelopment() || Configuration.LogLevel.Equals("Debug"));
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
        private static void AddLogging(this IServiceCollection services, IConfiguration config)
 | 
						|
        {
 | 
						|
          services.AddLogging(loggingBuilder =>
 | 
						|
          {
 | 
						|
            var loggingSection = config.GetSection("Logging");
 | 
						|
            loggingBuilder.AddFile(loggingSection);
 | 
						|
          });
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |