@@ -16,27 +16,27 @@ class ApiClient : IApiClient
16
16
private static readonly Regex httpStatusErrorRegex = new Regex ( "(?<=[a-z])([A-Z])" , RegexOptions . Compiled ) ;
17
17
18
18
public HostAddress HostAddress { get ; }
19
- public UriString OriginalUrl { get ; }
20
19
21
20
private readonly IKeychain keychain ;
22
21
private readonly IProcessManager processManager ;
23
22
private readonly ITaskManager taskManager ;
24
23
private readonly ILoginManager loginManager ;
25
24
private readonly IEnvironment environment ;
26
25
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 )
28
28
{
29
- Guard . ArgumentNotNull ( keychain , nameof ( keychain ) ) ;
29
+ }
30
30
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 ) ) ;
35
35
36
+ host = new UriString ( host . ToRepositoryUri ( ) . GetComponents ( UriComponents . SchemeAndServer , UriFormat . SafeUnescaped ) ) ;
36
37
HostAddress = HostAddress . Create ( host ) ;
37
- OriginalUrl = host ;
38
38
39
- logger . Trace ( "OriginalUrl: {1 }" , HostAddress . ToString ( ) , OriginalUrl . ToString ( ) ) ;
39
+ logger . Trace ( "OriginalUrl: {0 }" , HostAddress . ApiUri . Host ) ;
40
40
41
41
this . keychain = keychain ;
42
42
this . processManager = processManager ;
@@ -60,8 +60,13 @@ public void CreateRepository(string name, string description, bool isPrivate,
60
60
// this validates the user, again
61
61
GetCurrentUser ( ) ;
62
62
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
+ }
65
70
66
71
command . Append ( " -r \" " ) ;
67
72
command . Append ( name ) ;
@@ -86,7 +91,7 @@ public void CreateRepository(string name, string description, bool isPrivate,
86
91
command . Append ( " -p" ) ;
87
92
}
88
93
89
- var adapter = keychain . Connect ( OriginalUrl ) ;
94
+ var adapter = keychain . Connect ( HostAddress . ApiUri . Host ) ;
90
95
if ( adapter . Credential == null )
91
96
{
92
97
throw new ApiClientException ( "No Credentials found" ) ;
@@ -120,20 +125,20 @@ public void CreateRepository(string name, string description, bool isPrivate,
120
125
. Start ( ) ;
121
126
}
122
127
123
- public void GetServerMeta ( Action < GitHubHostMeta > onSuccess , Action < Exception > onError = null )
128
+ public void GetEnterpriseServerMeta ( Action < GitHubHostMeta > onSuccess , Action < Exception > onError = null )
124
129
{
125
130
Guard . ArgumentNotNull ( onSuccess , nameof ( onSuccess ) ) ;
126
131
new FuncTask < GitHubHostMeta > ( taskManager . Token , ( ) =>
127
132
{
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 )
129
134
. Configure ( processManager ) ;
130
135
131
136
var ret = octorunTask . RunSynchronously ( ) ;
132
137
if ( ret . IsSuccess )
133
138
{
134
139
var deserializeObject = SimpleJson . DeserializeObject < Dictionary < string , object > > ( ret . Output [ 0 ] ) ;
135
140
136
- return new GitHubHostMeta ( )
141
+ return new GitHubHostMeta
137
142
{
138
143
InstalledVersion = ( string ) deserializeObject [ "installed_version" ] ,
139
144
GithubServicesSha = ( string ) deserializeObject [ "github_services_sha" ] ,
@@ -194,14 +199,15 @@ public void GetOrganizations(Action<Organization[]> onSuccess, Action<Exception>
194
199
Guard . ArgumentNotNull ( onSuccess , nameof ( onSuccess ) ) ;
195
200
new FuncTask < Organization [ ] > ( taskManager . Token , ( ) =>
196
201
{
197
- var adapter = keychain . Connect ( OriginalUrl ) ;
202
+ var adapter = keychain . Connect ( HostAddress . ApiUri . Host ) ;
198
203
if ( adapter . Credential == null )
199
204
{
200
205
throw new ApiClientException ( "No Credentials found" ) ;
201
206
}
202
207
208
+ var command = HostAddress . IsGitHubDotCom ( ) ? "organizations" : "organizations -h " + HostAddress . ApiUri . Host ;
203
209
var octorunTask = new OctorunTask ( taskManager . Token , environment ,
204
- "organizations -h " + OriginalUrl . Host , adapter . Credential . Token )
210
+ command , adapter . Credential . Token )
205
211
. Configure ( processManager ) ;
206
212
207
213
var ret = octorunTask . RunSynchronously ( ) ;
@@ -254,7 +260,7 @@ public void LoginWithToken(string token, Action<bool> result)
254
260
Guard . ArgumentNotNull ( result , "result" ) ;
255
261
256
262
new FuncTask < bool > ( taskManager . Token ,
257
- ( ) => loginManager . LoginWithToken ( OriginalUrl , token ) )
263
+ ( ) => loginManager . LoginWithToken ( HostAddress . ApiUri . Host , token ) )
258
264
. FinallyInUI ( ( success , ex , res ) =>
259
265
{
260
266
if ( ! success )
@@ -275,7 +281,7 @@ public void Login(string username, string password, Action<LoginResult> need2faC
275
281
Guard . ArgumentNotNull ( result , "result" ) ;
276
282
277
283
new FuncTask < LoginResultData > ( taskManager . Token ,
278
- ( ) => loginManager . Login ( OriginalUrl , username , password ) )
284
+ ( ) => loginManager . Login ( HostAddress . ApiUri . Host , username , password ) )
279
285
. FinallyInUI ( ( success , ex , res ) =>
280
286
{
281
287
if ( ! success )
@@ -320,7 +326,7 @@ public void ContinueLogin(LoginResult loginResult, string code)
320
326
321
327
public GitHubUser GetCurrentUser ( )
322
328
{
323
- var keychainConnection = keychain . Connections . FirstOrDefault ( x => x . Host == OriginalUrl ) ;
329
+ var keychainConnection = keychain . Connections . FirstOrDefault ( x => x . Host == ( UriString ) HostAddress . ApiUri . Host ) ;
324
330
if ( keychainConnection == null )
325
331
throw new KeychainEmptyException ( ) ;
326
332
@@ -365,7 +371,10 @@ private GitHubUser GetValidatedGitHubUser(Connection keychainConnection, IKeycha
365
371
throw new ApiClientException ( "No Credentials found" ) ;
366
372
}
367
373
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 )
369
378
. Configure ( processManager ) ;
370
379
371
380
var ret = octorunTask . RunSynchronously ( ) ;
0 commit comments