使用 Jgit 以编程方式检索我的 Github 帐户下的所有存储库
Programmatically retrieve all repositories under my Github account using Jgit
我在使用 JGit 客户端时遇到了一些挑战。我将它嵌入到 Java 应用程序中,我想获取 Github 上一个帐户下的所有存储库并显示它们。此外,我可以使用 JGit 直接在 Github 上创建存储库吗?喜欢创建远程存储库吗?
我已经完成了这个 link 但它对我来说似乎很普通。提前致谢
List user repositories API是你可以从任何语言(包括Java)调用的东西,与JGit无关。
GET /users/:username/repos
Java 库进行这些调用的一个示例是“GitHub API for Java ", and its java.org.kohsuke.github.GHPerson.java#listRepositories()
方法
new PagedIterator<GHRepository>(
root.retrieve().asIterator("/users/" + login + "/repos?per_page=" + pageSize,
GHRepository[].class, pageSize))
获得这些用户存储库的 url 后,您可以从中创建 JGit 存储库。
我也在做同样的要求来获取特定用户的存储库列表
试试这个,您将获得该用户的所有存储库
//这里的name表示GitHub账号
的用户名
public Collection<AuthMsg> getRepos(String name) {
String url = "https://api.github.com/users/"+name+"/repos";
String data = getJSON(url);
System.out.println(data);
Type collectionType = new TypeToken<Collection<AuthMsg>>(){}.getType();
Collection<AuthMsg> enums = new Gson().fromJson(data, collectionType);
return enums;
}
//getJson方法
public String getJSON(String url) {
HttpURLConnection c = null;
try {
URL u = new URL(url);
c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setRequestProperty("Content-length", "0");
c.setUseCaches(false);
c.setAllowUserInteraction(false);
c.connect();
int status = c.getResponseCode();
switch (status) {
case 200:
case 201:
BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
br.close();
return sb.toString();
}
} catch (MalformedURLException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} finally {
if (c != null) {
try {
c.disconnect();
} catch (Exception ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
return null;
}
//AuthMsg Class
public class AuthMsg {
//"name" which is in json what we get from url
@SerializedName("name")
private String repository;
/**
* @return the repository
*/
public String getRepository() {
return repository;
}
/**
* @param repository the repository to set
*/
public void setRepository(String repository) {
this.repository = repository;
}
}
我在使用 JGit 客户端时遇到了一些挑战。我将它嵌入到 Java 应用程序中,我想获取 Github 上一个帐户下的所有存储库并显示它们。此外,我可以使用 JGit 直接在 Github 上创建存储库吗?喜欢创建远程存储库吗?
我已经完成了这个 link 但它对我来说似乎很普通。提前致谢
List user repositories API是你可以从任何语言(包括Java)调用的东西,与JGit无关。
GET /users/:username/repos
Java 库进行这些调用的一个示例是“GitHub API for Java ", and its java.org.kohsuke.github.GHPerson.java#listRepositories()
方法
new PagedIterator<GHRepository>(
root.retrieve().asIterator("/users/" + login + "/repos?per_page=" + pageSize,
GHRepository[].class, pageSize))
获得这些用户存储库的 url 后,您可以从中创建 JGit 存储库。
我也在做同样的要求来获取特定用户的存储库列表 试试这个,您将获得该用户的所有存储库 //这里的name表示GitHub账号
的用户名public Collection<AuthMsg> getRepos(String name) {
String url = "https://api.github.com/users/"+name+"/repos";
String data = getJSON(url);
System.out.println(data);
Type collectionType = new TypeToken<Collection<AuthMsg>>(){}.getType();
Collection<AuthMsg> enums = new Gson().fromJson(data, collectionType);
return enums;
}
//getJson方法
public String getJSON(String url) {
HttpURLConnection c = null;
try {
URL u = new URL(url);
c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setRequestProperty("Content-length", "0");
c.setUseCaches(false);
c.setAllowUserInteraction(false);
c.connect();
int status = c.getResponseCode();
switch (status) {
case 200:
case 201:
BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
br.close();
return sb.toString();
}
} catch (MalformedURLException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} finally {
if (c != null) {
try {
c.disconnect();
} catch (Exception ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
return null;
}
//AuthMsg Class
public class AuthMsg {
//"name" which is in json what we get from url
@SerializedName("name")
private String repository;
/**
* @return the repository
*/
public String getRepository() {
return repository;
}
/**
* @param repository the repository to set
*/
public void setRepository(String repository) {
this.repository = repository;
}
}