Skip to content

Commit b57a23e

Browse files
connect on webapi (#94)
* connect on webapi * remove commented block * better pattern
1 parent 5db8f42 commit b57a23e

4 files changed

Lines changed: 42 additions & 13 deletions

File tree

api/WebApi.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ import bearm = require('./handlers/bearertoken');
3535
import ntlmm = require('./handlers/ntlm');
3636
import patm = require('./handlers/personalaccesstoken');
3737

38+
import * as rm from 'typed-rest-client/RestClient';
39+
//import * as hm from 'typed-rest-client/HttpClient';
40+
import vsom = require('./VsoClient');
41+
3842
/**
3943
* Methods to return handler objects (see handlers folder)
4044
*/
@@ -64,6 +68,8 @@ export class WebApi {
6468

6569
serverUrl: string;
6670
authHandler: VsoBaseInterfaces.IRequestHandler;
71+
rest: rm.RestClient;
72+
vsoClient: vsom.VsoClient;
6773

6874
/*
6975
* Factory to return client apis and handlers
@@ -73,6 +79,8 @@ export class WebApi {
7379
constructor(defaultUrl: string, authHandler: VsoBaseInterfaces.IRequestHandler) {
7480
this.serverUrl = defaultUrl;
7581
this.authHandler = authHandler;
82+
this.rest = new rm.RestClient('vsts-node-api', null, [this.authHandler]);
83+
this.vsoClient = new vsom.VsoClient(defaultUrl, this.rest);
7684
}
7785

7886
/**
@@ -85,6 +93,18 @@ export class WebApi {
8593
return new this(defaultUrl, bearerHandler);
8694
}
8795

96+
public async connect(): Promise<any> {
97+
return new Promise(async (resolve, reject) => {
98+
try {
99+
let res: rm.IRestResponse<any> = await this.rest.get<any>(this.vsoClient.resolveUrl('/_apis/connectionData'));
100+
resolve(res.result);
101+
}
102+
catch (err) {
103+
reject(err);
104+
}
105+
});
106+
}
107+
88108
/**
89109
* Each factory method can take a serverUrl and a list of handlers
90110
* if these aren't provided, the default url and auth handler given to the constructor for this class will be used

samples/build.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import * as vm from 'vso-node-api';
44
import * as ba from 'vso-node-api/BuildApi';
55
import * as bi from 'vso-node-api/interfaces/BuildInterfaces';
66

7-
let vsts: vm.WebApi = cm.getWebApi();
8-
let vstsBuild: ba.IBuildApi = vsts.getBuildApi();
9-
107
export async function run() {
118
try
129
{
10+
let vsts: vm.WebApi = await cm.getWebApi();
11+
let vstsBuild: ba.IBuildApi = vsts.getBuildApi();
12+
1313
cm.banner('Build Samples');
1414
let project = cm.getProject();
1515
console.log('project', project);

samples/common.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,22 @@ function getEnv(name: string): string {
1111
return val;
1212
}
1313

14-
export function getWebApi(): vm.WebApi {
15-
let serverUrl = getEnv('API_URL');
16-
let token = getEnv('API_TOKEN');
17-
let authHandler = vm.getPersonalAccessTokenHandler(token);
18-
19-
let vsts: vm.WebApi = new vm.WebApi(serverUrl, authHandler);
20-
return vsts;
14+
export async function getWebApi(): Promise<vm.WebApi> {
15+
return new Promise<vm.WebApi>(async (resolve, reject) => {
16+
try {
17+
let serverUrl = getEnv('API_URL');
18+
let token = getEnv('API_TOKEN');
19+
let authHandler = vm.getPersonalAccessTokenHandler(token);
20+
21+
let vsts: vm.WebApi = new vm.WebApi(serverUrl, authHandler);
22+
let connData = await vsts.connect();
23+
console.log('Hello ' + connData.authorizedUser.customDisplayName);
24+
resolve(vsts);
25+
}
26+
catch (err) {
27+
reject(err);
28+
}
29+
});
2130
}
2231

2332
export function getProject(): string {

samples/task.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ import * as vm from 'vso-node-api';
99
import * as ta from 'vso-node-api/TaskAgentApi';
1010
import * as ti from 'vso-node-api/interfaces/TaskAgentInterfaces';
1111

12-
let vsts: vm.WebApi = cm.getWebApi();
13-
let vstsTask: ta.ITaskAgentApi = vsts.getTaskAgentApi();
14-
1512
let sampleFilePath: string = path.join(process.cwd(), 'taskdefinition.zip');
1613

1714
export async function run() {
1815
try
1916
{
17+
let vsts: vm.WebApi = await cm.getWebApi();
18+
let vstsTask: ta.ITaskAgentApi = vsts.getTaskAgentApi();
19+
2020
cm.banner('Task Samples');
2121
let project = cm.getProject();
2222
console.log('project', project);

0 commit comments

Comments
 (0)