> ## Documentation Index
> Fetch the complete documentation index at: https://easyaf.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# TestCacheReadDelegatingHandler

> Handler for returning HTTP responses from cached files.

## Definition

**Assembly:** CloudNimble.Breakdance.Assemblies.dll

**Namespace:** CloudNimble.Breakdance.Assemblies.Http

**Inheritance:** CloudNimble.Breakdance.Assemblies.Http.ResponseSnapshotReplayHandler

## Syntax

```csharp theme={"dark"}
CloudNimble.Breakdance.Assemblies.Http.TestCacheReadDelegatingHandler
```

## Summary

Handler for returning HTTP responses from cached files.

## Remarks

This class is deprecated. Use [ResponseSnapshotReplayHandler](/breakdance/api-reference/CloudNimble/Breakdance/Assemblies/Http/ResponseSnapshotReplayHandler) instead.

## Constructors

### <Icon icon="hammer" iconType="duotone" color="#419AC5" size={24} className="mr-2" /> .ctor

Creates a new [TestCacheReadDelegatingHandler](/breakdance/api-reference/CloudNimble/Breakdance/Assemblies/Http/TestCacheReadDelegatingHandler) with the specified root folder path.

#### Syntax

```csharp theme={"dark"}
public TestCacheReadDelegatingHandler(string responseFilesPath)
```

#### Parameters

| Name                | Type     | Description                                         |
| ------------------- | -------- | --------------------------------------------------- |
| `responseFilesPath` | `string` | Root folder path for storing static response files. |

#### Remarks

This constructor is deprecated. Use [ResponseSnapshotReplayHandler](/breakdance/api-reference/CloudNimble/Breakdance/Assemblies/Http/ResponseSnapshotReplayHandler) instead.

### <Icon icon="hammer" iconType="duotone" color="#419AC5" size={24} className="mr-2" /> .ctor <Badge color="gray">Inherited</Badge>

<Note>Inherited from `CloudNimble.Breakdance.Assemblies.Http.ResponseSnapshotReplayHandler`</Note>

Creates a new [ResponseSnapshotReplayHandler](/breakdance/api-reference/CloudNimble/Breakdance/Assemblies/Http/ResponseSnapshotReplayHandler) that reads response snapshots from the specified path.

#### Syntax

```csharp theme={"dark"}
public ResponseSnapshotReplayHandler(string responseSnapshotsPath)
```

#### Parameters

| Name                    | Type     | Description                                          |
| ----------------------- | -------- | ---------------------------------------------------- |
| `responseSnapshotsPath` | `string` | Root folder path containing response snapshot files. |

### <Icon icon="hammer" iconType="duotone" color="#419AC5" size={24} className="mr-2" /> .ctor <Badge color="gray">Inherited</Badge>

<Note>Inherited from `CloudNimble.Breakdance.Assemblies.Http.ResponseSnapshotHandlerBase`</Note>

Creates a new [ResponseSnapshotHandlerBase](/breakdance/api-reference/CloudNimble/Breakdance/Assemblies/Http/ResponseSnapshotHandlerBase) with the specified snapshot storage path.

#### Syntax

```csharp theme={"dark"}
public ResponseSnapshotHandlerBase(string responseSnapshotsPath)
```

#### Parameters

| Name                    | Type     | Description                                           |
| ----------------------- | -------- | ----------------------------------------------------- |
| `responseSnapshotsPath` | `string` | Root folder path for storing response snapshot files. |

#### Examples

```csharp theme={"dark"}
var handler = new ResponseSnapshotReplayHandler("TestData/Snapshots");
var client = new HttpClient(handler);
```

## Properties

### <Icon icon="tag" iconType="duotone" color="#419AC5" size={24} className="mr-2" /> ResponseSnapshotsPath <Badge color="gray">Inherited</Badge>

<Note>Inherited from `CloudNimble.Breakdance.Assemblies.Http.ResponseSnapshotHandlerBase`</Note>

Gets the root folder path where response snapshot files are stored.

#### Syntax

```csharp theme={"dark"}
public string ResponseSnapshotsPath { get; private set; }
```

#### Property Value

Type: `string`

## Methods

### <Icon icon="thumbtack" iconType="duotone" color="#419AC5" size={24} className="mr-2" /> GetFileExtensionString <Badge color="gray">Inherited</Badge>

<Note>Inherited from `CloudNimble.Breakdance.Assemblies.Http.ResponseSnapshotHandlerBase`</Note>

