Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 65b5af2

Browse files
committed
Cleanup the code and return null instead of DefaultCredentials
1 parent 1b9184d commit 65b5af2

File tree

2 files changed

+18
-17
lines changed

2 files changed

+18
-17
lines changed

src/GitHub.App/Services/GitClient.cs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using System.Reactive;
55
using System.Reactive.Linq;
66
using LibGit2Sharp;
7-
using System.Collections.Generic;
87

98
namespace GitHub.Services
109
{
@@ -13,11 +12,15 @@ namespace GitHub.Services
1312
public class GitClient : IGitClient
1413
{
1514
readonly IGitHubCredentialProvider credentialProvider;
15+
readonly PushOptions pushOptions;
16+
readonly FetchOptions fetchOptions;
1617

1718
[ImportingConstructor]
1819
public GitClient(IGitHubCredentialProvider credentialProvider)
1920
{
2021
this.credentialProvider = credentialProvider;
22+
pushOptions = new PushOptions { CredentialsProvider = credentialProvider.HandleCredentials };
23+
fetchOptions = new FetchOptions { CredentialsProvider = credentialProvider.HandleCredentials };
2124
}
2225

2326
public IObservable<Unit> Push(IRepository repository, string branchName, string remoteName)
@@ -30,11 +33,7 @@ public IObservable<Unit> Push(IRepository repository, string branchName, string
3033
if (repository.Head?.Commits != null && repository.Head.Commits.Any())
3134
{
3235
var remote = repository.Network.Remotes[remoteName];
33-
repository.Network.Push(remote, "HEAD", @"refs/heads/" + branchName,
34-
new PushOptions()
35-
{
36-
CredentialsProvider = credentialProvider.HandleCredentials
37-
});
36+
repository.Network.Push(remote, "HEAD", @"refs/heads/" + branchName, pushOptions);
3837
}
3938
return Observable.Return(Unit.Default);
4039
});
@@ -47,10 +46,7 @@ public IObservable<Unit> Fetch(IRepository repository, string remoteName)
4746
return Observable.Defer(() =>
4847
{
4948
var remote = repository.Network.Remotes[remoteName];
50-
repository.Network.Fetch(remote, new FetchOptions()
51-
{
52-
CredentialsProvider = credentialProvider.HandleCredentials
53-
});
49+
repository.Network.Fetch(remote, fetchOptions);
5450
return Observable.Return(Unit.Default);
5551
});
5652
}

src/GitHub.App/Services/GitHubCredentialProvider.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,22 @@ public GitHubCredentialProvider(ISharedCache sharedCache)
2929
public Credentials HandleCredentials([AllowNull]string url, [AllowNull]string username, SupportedCredentialTypes types)
3030
{
3131
if (url == null)
32-
return new DefaultCredentials();
32+
return null; // wondering if we should return DefaultCredentials instead
3333

3434
var host = HostAddress.Create(url);
3535
return secureCache.GetObject<Tuple<string, SecureString>>("login:" + host.CredentialCacheKeyHost)
36-
.Select(x => new SecureUsernamePasswordCredentials()
37-
{
38-
Username = x.Item1,
39-
Password = x.Item2
40-
} as Credentials)
41-
.Catch(Observable.Return(new DefaultCredentials()))
36+
.Select(CreateCredentials)
37+
.Catch(Observable.Return<Credentials>(null))
4238
.Wait();
4339
}
40+
41+
static Credentials CreateCredentials(Tuple<string, SecureString> data)
42+
{
43+
return new SecureUsernamePasswordCredentials
44+
{
45+
Username = data.Item1,
46+
Password = data.Item2
47+
};
48+
}
4449
}
4550
}

0 commit comments

Comments
 (0)