-
Notifications
You must be signed in to change notification settings - Fork 240
Expand file tree
/
Copy pathVsoBaseInterfaces.ts
More file actions
111 lines (99 loc) · 3.65 KB
/
VsoBaseInterfaces.ts
File metadata and controls
111 lines (99 loc) · 3.65 KB
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
109
110
111
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
// ---------------------------------------------------------------------------
// API Client Interfaces
//----------------------------------------------------------------------------
import Serialization = require('../../Serialization');
import http = require("http");
import url = require("url");
/**
* Information about the location of a REST API resource
*/
export interface ApiResourceLocation {
/**
* Area name for this resource
*/
area: string;
/**
* Unique Identifier for this location
*/
id: string;
/**
* Maximum api version that this resource supports (current server version for this resource)
*/
maxVersion: string;
/**
* Minimum api version that this resource supports
*/
minVersion: string;
/**
* The latest version of this resource location that is in "Release" (non-preview) mode
*/
releasedVersion: string;
/**
* Resource name
*/
resourceName: string;
/**
* The current resource version supported by this resource location
*/
resourceVersion: number;
/**
* This location's route template (templated relative path)
*/
routeTemplate: string;
}
export interface IHeaders { [key: string]: any }
export interface IBasicCredentials {
username: string;
password: string;
}
export interface IHttpClient {
options(requestUrl: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
get(requestUrl: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
del(requestUrl: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
post(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
patch(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
put(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: IHeaders): Promise<IHttpClientResponse>;
requestRaw(info: IRequestInfo, data: string | NodeJS.ReadableStream): Promise<IHttpClientResponse>;
requestRawWithCallback(info: IRequestInfo, data: string | NodeJS.ReadableStream, onResult: (err: any, res: IHttpClientResponse) => void): void;
}
export interface IRequestInfo {
options: http.RequestOptions;
parsedUrl: url.Url;
httpModule: any;
}
export interface IRequestHandler {
prepareRequest(options: http.RequestOptions): void;
canHandleAuthentication(response: IHttpClientResponse): boolean;
handleAuthentication(httpClient: IHttpClient, requestInfo: IRequestInfo, objs): Promise<IHttpClientResponse>;
}
export interface IHttpClientResponse {
message: http.IncomingMessage;
readBody(): Promise<string>;
}
export interface IRequestOptions {
socketTimeout?: number;
ignoreSslError?: boolean;
proxy?: IProxyConfiguration;
cert?: ICertConfiguration;
allowRetries?: boolean;
maxRetries?: number;
allowRedirects?: boolean;
maxRedirects?: number;
presignedUrlPatterns?: RegExp[];
}
export interface IProxyConfiguration {
proxyUrl: string;
proxyUsername?: string;
proxyPassword?: string;
proxyBypassHosts?: string[];
}
export interface ICertConfiguration {
caFile?: string;
certFile?: string;
keyFile?: string;
passphrase?: string;
}