private bool SubmitToYouTrack()
{
try
{
ChangeState(State.Submitting);
_youTrackConnection.Authenticate("auto_report_creator", "thisIsInOpenSourceCode");
_issueManagement = new IssueManagement(_youTrackConnection);
_youTrackIssue = new Issue();
_youTrackIssue.ProjectShortName = _youTrackProjectKey;
_youTrackIssue.Type = "Awaiting Classification";
_youTrackIssue.Summary = string.Format(Summary,_name.Text);
_youTrackIssue.Description = GetFullDescriptionContents(false);
_youTrackIssueId = _issueManagement.CreateIssue(_youTrackIssue);
// this could all be done in one go, but I'm doing it in stages so as to increase the
// chance of success in bad internet situations
if (_includeScreenshot.Checked)
{
using (var file = TempFile.WithFilenameInTempFolder("screenshot.png"))
{
SIL.IO.RobustIO.SaveImage(_screenshot, file.Path, ImageFormat.Png);
AddAttachment(file.Path);
}
}
if (Logger.Singleton != null)
{
try
{
using (var logFile = GetLogFile())
{
AddAttachment(logFile.Path);
}
}
catch (Exception e)
{
_youTrackIssue.Description += System.Environment.NewLine + "***Got exception trying to attach log file: " + e.Message;
_issueManagement.UpdateIssue(_youTrackIssueId, _youTrackIssue.Summary, _youTrackIssue.Description);
}
}
if (_includeBook.Visible && _includeBook.Checked) // only Visible if Book is not null
{
ChangeState(State.UploadingBook);
using (var bookZip = TempFile.WithFilenameInTempFolder(_youTrackIssueId + ".zip"))
{
var progress = new StatusProgress();
try
{
var zip = new BloomZipFile(bookZip.Path);
zip.AddDirectory(Book.FolderPath);
zip.Save();
}
catch (Exception error)
{
_youTrackIssue.Description += System.Environment.NewLine + "***Error as ProblemReporterDialog attempted to zip up the book: " + error.Message;
_issueManagement.UpdateIssue(_youTrackIssueId, _youTrackIssue.Summary, _youTrackIssue.Description);
Logger.WriteEvent("*** Error as ProblemReporterDialog attempted to zip up the book. " + error.Message);
// if an error happens in the zipper, the zip file stays locked, so we just leak it
bookZip.Detach();
_shortErrorHtml += " Error Zipping Book ";
throw;
}
try
{
string url = ProblemBookUploader.UploadBook(BloomS3Client.ProblemBookUploadsBucketName, bookZip.Path,
progress);
_youTrackIssue.Description += System.Environment.NewLine + url;
_issueManagement.UpdateIssue(_youTrackIssueId, _youTrackIssue.Summary, _youTrackIssue.Description);
}
catch (Exception error)
{
Logger.WriteError(progress.LastError, error);
_youTrackIssue.Description += System.Environment.NewLine + "***Got exception trying upload book: " + error.Message;
_issueManagement.UpdateIssue(_youTrackIssueId, _youTrackIssue.Summary, _youTrackIssue.Description);
_shortErrorHtml += " Uploading Book Failed ";
}
}
}
ChangeState(State.Success);
return true;
}
catch (Exception error)
{
Debug.Fail(error.Message);
return false;
}
}