Skip to content

Commit

Permalink
Refactor Retrofit samples (eugenp#2568)
Browse files Browse the repository at this point in the history
  • Loading branch information
pivovarit authored Sep 6, 2017
1 parent 216f7d8 commit e0c1678
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 67 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
import java.util.List;

public class GitHubBasicApp {

public static void main(String[] args) throws IOException {
String userName = "eugenp";
List<String> topContributors = new GitHubBasicService().getTopContributors(userName);
topContributors.stream().forEach(System.out::println);
List<String> topContributors = new GitHubBasicService()
.getTopContributors(userName);
topContributors.forEach(System.out::println);
}

}
Original file line number Diff line number Diff line change
@@ -1,54 +1,60 @@
package com.baeldung.retrofit.basic;

import com.baeldung.retrofit.models.Contributor;
import com.baeldung.retrofit.models.Repository;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import com.baeldung.retrofit.models.Contributor;
import com.baeldung.retrofit.models.Repository;

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
class GitHubBasicService {

public class GitHubBasicService {

private GitHubBasicApi gitHubApi;
public GitHubBasicService() {

GitHubBasicService() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
gitHubApi = retrofit.create(GitHubBasicApi.class);
.baseUrl("https://api.github.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();

gitHubApi = retrofit.create(GitHubBasicApi.class);
}
public List<String> getTopContributors(String userName) throws IOException {

List<String> getTopContributors(String userName) throws IOException {
List<Repository> repos = gitHubApi
.listRepos(userName)
.execute()
.body();

List<Contributor> topContributors = new ArrayList<>();
for(Repository repo : repos) {
List<Contributor> contributers = gitHubApi

repos = repos != null ? repos : Collections.emptyList();

return repos.stream()
.flatMap(repo -> getContributors(userName, repo))
.sorted((a, b) -> b.getContributions() - a.getContributions())
.map(Contributor::getName)
.distinct()
.sorted()
.collect(Collectors.toList());
}

private Stream<Contributor> getContributors(String userName, Repository repo) {
List<Contributor> contributors = null;
try {
contributors = gitHubApi
.listRepoContributors(userName, repo.getName())
.execute()
.body();

List<Contributor> repoTopContributors = contributers.stream()
.filter(c -> c.getContributions() > 100)
.collect(Collectors.toList());
topContributors.addAll(repoTopContributors);
} catch (IOException e) {
e.printStackTrace();
}

Collections.sort(topContributors, (a, b) -> b.getContributions() - a.getContributions());
return topContributors.stream()
.map(c -> c.getName())
.distinct()
.collect(Collectors.toList());
}

contributors = contributors != null ? contributors : Collections.emptyList();

return contributors.stream()
.filter(c -> c.getContributions() > 100);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@

import com.google.gson.annotations.SerializedName;

/**
* GitHub Contributer
* @author hany
*
*/
public class Contributor {

@SerializedName("login")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
package com.baeldung.retrofit.models;

/**
* GitHub Repository
* @author hany
*
*/
public class Repository {

private String name;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
import java.io.IOException;

public class GitHubRxApp {

public static void main(String[] args) throws IOException {
String userName = "eugenp";
new GitHubRxService().getTopContributors(userName)
.subscribe(System.out::println);
}

}
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
package com.baeldung.retrofit.rx;

import com.baeldung.retrofit.models.Contributor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.Observable;

public class GitHubRxService {
class GitHubRxService {

private GitHubRxApi gitHubApi;
public GitHubRxService() {

GitHubRxService() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
.baseUrl("https://api.github.com/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();

gitHubApi = retrofit.create(GitHubRxApi.class);
}
public Observable<String> getTopContributors(String userName) {

Observable<String> getTopContributors(String userName) {
return gitHubApi.listRepos(userName)
.flatMap( repos -> Observable.from(repos))
.flatMap( repo -> gitHubApi.listRepoContributors(userName, repo.getName()) )
.flatMap( contributers -> Observable.from(contributers))
.filter( c -> c.getContributions() > 100)
.sorted( (a, b) -> b.getContributions() - a.getContributions() )
.map( c -> c.getName())
.flatMapIterable(x -> x)
.flatMap(repo -> gitHubApi.listRepoContributors(userName, repo.getName()))
.flatMapIterable(x -> x)
.filter(c -> c.getContributions() > 100)
.sorted((a, b) -> b.getContributions() - a.getContributions())
.map(Contributor::getName)
.distinct();
}

}

0 comments on commit e0c1678

Please sign in to comment.