6

I want to search Github repos based on size and keyword parameters. Here is the Java code I wrote:

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());
    }   
}

But the output I get is empty:

Search result []

I checked the GitHub Java API javadoc, but could not find a solution.

Thanks!

3 Answers 3

5

Try jcabi-github (I'm one of its developers):

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()
        )
    );
}

Full example is here: https://github.com/jcabi/jcabi-github/tree/master/examples/search-repos

Sign up to request clarification or add additional context in comments.

Comments

2

I ran sample code like below without size for keyword "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());

Output came like :

    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]

Now added size 196 to query search :

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());

and output came like :

    Search result [michaelriha/WASC-Essay]

I think "size" parameter is not to fix the number of search limit , but it is to get only those repositories with that size.

Comments

1

Perhaps you should try to search for keyword only. I think they don't support size search.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.