/
PageBlobRangeResponse.ts
108 lines (98 loc) · 2.64 KB
/
PageBlobRangeResponse.ts
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import { HttpResponse } from "@azure/core-http";
import {
PageBlobGetPageRangesHeaders,
PageBlobGetPageRangesDiffHeaders,
PageBlobGetPageRangesResponse as PageBlobGetPageRangesResponseModel,
PageBlobGetPageRangesDiffResponse as PageBlobGetPageRangesDiffResponseModel
} from "./generatedModels";
import { Range } from "./Range";
/**
* List of page ranges for a blob.
*/
export interface PageList {
/**
* Valid non-overlapping page ranges.
*/
pageRange?: Range[];
/**
* Present if the prevSnapshot parameter was specified and there were cleared
* pages between the previous snapshot and the target snapshot.
*/
clearRange?: Range[];
}
/**
* Contains response data for the {@link BlobClient.getPageRanges} operation.
*/
export interface PageBlobGetPageRangesResponse extends PageList, PageBlobGetPageRangesHeaders {
/**
* The underlying HTTP response.
*/
_response: HttpResponse & {
/**
* The parsed HTTP response headers.
*/
parsedHeaders: PageBlobGetPageRangesHeaders;
/**
* The response body as text (string format)
*/
bodyAsText: string;
/**
* The response body as parsed JSON or XML
*/
parsedBody: PageList;
};
}
/**
* Contains response data for the {@link BlobClient.getPageRangesDiff} operation.
*/
export interface PageBlobGetPageRangesDiffResponse
extends PageList,
PageBlobGetPageRangesDiffHeaders {
/**
* The underlying HTTP response.
*/
_response: HttpResponse & {
/**
* The parsed HTTP response headers.
*/
parsedHeaders: PageBlobGetPageRangesDiffHeaders;
/**
* The response body as text (string format)
*/
bodyAsText: string;
/**
* The response body as parsed JSON or XML
*/
parsedBody: PageList;
};
}
/**
* Function that converts PageRange and ClearRange to a common Range object.
* PageRange and ClearRange have start and end while Range offset and count
* this function normalizes to Range.
* @param response Model PageBlob Range response
*/
export function rangeResponseFromModel(
response: PageBlobGetPageRangesResponseModel | PageBlobGetPageRangesDiffResponseModel
): PageBlobGetPageRangesResponse | PageBlobGetPageRangesDiffResponse {
const pageRange = (response._response.parsedBody.pageRange || []).map((x) => ({
offset: x.start,
count: x.end - x.start
}));
const clearRange = (response._response.parsedBody.clearRange || []).map((x) => ({
offset: x.start,
count: x.end - x.start
}));
return {
...response,
pageRange,
clearRange,
_response: {
...response._response,
parsedBody: {
pageRange,
clearRange
}
}
};
}