2012-07-04 120 views
4

我想根据大小和关键字参数搜索Github仓库。这里是Java代码中,我写道:Github Java API - 搜索仓库

package searchTest; 

import java.io.IOException; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import org.eclipse.egit.github.core.SearchRepository; 
import org.eclipse.egit.github.core.client.GitHubClient; 
import org.eclipse.egit.github.core.service.RepositoryService; 

public class GithubSearch { 
    private static Map<String, String> searchQuery = new HashMap<String, String>(); 

    public static void main(String[] args) throws IOException { 
     GitHubClient client = new GitHubClient(); 
     client.setCredentials("username", "password"); 
     RepositoryService service = new RepositoryService(client); 
     searchQuery.put("keyword","microsoft"); 
     searchQuery.put("size","304"); 
     List<SearchRepository> searchRes = service.searchRepositories(searchQuery); 
     System.out.println("Search result "+searchRes.toString()); 
    } 
} 

但输出我得到的是空:

Search result [] 

我查了GitHub Java API的javadoc,但无法找到一个解决方案。

谢谢!

回答

0

也许你应该尝试仅搜索关键字。我认为他们不支持大小搜索。

1

我跑的代码示例如下图所示,没有大小为关键词的 “java”

Map<String, String> searchQuery = new HashMap<String, String>(); 
searchQuery.put("keyword", "java"); 
List<SearchRepository> searchRes = null; 
try { 
    searchRes = service.searchRepositories(searchQuery); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

System.out.println("Search result "+searchRes.toString()); 

输出来了,如同:

Search result [michaelriha/WASC-Essay, sayems/Keyword-Driven-Framework, youdevise/karg, frinknet/DBG.js, andorp/testkeys, jpolitz/defaults.js, lsmith/article--javascript-this, qiaoyu314/TwitterMiner, cookieglitch/SearchToDB_Twitter, snoooze03/costOfVolatile, dziaduZLasu/java-critical-section-synchro, tvalletta/this-presentation, youdevise/jpoeisis, Sixtease/RtkInputMethod, metabrain/java8-plugin-persitent-local-vars, atestology/roark, jsmreese/pureshare-javascript-api, kentcdodds/genie, TARUNTEJAKOPPULA/Runnung-java-code-with-another-java-program, aleSuglia/SitesLook, neetsdkasu/LittleLisp, odbol/Port-Java-to-C, artfulgeek/Hybrid-Search-and-Delivery-of-Learning-Objects, itcuties/Java-XStream-Complex-Example, codeheadzxc/TomsMovieFinder, truongsinh/generator, nsdevaraj/SwizDAO, dineshkummarc/jameleon-test-suite-3.3-RC1] 

现在加入大小196查询搜索:

Map<String, String> searchQuery = new HashMap<String, String>(); 
searchQuery.put("keyword", "java"); 
searchQuery.put("size", "196"); 
List<SearchRepository> searchRes = null; 
try { 
    searchRes = service.searchRepositories(searchQuery); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
System.out.println("Search result "+searchRes.toString()); 

并输出如下:

Search result [michaelriha/WASC-Essay] 

我认为“size”参数不是固定搜索限制的数量,而是仅仅获取那个大小的存储库。

+0

这个答案应该被接受。 –

2

尝试jcabi-github(我是它的开发者之一):

final Github github = new RtGithub(); 
final JsonResponse resp = github.entry() 
    .uri().path("/search/repositories") 
    .queryParam("q", "java").back() 
    .fetch() 
    .as(JsonResponse.class); 
final List<JsonObject> items = resp.json().readObject() 
    .getJsonArray("items") 
    .getValuesAs(JsonObject.class); 
for (final JsonObject item : items) { 
    System.out.println(
     String.format(
      "repository found: %s", 
      item.get("full_name").toString() 
     ) 
    ); 
} 

完整的示例是在这里:https://github.com/jcabi/jcabi-github/tree/master/examples/search-repos