/
ItemResponse.cs
66 lines (55 loc) · 1.97 KB
/
ItemResponse.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------
namespace Microsoft.Azure.Cosmos
{
using System.Net;
using Microsoft.Azure.Cosmos.Diagnostics;
using Microsoft.Azure.Cosmos.Tracing;
/// <summary>
/// The cosmos item response
/// </summary>
public class ItemResponse<T> : Response<T>
{
/// <summary>
/// Create a <see cref="ItemResponse{T}"/> as a no-op for mock testing
/// </summary>
protected ItemResponse()
: base()
{
}
/// <summary>
/// A private constructor to ensure the factory is used to create the object.
/// This will prevent memory leaks when handling the CosmosResponseMessage
/// </summary>
internal ItemResponse(
HttpStatusCode httpStatusCode,
Headers headers,
T item,
CosmosDiagnostics diagnostics,
RequestMessage requestMessage)
{
this.StatusCode = httpStatusCode;
this.Headers = headers;
this.Resource = item;
this.Diagnostics = diagnostics;
this.RequestMessage = requestMessage;
}
/// <inheritdoc/>
internal override RequestMessage RequestMessage { get; }
/// <inheritdoc/>
public override Headers Headers { get; }
/// <inheritdoc/>
public override T Resource { get; }
/// <inheritdoc/>
public override HttpStatusCode StatusCode { get; }
/// <inheritdoc/>
public override CosmosDiagnostics Diagnostics { get; }
/// <inheritdoc/>
public override double RequestCharge => this.Headers?.RequestCharge ?? 0;
/// <inheritdoc/>
public override string ActivityId => this.Headers?.ActivityId;
/// <inheritdoc/>
public override string ETag => this.Headers?.ETag;
}
}