Sisk

Proveedor de configuración INI

Esta página fue traducida automáticamente del inglés. Leer el original

Sisk tiene un método para obtener configuraciones de inicio diferentes a JSON. De hecho, cualquier canalización que implemente IConfigurationReader se puede utilizar con PortableConfigurationBuilder.WithConfigurationPipeline, leyendo la configuración del servidor desde cualquier tipo de archivo.

El paquete Sisk.IniConfiguration proporciona un lector de archivos INI basado en flujo que no lanza excepciones por errores de sintaxis comunes y tiene una sintaxis de configuración simple. Este paquete se puede utilizar fuera del marco de Sisk, ofreciendo flexibilidad para proyectos que requieren un lector de documentos INI eficiente.

Instalación #

Para instalar el paquete, puede comenzar con:

Bash
$ dotnet add package Sisk.IniConfiguration

También puede instalar el paquete principal, que no incluye el IConfigurationReader INI, ni la dependencia de Sisk, solo los serializadores INI:

Bash
$ dotnet add package Sisk.IniConfiguration.Core

Con el paquete principal, puede utilizarlo en su código como se muestra en el ejemplo a continuación:

C#
class Program
{
    static HttpServerHostContext Host = null!;

    static void Main(string[] args)
    {
        Host = HttpServer.CreateBuilder()
            .UsePortableConfiguration(config =>
            {
                config.WithConfigFile("app.ini", createIfDontExists: true);
                
                // utiliza el lector de configuración IniConfigurationReader
                config.WithConfigurationPipeline<IniConfigurationReader>();
            })
            .UseRouter(r =>
            {
                r.MapGet("/", SayHello);
            })
            .Build();
        
        Host.Start();
    }

    static HttpResponse SayHello(HttpRequest request)
    {
        string? name = Host.Parameters["name"] ?? "world";
        return new HttpResponse($"Hello, {name}!");
    }
}

El código anterior buscará un archivo app.ini en el directorio actual del proceso (CurrentDirectory). El archivo INI se ve así:

INI
[Server]
# Se admiten varias direcciones de escucha
Listen = http://localhost:5552/
Listen = http://localhost:5553/
ThrowExceptions = false
AccessLogsStream = console

[Cors]
AllowMethods = GET, POST
AllowHeaders = Content-Type, Authorization
AllowOrigin = *

[Parameters]
Name = "Kanye West"

Sabor y sintaxis INI #

Implementación actual del sabor:

  • Los nombres de propiedades y secciones son insensibles a mayúsculas y minúsculas.
  • Los nombres de propiedades y valores son recortados, a menos que los valores estén entre comillas.
  • Los valores pueden estar entre comillas simples o dobles. Las comillas pueden tener saltos de línea dentro de ellas.
  • Los comentarios están soportados con # y ;. También se permiten comentarios al final.
  • Las propiedades pueden tener varios valores.

En detalle, la documentación para el “sabor” del analizador INI utilizado en Sisk está disponible en este documento.

Utilizando el siguiente código INI como ejemplo:

INI
One = 1
Value = this is an value
Another value = "this value
    has an line break on it"

; el código a continuación tiene algunos colores
[some section]
Color = Red
Color = Blue
Color = Yellow ; no use amarillo

Analícelo con:

C#
// analice el texto INI desde la cadena
IniDocument doc = IniDocument.FromString(iniText);

// obtenga un valor
string? one = doc.Global.GetOne("one");
string? anotherValue = doc.Global.GetOne("another value");

// obtenga varios valores
string[]? colors = doc.GetSection("some section")?.GetMany("color");

Parámetros de configuración #

Sección y nombrePermite varios valoresDescripción
Server.ListenSíLas direcciones/puertos de escucha del servidor.
Server.EncodingNoLa codificación predeterminada del servidor.
Server.MaximumContentLengthNoEl tamaño máximo de contenido en bytes del servidor.
Server.IncludeRequestIdHeaderNoEspecifica si el servidor HTTP debe enviar el encabezado X-Request-Id.
Server.ThrowExceptionsNoEspecifica si las excepciones no controladas deben lanzarse.
Server.AccessLogsStreamNoEspecifica la secuencia de salida de registros de acceso.
Server.ErrorsLogsStreamNoEspecifica la secuencia de salida de registros de errores.
Cors.AllowMethodsNoEspecifica el valor del encabezado CORS Allow-Methods.
Cors.AllowHeadersNoEspecifica el valor del encabezado CORS Allow-Headers.
Cors.AllowOriginsNoEspecifica varios encabezados Allow-Origin, separados por comas. AllowOrigins para más información.
Cors.AllowOriginNoEspecifica un encabezado Allow-Origin.
Cors.ExposeHeadersNoEspecifica el valor del encabezado CORS Expose-Headers.
Cors.AllowCredentialsNoEspecifica el valor del encabezado CORS Allow-Credentials.
Cors.MaxAgeNoEspecifica el valor del encabezado CORS Max-Age.

Escribe para buscar en la documentación y en la referencia de la API.