@@ -22,8 +22,14 @@ import { Logger } from '../../../../system/logger';
2222import type { LogScope } from '../../../../system/logger.scope' ;
2323import { getLogScope } from '../../../../system/logger.scope' ;
2424import { maybeStopWatch } from '../../../../system/stopwatch' ;
25- import type { AzureWorkItemState , AzureWorkItemStateCategory , WorkItem } from './models' ;
26- import { azureWorkItemsStateCategoryToState , isClosedAzureWorkItemStateCategory } from './models' ;
25+ import type { AzurePullRequest , AzureWorkItemState , AzureWorkItemStateCategory , WorkItem } from './models' ;
26+ import {
27+ azurePullRequestStatusToState ,
28+ azureWorkItemsStateCategoryToState ,
29+ getPullRequestUrl ,
30+ isClosedAzurePullRequestStatus ,
31+ isClosedAzureWorkItemStateCategory ,
32+ } from './models' ;
2733
2834export class AzureDevOpsApi implements Disposable {
2935 private readonly _disposable : Disposable ;
@@ -71,7 +77,7 @@ export class AzureDevOpsApi implements Disposable {
7177 } ,
7278 ) : Promise < IssueOrPullRequest | undefined > {
7379 const scope = getLogScope ( ) ;
74- const [ projectName ] = repo . split ( '/' ) ;
80+ const [ projectName , _ , repoName ] = repo . split ( '/' ) ;
7581
7682 try {
7783 // Try to get the Work item (wit) first with specific fields
@@ -112,6 +118,39 @@ export class AzureDevOpsApi implements Disposable {
112118 url : issueResult . _links . html . href ,
113119 } ;
114120 }
121+ } catch ( ex ) {
122+ if ( ex . original ?. status !== 404 ) {
123+ Logger . error ( ex , scope ) ;
124+ return undefined ;
125+ }
126+ }
127+
128+ try {
129+ const prResult = await this . request < AzurePullRequest > (
130+ provider ,
131+ token ,
132+ options ?. baseUrl ,
133+ `${ owner } /${ projectName } /_apis/git/repositories/${ repoName } /pullRequests/${ id } ` ,
134+ {
135+ method : 'GET' ,
136+ } ,
137+ scope ,
138+ ) ;
139+
140+ if ( prResult != null ) {
141+ return {
142+ id : prResult . pullRequestId . toString ( ) ,
143+ type : 'pullrequest' ,
144+ nodeId : prResult . pullRequestId . toString ( ) , // prResult.artifactId maybe?
145+ provider : provider ,
146+ createdDate : new Date ( prResult . creationDate ) ,
147+ updatedDate : new Date ( prResult . creationDate ) ,
148+ state : azurePullRequestStatusToState ( prResult . status ) ,
149+ closed : isClosedAzurePullRequestStatus ( prResult . status ) ,
150+ title : prResult . title ,
151+ url : getPullRequestUrl ( options . baseUrl , owner , projectName , repoName , prResult . pullRequestId ) ,
152+ } ;
153+ }
115154
116155 return undefined ;
117156 } catch ( ex ) {
0 commit comments