package com.soundlooper.system.util;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kohsuke.github.GHIssue;
import org.kohsuke.github.GHIssueBuilder;
import org.kohsuke.github.GHRepository;
import org.kohsuke.github.GitHub;
import com.soundlooper.exception.SoundLooperRuntimeException;
import com.soundlooper.system.preferences.SoundLooperProperties;
public class IssueSender {
private static Logger logger = LogManager.getLogger(IssueSender.class);
public static GHIssue sendIssue(Throwable e) {
logger.info("Issue creation started");
String title = "Fatal error : " + e.toString();
String content = getContent();
return sendIssue(title, content);
}
private static String getContent() {
String content = "Error on version : " + SoundLooperProperties.getInstance().getVersion() + "\n\n";
content += "Complete log : \n";
try {
content += FileUtils.readFileToString(new File("log" + File.separator + "output.log"), "UTF-8");
logger.info("Content created (" + content.length() + " o)");
return content;
} catch (IOException e1) {
return "Unable to read log file : " + e1.toString();
}
}
public static GHIssue sendIssue(String title, String body) {
try {
logger.info("Github connection");
GitHub github = GitHub.connectUsingPassword("an-soundlooper", "mdpIntrouvable123");
logger.info("Get the repository");
GHRepository repository = github.getRepository("alexnedjari/SoundLooper");
logger.info("Before create issue");
GHIssueBuilder issueBuilder = repository.createIssue(title);
issueBuilder.body(body);
issueBuilder.label("bug");
logger.info("After create issue");
GHIssue issue = issueBuilder.create();
logger.info("After send issue");
return issue;
} catch (IOException e) {
throw new SoundLooperRuntimeException("Impossible de cr�er le ticket gitHub", e);
}
}
}