# `LibOss.Config.Validator`
[🔗](https://github.com/tt67wq/lib-oss/blob/main/lib/lib_oss/config/validator.ex#L1)

增强的配置验证器，提供运行时配置验证和环境特定配置支持。

该模块扩展了基础的NimbleOptions验证，添加了：
- 运行时配置验证
- 环境特定配置支持
- 详细的错误提示
- 配置值的格式验证

# `env`

```elixir
@type env() :: :dev | :test | :prod
```

# `validation_result`

```elixir
@type validation_result() :: {:ok, keyword()} | {:error, String.t()}
```

# `get_schema`

```elixir
@spec get_schema(env()) :: keyword()
```

获取配置模式定义。

## 参数

  * `env` - 环境 (:dev, :test, :prod)

## 返回值

  * NimbleOptions 模式定义

# `validate`

```elixir
@spec validate(keyword(), keyword()) :: validation_result()
```

验证配置参数。

## 参数

  * `config` - 配置关键字列表
  * `opts` - 验证选项
    * `:env` - 环境 (:dev, :test, :prod)
    * `:runtime` - 是否进行运行时验证 (默认: true)

## 返回值

  * `{:ok, validated_config}` - 验证成功
  * `{:error, error_message}` - 验证失败

## 示例

    iex> config = [
    ...>   access_key_id: "test_access_key_id_123",
    ...>   access_key_secret: "test_access_key_secret_12345678901234567890",
    ...>   endpoint: "oss-cn-hangzhou.aliyuncs.com"
    ...> ]
    iex> {:ok, result} = LibOss.Config.Validator.validate(config, runtime: false)
    iex> Keyword.get(result, :access_key_id)
    "test_access_key_id_123"

# `validate!`

```elixir
@spec validate!(keyword(), keyword()) :: keyword()
```

验证配置参数，验证失败时抛出异常。

## 参数

  * `config` - 配置关键字列表
  * `opts` - 验证选项（同 `validate/2`）

## 返回值

  * `validated_config` - 验证成功的配置

## 异常

  * `LibOss.Exception` - 验证失败

## 示例

    iex> config = [
    ...>   access_key_id: "test_access_key_id_123",
    ...>   access_key_secret: "test_access_key_secret_12345678901234567890",
    ...>   endpoint: "oss-cn-hangzhou.aliyuncs.com"
    ...> ]
    iex> result = LibOss.Config.Validator.validate!(config, runtime: false)
    iex> Keyword.get(result, :access_key_id)
    "test_access_key_id_123"

---

*Consult [api-reference.md](api-reference.md) for complete listing*
