# DDB .NET Cliente

El cliente DDB Microservices .NET permite el acceso a todas las operaciones DDB en idiomas como C#. Se accede a cada microservicio utilizando un paquete Nuget diferente.

Nota para usuarios externos - Muchos de los enlaces en la siguiente sección se refieren a aplicaciones internas. Hable con su equipo de proyecto para obtener apoyo.

# Requisitos previos

# Instalación

# nuget.config

Se requiere un archivo nuget.config para instalar los paquetes Nuget. Cree el archivo junto a su archivo .csproj o .sln con el siguiente contenido:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="ddb" value="https://pkgs.dev.azure.com/ovearup/_packaging/ddb/nuget/v3/index.json" />
  </packageSources>
</configuration>

# Paquetes

Cada microservicio es proporcionado por un paquete Nuget diferente. Los paquetes se pueden instalar con el comando:

dotnet add package <package name> --interactive

Los paquetes disponibles son:

# Configuración

Necesitarás un Registro de la aplicación de anuncios de Azure (opens new window) Para el cliente que accede a la API. Deberá configurar ámbitos y una URI de redirección para su aplicación.

# Escopas

Los ámbitos están configurados en la página API permissions. Estos se pueden agregar a través de Add a permission, luego seleccionando APIS my organization uses y finalmente seleccionando DigitalDesignBriefAPI. El permiso requerido es user_impersonation. Una vez que haya agregado estos, deberán ser aprobados con Grant admin consent for Arup que deberá registrarse en un boleto de servicio.

# Redirigir uri

También deberá configurar un URI de redirección para su aplicación. Esto se hace en la página Authentication. Para aplicaciones de escritorio, seleccione Add a platform, luego Mobile and desktop applications y finalmente seleccione https://login.microsoftonline.com/common/oauth2/nativeclient. Para otras aplicaciones, siga las instrucciones en la página Authentication.

# Uso

El objeto DDBClient configura la autenticación y el entorno para cada microservicio. Cada microservicio instalado se puede solicitar utilizando los métodos de extensión del cliente. Se proporciona una implementación de la adquisición de token para aplicaciones de escritorio. Otras aplicaciones, como los servidores, deberán implementar su propia adquisición de tokens implementando la interfaz ITokenAcquisition. Esto se puede pasar al DDBClient o DDBClientFactory en el constructor.

string clientId = "<client id>";
var ddbClient = new DDBClient(Environment.Sandbox, clientId);

var commentsService = ddbClient.GetCommentsService();

foreach (var comment in (await commentsService.GetCommentsAsync()).Comments)
{
    Console.WriteLine(comment.Content);
}

# Fábrica de clientes

También se proporciona una clase DDBClientFactory, que permite la creación de objetos DDBClient para un entorno determinado, mientras que la fábrica maneja la autenticación. Esto puede ser útil en escenarios en los que se usa la inyección de dependencia.

# Paginación

Las funciones auxiliares se suministran para trabajar con puntos finales paginados. Estos se encuentran en la clase estática Helpers.

Las funciones de Pagination Helper se simplifican repetidamente llamando a un punto final para devolver una lista paginada de resultados. Una firma de ejemplo es:

IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)

requestFunction es una función que pasa el parámetro after a la función DDB, inicialmente se pasa nulo.

getInner obtiene la colección interna de la respuesta de los resultados.

getAfter Obtiene el cursor after de la respuesta del resultado.

Por ejemplo:

var results = Helpers.Unpaginate(
 after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
 t => t.Parameters,
 t => t?.Paging?.Cursors?.After
);

# Helpers.Unpaginate

Esto está disponible en .NET Core 3.1 y se recomienda que lo use cuando esté disponible, ya que hará cada solicitud perezosamente a medida que se itera, en lugar de tener que recuperar todos los resultados en la memoria. Devuelve un IAsyncEnumerable, y con el System.Linq.Async (opens new window) El paquete instalado puede operarse con métodos LINQ familiares.

# Helpers.UnpaginateAll

Esto devuelve una sola lista de objetos llamando repetidamente al método de solicitud proporcionado hasta que se hayan recopilado todos los resultados. Esto generalmente solo debería usarse si Helpers.Unpaginate no está disponible. Se proporciona una sobrecarga que toma una función de transformación adicional, lo que permite que los resultados se transformen a medida que entran antes de ser agregados a la lista.

# Helpers.GetPaginatedFirstOrDefault

Esto devuelve un solo resultado de un punto final paginado. Toma una función de predicado y devuelve la primera respuesta que coincide con el predicado.

Last Updated: 21/6/2024, 11:34:44