网站首页 网站源码
website
站点相关全部源代码,隐藏了一些关于服务器的信息
using System.Globalization;
using Dpz.Core.Backup;
using Dpz.Core.Hangfire;
using Dpz.Core.Service.Network;
using Dpz.Core.Shard.Service;
using Dzp.Core.Shard.Implement.Service;
using Hangfire;
using Hangfire.Dashboard;
using MailKit;
using Microsoft.AspNetCore.Localization;

namespace Dpz.Core.WebApi;

/// <summary>
///
/// </summary>
public static class DependencyInjectionExtensions
{
    /// <summary>
    /// Ioc 注册
    /// </summary>
    /// <param name="services"></param>
    /// <returns></returns>
    public static IServiceCollection AddAppScoped(this IServiceCollection services)
    {
        services.AddHttpClient();

        services.AddHttpClient(
            "edge",
            httpClient => { httpClient.DefaultRequestHeaders.Add("User-Agent", EnvironmentInfo.UserAgent); }
        );

        // 添加 又拍云储存
        services.AddUpyunObjectStorage();
        // 视频处理
        services.AddVideoSyncHandleService();
        // 邮件日志
        services.AddTransient<IProtocolLogger, SerilogProtocolLogger>();
        services.AddUpyunSafeFileService();
        services.AddBackupRestoreService();

        services.AddScoped<IVideoShardService, VideoShardService>();
        services.AddNetworkServices();
        return services;
    }


    /// <summary>
    /// hangfire UI设置及周期性任务调度
    /// </summary>
    /// <param name="app"></param>
    /// <returns></returns>
    public static void HangfireSetting(this IApplicationBuilder app)
    {
        var supportedCultures = new[]
        {
            new CultureInfo("zh-CN"),
        };
        app.UseRequestLocalization(new RequestLocalizationOptions
        {
            DefaultRequestCulture = new RequestCulture("zh-CN"),
            // Formatting numbers, dates, etc.
            SupportedCultures = supportedCultures,
            // UI strings that we have localized.
            SupportedUICultures = supportedCultures
        });

        app.UseHangfireDashboard("/jobs", new DashboardOptions
        {
            AppPath = "/",
            StatsPollingInterval = 5000,
            //可编辑任务
            IsReadOnlyFunc = _ => false,
            DarkModeEnabled = true,
            DashboardTitle = "任务管理",
            FaviconPath = "/favicon.ico"
        });
    }
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

上述代码是一个 ASP.NET Core 应用程序中的依赖注入和 Hangfire 配置的扩展类。它主要包含两个方法:AddAppScopedHangfireSetting。下面是对这两个方法的详细解释:

1. AddAppScoped 方法

这个方法用于注册应用程序中需要的服务到依赖注入容器中。具体功能如下:

  • 添加 HTTP 客户端

    • services.AddHttpClient();:注册一个默认的 HTTP 客户端。
    • services.AddHttpClient("edge", ...):注册一个名为 "edge" 的 HTTP 客户端,并设置其默认请求头中的 User-Agent
  • 添加又拍云存储服务

    • services.AddUpyunObjectStorage();:注册又拍云的对象存储服务。
  • 视频处理服务

    • services.AddVideoSyncHandleService();:注册视频同步处理服务。
  • 邮件日志服务

    • services.AddTransient<IProtocolLogger, SerilogProtocolLogger>();:注册一个邮件日志服务,使用 Serilog 作为日志记录器。
  • 安全文件服务

    • services.AddUpyunSafeFileService();:注册又拍云的安全文件服务。
  • 备份和恢复服务

    • services.AddBackupRestoreService();:注册备份和恢复服务。
  • 视频分片服务

    • services.AddScoped<IVideoShardService, VideoShardService>();:注册视频分片服务。
  • 网络服务

    • services.AddNetworkServices();:注册网络相关的服务。

2. HangfireSetting 方法

这个方法用于配置 Hangfire 的设置和请求的区域化(Localization)。具体功能如下:

  • 设置支持的文化

    • 定义一个支持的文化数组 supportedCultures,这里只包含中文(简体)。
  • 请求区域化

    • app.UseRequestLocalization(...):配置请求的区域化选项,设置默认请求文化为中文,并指定支持的文化和 UI 文化。
  • 配置 Hangfire Dashboard

    • app.UseHangfireDashboard(...):配置 Hangfire 的仪表板,设置访问路径为 /jobs,并配置一些选项:
      • AppPath:设置应用程序的路径。
      • StatsPollingInterval:设置统计信息的轮询间隔为 5000 毫秒。
      • IsReadOnlyFunc:设置仪表板是否为只读,这里返回 false,表示可以编辑任务。
      • DarkModeEnabled:启用暗黑模式。
      • DashboardTitle:设置仪表板的标题为 "任务管理"。
      • FaviconPath:设置仪表板的图标路径。

总结

整体来看,这段代码的主要功能是为 ASP.NET Core 应用程序配置依赖注入服务和 Hangfire 的仪表板。它通过 AddAppScoped 方法注册了多个服务,确保应用程序能够使用这些服务进行视频处理、文件存储、日志记录等功能。同时,HangfireSetting 方法则配置了 Hangfire 的仪表板和请求的区域化设置,以便于用户管理后台任务。

loading