#### [Abblix\.Oidc\.Server](https://www.abblix.com/en/docs/api/abblix-oidc-server 'index')
### [Abblix\.Oidc\.Server\.Endpoints\.Authorization\.RequestFetching](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.RequestFetching')

## CompositeRequestFetcher Class

A composite fetcher that combines multiple [IAuthorizationRequestFetcher](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.RequestFetching\.IAuthorizationRequestFetcher') instances\.
It iterates through each fetcher to process an authorization request, allowing for a flexible and
extensible mechanism to fetch and validate authorization requests from different sources or formats\.

```csharp
public class CompositeRequestFetcher : Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher
```

Inheritance [System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object') → CompositeRequestFetcher

Implements [IAuthorizationRequestFetcher](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.RequestFetching\.IAuthorizationRequestFetcher')
### Constructors

## CompositeRequestFetcher\(IAuthorizationRequestFetcher\[\]\) Constructor {#Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.CompositeRequestFetcher.CompositeRequestFetcher(Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher[])}

A composite fetcher that combines multiple [IAuthorizationRequestFetcher](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.RequestFetching\.IAuthorizationRequestFetcher') instances\.
It iterates through each fetcher to process an authorization request, allowing for a flexible and
extensible mechanism to fetch and validate authorization requests from different sources or formats\.

```csharp
public CompositeRequestFetcher(Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher[] fetchers);
```
#### Parameters

###### `fetchers` [IAuthorizationRequestFetcher](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.RequestFetching\.IAuthorizationRequestFetcher')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array') {#Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.CompositeRequestFetcher.CompositeRequestFetcher(Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher[]).fetchers}

An array of [IAuthorizationRequestFetcher](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.RequestFetching\.IAuthorizationRequestFetcher') instances that will be used
            to fetch and validate the authorization request\.
### Methods

## CompositeRequestFetcher\.FetchAsync\(AuthorizationRequest\) Method {#Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.CompositeRequestFetcher.FetchAsync(Abblix.Oidc.Server.Model.AuthorizationRequest)}

Iterates through the configured fetchers to process the authorization request\. Each fetcher in the array
has the opportunity to handle the request\. If a fetcher returns a fault, the process stops and
the fault is returned\. If all fetchers succeed, the method returns the final successful result\.

```csharp
public System.Threading.Tasks.Task<Abblix.Utils.Result<Abblix.Oidc.Server.Model.AuthorizationRequest,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.AuthorizationRequestValidationError>> FetchAsync(Abblix.Oidc.Server.Model.AuthorizationRequest request);
```
#### Parameters

###### `request` [AuthorizationRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.AuthorizationRequest 'Abblix\.Oidc\.Server\.Model\.AuthorizationRequest') {#Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.CompositeRequestFetcher.FetchAsync(Abblix.Oidc.Server.Model.AuthorizationRequest).request}

The authorization request to be processed\.

Implements [FetchAsync\(AuthorizationRequest\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher#Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher.FetchAsync(Abblix.Oidc.Server.Model.AuthorizationRequest) 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.RequestFetching\.IAuthorizationRequestFetcher\.FetchAsync\(Abblix\.Oidc\.Server\.Model\.AuthorizationRequest\)')

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[AuthorizationRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.AuthorizationRequest 'Abblix\.Oidc\.Server\.Model\.AuthorizationRequest')[,](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[AuthorizationRequestValidationError](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.AuthorizationRequestValidationError 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.AuthorizationRequestValidationError')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A [Abblix\.Utils\.Result&lt;&gt;](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2') of [AuthorizationRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.AuthorizationRequest 'Abblix\.Oidc\.Server\.Model\.AuthorizationRequest') on success or
            [AuthorizationRequestValidationError](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.AuthorizationRequestValidationError 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.AuthorizationRequestValidationError') on failure, representing the outcome of the fetching
            process\. If a fetcher returns a fault, that fault is propagated; otherwise the final successful request is
            returned\.
