<?php

namespace Kylin\Core;

use Illuminate\Support\ServiceProvider;

/**
 * Kylin Core 服务提供者
 *
 * 负责注册核心配置、中间件别名等基础服务。
 * 核心包提供统一响应格式、异常处理、错误码体系、
 * 基础模型、安全中间件和限流中间件。
 */
class CoreServiceProvider extends ServiceProvider
{
    /**
     * 注册服务
     *
     * 合并 kylin-core 配置文件，允许应用级覆盖。
     */
    public function register(): void
    {
        $this->mergeConfigFrom(
            __DIR__ . '/../config/kylin-core.php', 'kylin-core'
        );
    }

    /**
     * 启动服务
     *
     * 注册中间件别名并发布配置文件，方便应用层
     * 通过路由中间件使用 kylin.security 和 kylin.rate_limit。
     */
    public function boot(): void
    {
        $this->publishes([
            __DIR__ . '/../config/kylin-core.php' => config_path('kylin-core.php'),
        ], 'kylin-core-config');

        // 注册安全头中间件别名
        $this->app['router']->aliasMiddleware(
            'kylin.security',
            \Kylin\Core\Middleware\SecurityHeaders::class,
        );

        // 注册限流中间件别名
        $this->app['router']->aliasMiddleware(
            'kylin.rate_limit',
            \Kylin\Core\Middleware\RateLimit::class,
        );
    }
}
