@@ -25,6 +25,28 @@ public AdoApi(AdoClient client, string adoServerUrl, OctoLogger log)
2525 _log = log ;
2626 }
2727
28+ // Basic HTTP wrapper methods for use by other services
29+ public virtual async Task < string > GetAsync ( string relativeUrl )
30+ {
31+ ArgumentNullException . ThrowIfNull ( relativeUrl ) ;
32+ var url = relativeUrl . StartsWith ( "http" ) ? relativeUrl : $ "{ _adoBaseUrl } { relativeUrl } ";
33+ return await _client . GetAsync ( url ) ;
34+ }
35+
36+ public virtual async Task PutAsync ( string relativeUrl , object payload )
37+ {
38+ ArgumentNullException . ThrowIfNull ( relativeUrl ) ;
39+ var url = relativeUrl . StartsWith ( "http" ) ? relativeUrl : $ "{ _adoBaseUrl } { relativeUrl } ";
40+ await _client . PutAsync ( url , payload ) ;
41+ }
42+
43+ public virtual async Task < string > PostAsync ( string relativeUrl , object payload )
44+ {
45+ ArgumentNullException . ThrowIfNull ( relativeUrl ) ;
46+ var url = relativeUrl . StartsWith ( "http" ) ? relativeUrl : $ "{ _adoBaseUrl } { relativeUrl } ";
47+ return await _client . PostAsync ( url , payload ) ;
48+ }
49+
2850 public virtual async Task < string > GetOrgOwner ( string org )
2951 {
3052 var url = $ "{ _adoBaseUrl } /{ org . EscapeDataString ( ) } /_apis/Contribution/HierarchyQuery?api-version=5.0-preview.1";
@@ -510,7 +532,7 @@ public virtual async Task ShareServiceConnection(string adoOrg, string adoTeamPr
510532 await _client . PatchAsync ( url , payload ) ;
511533 }
512534
513- public virtual async Task < ( string DefaultBranch , string Clean , string CheckoutSubmodules ) > GetPipeline ( string org , string teamProject , int pipelineId )
535+ public virtual async Task < ( string DefaultBranch , string Clean , string CheckoutSubmodules , JToken Triggers ) > GetPipeline ( string org , string teamProject , int pipelineId )
514536 {
515537 var url = $ "{ _adoBaseUrl } /{ org . EscapeDataString ( ) } /{ teamProject . EscapeDataString ( ) } /_apis/build/definitions/{ pipelineId } ?api-version=6.0";
516538
@@ -530,80 +552,10 @@ public virtual async Task ShareServiceConnection(string adoOrg, string adoTeamPr
530552 var checkoutSubmodules = ( string ) data [ "repository" ] [ "checkoutSubmodules" ] ;
531553 checkoutSubmodules = checkoutSubmodules == null ? "null" : checkoutSubmodules . ToLower ( ) ;
532554
533- return ( defaultBranch , clean , checkoutSubmodules ) ;
534- }
535-
536- public virtual async Task ChangePipelineRepo ( string adoOrg , string teamProject , int pipelineId , string defaultBranch , string clean , string checkoutSubmodules , string githubOrg , string githubRepo , string connectedServiceId , string targetApiUrl = null )
537- {
538- var url = $ "{ _adoBaseUrl } /{ adoOrg . EscapeDataString ( ) } /{ teamProject . EscapeDataString ( ) } /_apis/build/definitions/{ pipelineId } ?api-version=6.0";
539-
540- var response = await _client . GetAsync ( url ) ;
541- var data = JObject . Parse ( response ) ;
542-
543- // Determine base URLs
544- string apiUrl , webUrl , cloneUrl , branchesUrl , refsUrl , manageUrl ;
545- if ( targetApiUrl . HasValue ( ) )
546- {
547- var apiUri = new Uri ( targetApiUrl . TrimEnd ( '/' ) ) ;
548- var webHost = apiUri . Host . StartsWith ( "api." ) ? apiUri . Host [ 4 ..] : apiUri . Host ;
549- var webScheme = apiUri . Scheme ;
550- var webBase = $ "{ webScheme } ://{ webHost } ";
551- apiUrl = $ "{ targetApiUrl . TrimEnd ( '/' ) } /repos/{ githubOrg . EscapeDataString ( ) } /{ githubRepo . EscapeDataString ( ) } ";
552- webUrl = $ "{ webBase } /{ githubOrg . EscapeDataString ( ) } /{ githubRepo . EscapeDataString ( ) } ";
553- cloneUrl = $ "{ webBase } /{ githubOrg . EscapeDataString ( ) } /{ githubRepo . EscapeDataString ( ) } .git";
554- branchesUrl = $ "{ targetApiUrl . TrimEnd ( '/' ) } /repos/{ githubOrg . EscapeDataString ( ) } /{ githubRepo . EscapeDataString ( ) } /branches";
555- refsUrl = $ "{ targetApiUrl . TrimEnd ( '/' ) } /repos/{ githubOrg . EscapeDataString ( ) } /{ githubRepo . EscapeDataString ( ) } /git/refs";
556- manageUrl = webUrl ;
557- }
558- else
559- {
560- apiUrl = $ "https://api.github.com/repos/{ githubOrg . EscapeDataString ( ) } /{ githubRepo . EscapeDataString ( ) } ";
561- webUrl = $ "https://github.com/{ githubOrg . EscapeDataString ( ) } /{ githubRepo . EscapeDataString ( ) } ";
562- cloneUrl = $ "https://github.com/{ githubOrg . EscapeDataString ( ) } /{ githubRepo . EscapeDataString ( ) } .git";
563- branchesUrl = $ "https://api.github.com/repos/{ githubOrg . EscapeDataString ( ) } /{ githubRepo . EscapeDataString ( ) } /branches";
564- refsUrl = $ "https://api.github.com/repos/{ githubOrg . EscapeDataString ( ) } /{ githubRepo . EscapeDataString ( ) } /git/refs";
565- manageUrl = webUrl ;
566- }
567-
568- var newRepo = new
569- {
570- properties = new
571- {
572- apiUrl ,
573- branchesUrl ,
574- cloneUrl ,
575- connectedServiceId ,
576- defaultBranch ,
577- fullName = $ "{ githubOrg } /{ githubRepo } ",
578- manageUrl ,
579- orgName = githubOrg ,
580- refsUrl ,
581- safeRepository = $ "{ githubOrg . EscapeDataString ( ) } /{ githubRepo . EscapeDataString ( ) } ",
582- shortName = githubRepo ,
583- reportBuildStatus = true
584- } ,
585- id = $ "{ githubOrg } /{ githubRepo } ",
586- type = "GitHub" ,
587- name = $ "{ githubOrg } /{ githubRepo } ",
588- url = cloneUrl ,
589- defaultBranch ,
590- clean ,
591- checkoutSubmodules
592- } ;
593-
594- var payload = new JObject ( ) ;
595-
596- foreach ( var prop in data . Properties ( ) )
597- {
598- if ( prop . Name == "repository" )
599- {
600- prop . Value = JObject . Parse ( newRepo . ToJson ( ) ) ;
601- }
602-
603- payload . Add ( prop . Name , prop . Value ) ;
604- }
555+ // Capture trigger information to preserve during rewiring
556+ var triggers = data [ "triggers" ] ;
605557
606- await _client . PutAsync ( url , payload . ToObject ( typeof ( object ) ) ) ;
558+ return ( defaultBranch , clean , checkoutSubmodules , triggers ) ;
607559 }
608560
609561 public virtual async Task < string > GetBoardsGithubRepoId ( string org , string teamProject , string teamProjectId , string endpointId , string githubOrg , string githubRepo )
0 commit comments