@@ -112,6 +112,63 @@ export class AzureDevOpsApi implements Disposable {
112
112
}
113
113
}
114
114
115
+ @debug < AzureDevOpsApi [ 'getPullRequestForCommit' ] > ( { args : { 0 : p => p . name , 1 : '<token>' } } )
116
+ async getPullRequestForCommit (
117
+ provider : Provider ,
118
+ token : string ,
119
+ owner : string ,
120
+ repo : string ,
121
+ rev : string ,
122
+ baseUrl : string ,
123
+ _options ?: {
124
+ avatarSize ?: number ;
125
+ } ,
126
+ cancellation ?: CancellationToken ,
127
+ ) : Promise < PullRequest | undefined > {
128
+ const scope = getLogScope ( ) ;
129
+ const [ projectName , _ , repoName ] = repo . split ( '/' ) ;
130
+ try {
131
+ const prResult = await this . request < { results : Record < string , AzurePullRequest [ ] > [ ] } > (
132
+ provider ,
133
+ token ,
134
+ baseUrl ,
135
+ `${ owner } /${ projectName } /_apis/git/repositories/${ repoName } /pullrequestquery` ,
136
+ {
137
+ method : 'POST' ,
138
+ body : JSON . stringify ( {
139
+ queries : [
140
+ {
141
+ items : [ rev ] ,
142
+ type : 'commit' ,
143
+ } ,
144
+ ] ,
145
+ } ) ,
146
+ } ,
147
+ scope ,
148
+ cancellation ,
149
+ ) ;
150
+
151
+ const pr = prResult ?. results [ 0 ] ?. [ rev ] ?. [ 0 ] ;
152
+ if ( pr == null ) return undefined ;
153
+
154
+ const pullRequest = await this . request < AzurePullRequestWithLinks > (
155
+ provider ,
156
+ token ,
157
+ undefined ,
158
+ pr . url ,
159
+ { method : 'GET' } ,
160
+ scope ,
161
+ cancellation ,
162
+ ) ;
163
+ if ( pullRequest == null ) return undefined ;
164
+
165
+ return fromAzurePullRequest ( pullRequest , provider , owner ) ;
166
+ } catch ( ex ) {
167
+ Logger . error ( ex , scope ) ;
168
+ return undefined ;
169
+ }
170
+ }
171
+
115
172
@debug < AzureDevOpsApi [ 'getIssueOrPullRequest' ] > ( { args : { 0 : p => p . name , 1 : '<token>' } } )
116
173
public async getIssueOrPullRequest (
117
174
provider : Provider ,
@@ -310,13 +367,13 @@ export class AzureDevOpsApi implements Disposable {
310
367
private async request < T > (
311
368
provider : Provider ,
312
369
token : string ,
313
- baseUrl : string ,
370
+ baseUrl : string | undefined ,
314
371
route : string ,
315
372
options : { method : RequestInit [ 'method' ] } & Record < string , unknown > ,
316
373
scope : LogScope | undefined ,
317
374
cancellation ?: CancellationToken | undefined ,
318
375
) : Promise < T | undefined > {
319
- const url = `${ baseUrl } /${ route } ` ;
376
+ const url = baseUrl ? `${ baseUrl } /${ route } ` : route ;
320
377
321
378
let rsp : Response ;
322
379
try {
0 commit comments