package org.vaadin.mideaas.social;
import java.io.IOException;
import org.kohsuke.github.GHMyself;
import org.kohsuke.github.GHRepository;
import org.kohsuke.github.GitHub;
public class GitHubService extends OAuthService {
public GitHubService(String apiKey, String apiSecret, UserToken token) {
super(Service.GITHUB, apiKey, apiSecret, token);
}
private GitHub gh;
@Override
protected void connect() {
try {
gh = GitHub.connectUsingOAuth(getUserToken().getToken());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected UserProfile fetchUserProfile() {
if (gh==null) {
return null;
}
try {
GHMyself me = gh.getMyself();
String id = me.getLogin();
String name = me.getName();
String email = me.getEmail();
String imgUrl = me.getAvatarUrl();
return new UserProfile(Service.GITHUB, getUserToken(), id, name, email, imgUrl);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public String createRepository(String projectName) throws IOException {
connect();
String name = gh.getMyself().getLogin()+"/"+projectName;
try {
GHRepository r = gh.getRepository(name);
return getHttpsUrl(r);
} catch (IOException e) {
// No such repo found. No prob, we create it.
}
String descr = projectName + " created by MIDEaaS";
GHRepository r = gh.createRepository(projectName, descr, null, true);
return getHttpsUrl(r);
}
private String getHttpsUrl(GHRepository r) {
String url = r.getUrl();
return url.replace("http://", "https://").replaceFirst("/?$", ".git");
}
}