Maps the MediaType header in the [HttpRequestMessage](https://learn.microsoft.com/dotnet/api/system.net.http.httprequestmessage) to a known list of file extensions.

#### Syntax

```csharp theme={"dark"}
public static string GetFileExtensionString(System.Net.Http.HttpRequestMessage request)
```

#### Parameters

| Name      | Type                                 | Description             |
| --------- | ------------------------------------ | ----------------------- |
| `request` | `System.Net.Http.HttpRequestMessage` | The request to examine. |

#### Returns

Type: `string`
The file extension string for the request's Accept header.

#### Exceptions

| Exception               | Description                  |
| ----------------------- | ---------------------------- |
| `ArgumentNullException` | Thrown when request is null. |

### <Icon icon="thumbtack" iconType="duotone" color="#419AC5" size={24} className="mr-2" /> GetPathInfo <Badge color="gray">Inherited</Badge>

<Note>Inherited from `CloudNimble.Breakdance.Assemblies.Http.ResponseSnapshotHandlerBase`</Note>

Parses the RequestUri in the [HttpRequestMessage](https://learn.microsoft.com/dotnet/api/system.net.http.httprequestmessage) into a [Path](https://learn.microsoft.com/dotnet/api/system.io.path)-safe string
suitable for storing response snapshots on the file system.

#### Syntax

```csharp theme={"dark"}
internal static (string, string) GetPathInfo(System.Net.Http.HttpRequestMessage request, string responseSnapshotsPath)
```

#### Parameters

| Name                    | Type                                 | Description                                                                                                   |
| ----------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
| `request`               | `System.Net.Http.HttpRequestMessage` | The [HttpRequestMessage](https://learn.microsoft.com/dotnet/api/system.net.http.httprequestmessage) to parse. |
| `responseSnapshotsPath` | `string`                             | Root folder for storing snapshot files.                                                                       |

#### Returns

Type: `(string, string)`
A tuple containing the directory path and file path components.

#### Exceptions

| Exception                   | Description                                                   |
| --------------------------- | ------------------------------------------------------------- |
| `ArgumentException`         | Thrown when the request has an invalid RequestUri.            |
| `InvalidOperationException` | Thrown when the URI cannot be converted to a valid file path. |

### <Icon icon="thumbtack" iconType="duotone" color="#419AC5" size={24} className="mr-2" /> GetResponseMediaTypeString <Badge color="gray">Inherited</Badge>

<Note>Inherited from `CloudNimble.Breakdance.Assemblies.Http.ResponseSnapshotHandlerBase`</Note>

Maps the file extension in the specified path to a known list of media types.

#### Syntax

```csharp theme={"dark"}
public static string GetResponseMediaTypeString(string filePath)
```

#### Parameters

| Name       | Type     | Description               |
| ---------- | -------- | ------------------------- |
| `filePath` | `string` | The file path to examine. |

#### Returns

Type: `string`
The MIME type string for the file extension.

### <Icon icon="code-merge" iconType="duotone" color="#419AC5" size={24} className="mr-2" /> SendAsync <Badge color="blue">Override</Badge>

<Note>Inherited from `CloudNimble.Breakdance.Assemblies.Http.ResponseSnapshotReplayHandler`</Note>

Intercepts the HTTP request and returns a response loaded from a snapshot file.

#### Syntax

```csharp theme={"dark"}
protected override System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
```

#### Parameters

| Name                | Type                                 | Description                                                                                                            |
| ------------------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| `request`           | `System.Net.Http.HttpRequestMessage` | The [HttpRequestMessage](https://learn.microsoft.com/dotnet/api/system.net.http.httprequestmessage) being intercepted. |
| `cancellationToken` | `System.Threading.CancellationToken` | Token for cancelling the asynchronous operation.                                                                       |

#### Returns

Type: `System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>`
An [HttpResponseMessage](https://learn.microsoft.com/dotnet/api/system.net.http.httpresponsemessage) with content loaded from the corresponding snapshot file.

#### Exceptions

| Exception                   | Description                                          |
| --------------------------- | ---------------------------------------------------- |
| `ArgumentNullException`     | Thrown when *request* is null.                       |
| `InvalidOperationException` | Thrown when no snapshot file exists for the request. |

### <Icon icon="function" iconType="duotone" color="#419AC5" size={24} className="mr-2" /> SendAsyncInternal <Badge color="gray">Inherited</Badge>

<Note>Inherited from `CloudNimble.Breakdance.Assemblies.Http.ResponseSnapshotReplayHandler`</Note>

Allows test projects to call the otherwise inaccessible `CancellationToken)` method directly.

#### Syntax

```csharp theme={"dark"}
internal System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsyncInternal(System.Net.Http.HttpRequestMessage request)
```

#### Parameters

| Name      | Type                                 | Description                                                                                                     |
| --------- | ------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
| `request` | `System.Net.Http.HttpRequestMessage` | The [HttpRequestMessage](https://learn.microsoft.com/dotnet/api/system.net.http.httprequestmessage) to process. |

#### Returns

Type: `System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>`
The [HttpResponseMessage](https://learn.microsoft.com/dotnet/api/system.net.http.httpresponsemessage) loaded from the snapshot file.
