Skip to content

Commit 0bf45ce

Browse files
committed
added Repository.GitUrl, .SshUrl, .CloneUrl, parent lookup
1 parent 61b1fcf commit 0bf45ce

File tree

3 files changed

+50
-9
lines changed

3 files changed

+50
-9
lines changed

Git.hub.Demo/Program.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,16 @@ static void Main(string[] args)
1212
{
1313
Client client = new Client();
1414

15-
// List all repositories of the user 'mabako'
16-
client.getRepositories("mabako").ToList().ForEach(repo => Console.WriteLine(repo.Name));
15+
Console.WriteLine("Repositories of mabako?");
16+
client.getRepositories("mabako").ToList().ForEach(repo => Console.WriteLine(" {0}", repo.Name));
1717

1818
Console.WriteLine();
19-
Console.WriteLine("Branches of zwickau-mensa?");
19+
Console.WriteLine("Branches of mabako/zwickau-mensa?");
2020
client.getRepository("mabako", "zwickau-mensa").GetBranches().ToList().ForEach(branch => Console.WriteLine(" {0} at {1}", branch.Name, branch.Commit.Sha));
21-
21+
22+
Console.WriteLine();
23+
Console.WriteLine("Parent of mabako/Android-Terminal-Emulator?");
24+
Console.WriteLine(" {0}", client.getRepository("mabako", "Android-Terminal-Emulator").Parent);
2225
Console.ReadLine();
2326
}
2427
}

Git.hub/Client.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public Repository getRepository(string username, string repositoryName)
8484
return null;
8585

8686
repo._client = client;
87+
repo.Detailed = true;
8788
return repo;
8889
}
8990

Git.hub/Repository.cs

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,57 @@ public class Repository
1616
public int Forks { get; private set; }
1717
public bool Private { get; private set; }
1818

19-
public Repository Parent { get; private set; }
20-
internal RestClient _client { private get; set; }
21-
19+
private Repository _Parent;
20+
public Repository Parent
21+
{
22+
get
23+
{
24+
if (!Detailed)
25+
throw new NotSupportedException();
26+
return _Parent;
27+
}
28+
private set
29+
{
30+
_Parent = value;
31+
}
32+
}
33+
34+
/// <summary>
35+
/// Read-only clone url
36+
/// git://github.com/{user}/{repo}.git
37+
/// </summary>
38+
public string GitUrl { get; private set; }
39+
40+
/// <summary>
41+
/// Read/Write clone url via SSH
42+
/// [email protected]/{user}/{repo.git}
43+
/// </summary>
44+
public string SshUrl { get; private set; }
45+
46+
/// <summary>
47+
/// Read/Write clone url via HTTPS
48+
/// https://github.com/{user}/{repo}.git
49+
/// </summary>
50+
public string CloneUrl { get; private set; }
51+
52+
internal RestClient _client;
53+
54+
/// <summary>
55+
/// true if fetched from github.com/{user}/{repo}, false if from github.com/{user}
56+
/// </summary>
57+
public bool Detailed { get; internal set; }
58+
2259
/// <summary>
2360
/// Forks this repository into your own account.
2461
/// </summary>
2562
/// <returns></returns>
2663
public Repository CreateFork()
2764
{
28-
RestRequest request = new RestRequest("/repos/{user}/{repo}/forks", Method.POST);
65+
RestRequest request = new RestRequest("/repos/{user}/{repo}/forks");
2966
request.AddUrlSegment("user", Owner.Login);
3067
request.AddUrlSegment("repo", Name);
3168

32-
Repository forked = _client.Execute<Repository>(request).Data;
69+
Repository forked = _client.Post<Repository>(request).Data;
3370
forked._client = _client;
3471
return forked;
3572
}

0 commit comments

Comments
 (0)