11import type { IssueOrPullRequestState } from '../../../../git/models/issueOrPullRequest' ;
2+ import { PullRequest } from '../../../../git/models/pullRequest' ;
3+ import type { Provider } from '../../../../git/models/remoteProvider' ;
24
35export type AzureWorkItemStateCategory = 'Proposed' | 'InProgress' | 'Resolved' | 'Completed' | 'Removed' ;
46
@@ -144,32 +146,6 @@ export interface AzureRepository {
144146 isInMaintenance : boolean ;
145147}
146148
147- export type AzureProjectState = 'createPending' | 'deleted' | 'deleting' | 'new' | 'unchanged' | 'wellFormed' ;
148- export type AzureProjectVisibility = 'private' | 'public' ;
149-
150- export interface AzureProject {
151- id : string ;
152- name : string ;
153- url : string ;
154- state : AzureProjectState ;
155- revision : number ;
156- visibility : AzureProjectVisibility ;
157- lastUpdateTime : string ;
158- }
159-
160- export interface AzureRepository {
161- id : string ;
162- name : string ;
163- url : string ;
164- project : AzureProject ;
165- size : number ;
166- remoteUrl : string ;
167- sshUrl : string ;
168- webUrl : string ;
169- isDisabled : boolean ;
170- isInMaintenance : boolean ;
171- }
172-
173149export interface AzureGitCommitRef {
174150 commitId : string ;
175151 url : string ;
@@ -289,9 +265,18 @@ export interface AzurePullRequestWithLinks extends AzurePullRequest {
289265 remoteUrl ?: string ;
290266 workItemRefs ?: AzureResourceRef [ ] ;
291267}
268+
269+ export function getVSTSOwner ( url : URL ) : string {
270+ return url . hostname . split ( '.' ) [ 0 ] ;
271+ }
292272export function getAzureDevOpsOwner ( url : URL ) : string {
293273 return url . pathname . split ( '/' ) [ 1 ] ;
294274}
275+ export function getAzureOwner ( url : URL ) : string {
276+ const isVSTS = url . hostname . endsWith ( 'visualstudio.com' ) ;
277+ return isVSTS ? getVSTSOwner ( url ) : getAzureDevOpsOwner ( url ) ;
278+ }
279+
295280export function getAzureRepo ( pr : AzurePullRequest ) : string {
296281 return `${ pr . repository . project . name } /_git/${ pr . repository . name } ` ;
297282}
@@ -307,3 +292,27 @@ export function getAzurePullRequestWebUrl(pr: AzurePullRequest): string {
307292 const owner = getAzureDevOpsOwner ( url ) ;
308293 return `${ baseUrl } /${ owner } /${ repoPath } /pullrequest/${ pr . pullRequestId } ` ;
309294}
295+
296+ export function fromAzurePullRequest ( pr : AzurePullRequest , provider : Provider ) : PullRequest {
297+ const url = new URL ( pr . url ) ;
298+ return new PullRequest (
299+ provider ,
300+ {
301+ id : pr . createdBy . id ,
302+ name : pr . createdBy . displayName ,
303+ avatarUrl : pr . createdBy . imageUrl ,
304+ url : pr . createdBy . url ,
305+ } ,
306+ pr . pullRequestId . toString ( ) ,
307+ pr . pullRequestId . toString ( ) ,
308+ pr . title ,
309+ getAzurePullRequestWebUrl ( pr ) ,
310+ {
311+ owner : getAzureOwner ( url ) ,
312+ repo : getAzureRepo ( pr ) ,
313+ } ,
314+ azurePullRequestStatusToState ( pr . status ) ,
315+ new Date ( pr . creationDate ) ,
316+ new Date ( pr . creationDate ) ,
317+ ) ;
318+ }
0 commit comments