@@ -16,27 +16,27 @@ class ApiClient : IApiClient
1616 private static readonly Regex httpStatusErrorRegex = new Regex ( "(?<=[a-z])([A-Z])" , RegexOptions . Compiled ) ;
1717
1818 public HostAddress HostAddress { get ; }
19- public UriString OriginalUrl { get ; }
2019
2120 private readonly IKeychain keychain ;
2221 private readonly IProcessManager processManager ;
2322 private readonly ITaskManager taskManager ;
2423 private readonly ILoginManager loginManager ;
2524 private readonly IEnvironment environment ;
2625
27- public ApiClient ( UriString hostUrl , IKeychain keychain , IProcessManager processManager , ITaskManager taskManager , IEnvironment environment )
26+ public ApiClient ( IKeychain keychain , IProcessManager processManager , ITaskManager taskManager , IEnvironment environment ) :
27+ this ( UriString . ToUriString ( HostAddress . GitHubDotComHostAddress . WebUri ) , keychain , processManager , taskManager , environment )
2828 {
29- Guard . ArgumentNotNull ( keychain , nameof ( keychain ) ) ;
29+ }
3030
31- var host = String . IsNullOrEmpty ( hostUrl )
32- ? UriString . ToUriString ( HostAddress . GitHubDotComHostAddress . WebUri )
33- : new UriString ( hostUrl . ToRepositoryUri ( )
34- . GetComponents ( UriComponents . SchemeAndServer , UriFormat . SafeUnescaped ) ) ;
31+ public ApiClient ( UriString host , IKeychain keychain , IProcessManager processManager , ITaskManager taskManager , IEnvironment environment )
32+ {
33+ Guard . ArgumentNotNull ( host , nameof ( host ) ) ;
34+ Guard . ArgumentNotNull ( keychain , nameof ( keychain ) ) ;
3535
36+ host = new UriString ( host . ToRepositoryUri ( ) . GetComponents ( UriComponents . SchemeAndServer , UriFormat . SafeUnescaped ) ) ;
3637 HostAddress = HostAddress . Create ( host ) ;
37- OriginalUrl = host ;
3838
39- logger . Trace ( "OriginalUrl: {1 }" , HostAddress . ToString ( ) , OriginalUrl . ToString ( ) ) ;
39+ logger . Trace ( "OriginalUrl: {0 }" , HostAddress . ApiUri . Host ) ;
4040
4141 this . keychain = keychain ;
4242 this . processManager = processManager ;
@@ -60,8 +60,13 @@ public void CreateRepository(string name, string description, bool isPrivate,
6060 // this validates the user, again
6161 GetCurrentUser ( ) ;
6262
63- var command = new StringBuilder ( "publish -h " ) ;
64- command . Append ( OriginalUrl . Host ) ;
63+ var command = new StringBuilder ( "publish" ) ;
64+
65+ if ( ! HostAddress . IsGitHubDotCom ( ) )
66+ {
67+ command . Append ( " -h " ) ;
68+ command . Append ( HostAddress . ApiUri . Host ) ;
69+ }
6570
6671 command . Append ( " -r \" " ) ;
6772 command . Append ( name ) ;
@@ -86,7 +91,7 @@ public void CreateRepository(string name, string description, bool isPrivate,
8691 command . Append ( " -p" ) ;
8792 }
8893
89- var adapter = keychain . Connect ( OriginalUrl ) ;
94+ var adapter = keychain . Connect ( HostAddress . ApiUri . Host ) ;
9095 if ( adapter . Credential == null )
9196 {
9297 throw new ApiClientException ( "No Credentials found" ) ;
@@ -120,20 +125,20 @@ public void CreateRepository(string name, string description, bool isPrivate,
120125 . Start ( ) ;
121126 }
122127
123- public void GetServerMeta ( Action < GitHubHostMeta > onSuccess , Action < Exception > onError = null )
128+ public void GetEnterpriseServerMeta ( Action < GitHubHostMeta > onSuccess , Action < Exception > onError = null )
124129 {
125130 Guard . ArgumentNotNull ( onSuccess , nameof ( onSuccess ) ) ;
126131 new FuncTask < GitHubHostMeta > ( taskManager . Token , ( ) =>
127132 {
128- var octorunTask = new OctorunTask ( taskManager . Token , environment , "meta -h " + OriginalUrl . Host )
133+ var octorunTask = new OctorunTask ( taskManager . Token , environment , "meta -h " + HostAddress . ApiUri . Host )
129134 . Configure ( processManager ) ;
130135
131136 var ret = octorunTask . RunSynchronously ( ) ;
132137 if ( ret . IsSuccess )
133138 {
134139 var deserializeObject = SimpleJson . DeserializeObject < Dictionary < string , object > > ( ret . Output [ 0 ] ) ;
135140
136- return new GitHubHostMeta ( )
141+ return new GitHubHostMeta
137142 {
138143 InstalledVersion = ( string ) deserializeObject [ "installed_version" ] ,
139144 GithubServicesSha = ( string ) deserializeObject [ "github_services_sha" ] ,
@@ -194,14 +199,15 @@ public void GetOrganizations(Action<Organization[]> onSuccess, Action<Exception>
194199 Guard . ArgumentNotNull ( onSuccess , nameof ( onSuccess ) ) ;
195200 new FuncTask < Organization [ ] > ( taskManager . Token , ( ) =>
196201 {
197- var adapter = keychain . Connect ( OriginalUrl ) ;
202+ var adapter = keychain . Connect ( HostAddress . ApiUri . Host ) ;
198203 if ( adapter . Credential == null )
199204 {
200205 throw new ApiClientException ( "No Credentials found" ) ;
201206 }
202207
208+ var command = HostAddress . IsGitHubDotCom ( ) ? "organizations" : "organizations -h " + HostAddress . ApiUri . Host ;
203209 var octorunTask = new OctorunTask ( taskManager . Token , environment ,
204- "organizations -h " + OriginalUrl . Host , adapter . Credential . Token )
210+ command , adapter . Credential . Token )
205211 . Configure ( processManager ) ;
206212
207213 var ret = octorunTask . RunSynchronously ( ) ;
@@ -254,7 +260,7 @@ public void LoginWithToken(string token, Action<bool> result)
254260 Guard . ArgumentNotNull ( result , "result" ) ;
255261
256262 new FuncTask < bool > ( taskManager . Token ,
257- ( ) => loginManager . LoginWithToken ( OriginalUrl , token ) )
263+ ( ) => loginManager . LoginWithToken ( HostAddress . ApiUri . Host , token ) )
258264 . FinallyInUI ( ( success , ex , res ) =>
259265 {
260266 if ( ! success )
@@ -275,7 +281,7 @@ public void Login(string username, string password, Action<LoginResult> need2faC
275281 Guard . ArgumentNotNull ( result , "result" ) ;
276282
277283 new FuncTask < LoginResultData > ( taskManager . Token ,
278- ( ) => loginManager . Login ( OriginalUrl , username , password ) )
284+ ( ) => loginManager . Login ( HostAddress . ApiUri . Host , username , password ) )
279285 . FinallyInUI ( ( success , ex , res ) =>
280286 {
281287 if ( ! success )
@@ -320,7 +326,7 @@ public void ContinueLogin(LoginResult loginResult, string code)
320326
321327 public GitHubUser GetCurrentUser ( )
322328 {
323- var keychainConnection = keychain . Connections . FirstOrDefault ( x => x . Host == OriginalUrl ) ;
329+ var keychainConnection = keychain . Connections . FirstOrDefault ( x => x . Host == ( UriString ) HostAddress . ApiUri . Host ) ;
324330 if ( keychainConnection == null )
325331 throw new KeychainEmptyException ( ) ;
326332
@@ -365,7 +371,10 @@ private GitHubUser GetValidatedGitHubUser(Connection keychainConnection, IKeycha
365371 throw new ApiClientException ( "No Credentials found" ) ;
366372 }
367373
368- var octorunTask = new OctorunTask ( taskManager . Token , environment , "validate -h " + OriginalUrl . Host , keychainAdapter . Credential . Token )
374+ logger . Trace ( "GetValidatedGitHubUser with GitHub Token: {0} {1}" , keychainAdapter . Credential . Host , keychainAdapter . Credential . Token ) ;
375+
376+ var command = HostAddress . IsGitHubDotCom ( ) ? "validate" : "validate -h " + HostAddress . ApiUri . Host ;
377+ var octorunTask = new OctorunTask ( taskManager . Token , environment , command , keychainAdapter . Credential . Token )
369378 . Configure ( processManager ) ;
370379
371380 var ret = octorunTask . RunSynchronously ( ) ;
0 commit comments