public IDictionary <string, object> AsDict()
{
var logURLs = new Dictionary <string, string> ();
if (LogURL != null)
{
string defaultURL;
logURLs.TryGetValue("*", out defaultURL);
if (defaultURL == null)
{
logURLs ["*"] = LogURL;
}
else if (defaultURL != LogURL)
{
foreach (var run in Runs)
{
logURLs [run.Benchmark.Name] = LogURL;
}
}
}
var dict = new Dictionary <string, object> ();
dict ["MainProduct"] = Commit.AsDict();
dict ["SecondaryProducts"] = SecondaryCommits.Select(c => c.AsDict()).ToList();
dict ["Machine"] = Machine.AsDict();
dict ["Config"] = Config.AsDict();
dict ["TimedOutBenchmarks"] = new List <string> (TimedOutBenchmarks);
dict ["CrashedBenchmarks"] = new List <string> (CrashedBenchmarks);
dict ["StartedAt"] = StartDateTime.ToString(DATETIME_FORMAT);
dict ["FinishedAt"] = FinishDateTime.ToString(DATETIME_FORMAT);
dict ["BuildURL"] = BuildURL;
dict ["LogURLs"] = logURLs;
dict ["Runs"] = Runs.Select(r => r.AsDict()).ToList();
if (PullRequestBaselineRunSetId != null)
{
var prDict = new Dictionary <string, object> ();
prDict ["BaselineRunSetID"] = PullRequestBaselineRunSetId.Value;
prDict ["URL"] = PullRequestURL;
dict ["PullRequest"] = prDict;
}
return(dict);
}