import org.idlesoft.libraries.ghapi.GitHubAPI;
import java.io.IOException;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class GitHub {
public static String[] ParserCommitFile() throws SAXException, IOException, ParserConfigurationException{
GitHubAPI gapi = new GitHubAPI();
gapi.goStealth();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Repository[] array = GitHub.ParserRepoFile().clone();
String[] url = new String[array.length];
for(int i=0; i<array.length; i++){
url[i] = gapi.commits.list(array[i].userName, array[i].repositoryName, "master").url;
url[i] = url[i].replaceAll("json", "xml");
}
String[] sha = new String[url.length];
for (int i=0; i<url.length; i++){
Document document = builder.parse(url[i]) ;
document.getDocumentElement().normalize();
NodeList commitList = document.getElementsByTagName("commit");
Element element = (Element) commitList.item(0);
NodeList tree = element.getElementsByTagName("tree");
Element elementTree = (Element) tree.item(0);
sha[i] = elementTree.getTextContent();
//System.out.println(i+ " " +sha[i]);
}
return sha;
}
public static Repository[] ParserRepoFile(){
ArrayList<Repository> listOfRepositories = new ArrayList<Repository>();
GitHubAPI gapi = new GitHubAPI();
gapi.goStealth();
String url = gapi.repo.search("Qcadoo").url;
url = url.replaceAll("json", "xml");
//System.out.println(url);
Repository[] arrayRepository = null;
try{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(url);
document.getDocumentElement().normalize();
NodeList repoList = document.getElementsByTagName("repository");
for (int i = 0; i<repoList.getLength(); i++){
Element element = (Element) repoList.item(i);
NodeList usernameList = element.getElementsByTagName("username");
Element elementUser = (Element) usernameList.item(0);
String userName = elementUser.getTextContent();
NodeList name = element.getElementsByTagName("name");
Element elementName = (Element) name.item(0);
String repositoryName = elementName.getTextContent();
NodeList descriptionList = element.getElementsByTagName("description");
Element elementDescription = (Element) descriptionList.item(0);
String description = elementDescription.getTextContent();
Repository repository = new Repository(userName, repositoryName, description);
listOfRepositories.add(repository);
}
arrayRepository = new Repository[listOfRepositories.size()];
listOfRepositories.toArray(arrayRepository);
}catch(Exception e){
System.out.print("test");
}
return arrayRepository;
}
public static void GetBlob() throws SAXException, IOException, ParserConfigurationException{
GitHubAPI gapi = new GitHubAPI();
gapi.goStealth();
GitHubAPI gapi2 = new GitHubAPI();
gapi2.goStealth();
String[] url = new String[GitHub.ParserCommitFile().length];
Repository[] repoArray = GitHub.ParserRepoFile().clone();
String[] shaArrayTree = GitHub.ParserCommitFile().clone();
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
NodeList treeArray = null;
Element elementTree;
String[] nameArray = null;
String[] typeArray = null;
String[] shaArray = null;
String shaUrl = null;
for(int i=0; i<url.length; i++){
url[i] = gapi.object.tree(repoArray[i].userName, repoArray[i].repositoryName, shaArrayTree[i]).url;
url[i] = url[i].replaceAll("json", "xml");
Document doc = dBuilder.parse(url[i]);
doc.getDocumentElement().normalize();
NodeList tree = doc.getElementsByTagName("tree");
Element element = (Element) tree.item(0);
treeArray = element.getElementsByTagName("tree");
nameArray = new String[treeArray.getLength()];
typeArray = new String[treeArray.getLength()];
shaArray = new String[treeArray.getLength()];
//elementTree = (Element) treeArray.item(i);
for(int j=0; j<treeArray.getLength(); j++){
//array[j] = treeArray.item(j).getTextContent();
elementTree = (Element) treeArray.item(j);
NodeList name = elementTree.getElementsByTagName("name");
Element nameElement = (Element) name.item(0);
nameArray[j] = nameElement.getTextContent();
//System.out.println(nameArray[j]);
NodeList type = elementTree.getElementsByTagName("type");
Element typeElement = (Element) type.item(0);
typeArray[j] = typeElement.getTextContent();
//System.out.println(typeArray[j]);
NodeList sha = elementTree.getElementsByTagName("sha");
Element shaElement = (Element) sha.item(0);
shaArray[j] = shaElement.getTextContent();
if (nameArray[j].equals("qcadoo-plugin.xml")){
//String qcadoo = gapi.object.blob(repoArray[i].userName, repoArray[i].repositoryName, shaArray[j], "").url;
//System.out.println(qcadoo);
}else{
if(typeArray[j].equals("tree")){
//System.out.println(typeArray[j]);
shaUrl = gapi2.object.tree(repoArray[i].userName, repoArray[i].repositoryName, shaArray[j]).url;
shaUrl = shaUrl.replaceAll("json", "xml");
System.out.println(shaUrl);
}
}
}
}
//System.out.println(url[i]);
}
}