in Source/NuGetGallery.Operations/Tasks/CreateWarehouseReportsTask.cs [271:328]
static JObject MakeReportJson(Tuple<string[], List<object[]>> data)
{
JObject report = new JObject();
report.Add("Downloads", 0);
JObject items = new JObject();
foreach (object[] row in data.Item2)
{
string packageVersion = (string)row[0];
int downloads = (int)row[row.Length - 1];
JObject childReport;
JToken token;
if (items.TryGetValue(packageVersion, out token))
{
childReport = (JObject)token;
}
else
{
childReport = new JObject();
childReport.Add("Downloads", 0);
childReport.Add("Items", new JArray());
childReport.Add("Version", packageVersion);
items.Add(packageVersion, childReport);
}
JObject obj = new JObject();
if (row[1].ToString() == "NuGet" || row[1].ToString() == "WebMatrix")
{
obj.Add("Client", string.Format("{0} {1}.{2}", row[2], row[3], row[4]));
obj.Add("ClientName", row[2].ToString());
obj.Add("ClientVersion", string.Format("{0}.{1}", row[3], row[4]));
}
else
{
obj.Add("Client", row[2].ToString());
obj.Add("ClientName", row[2].ToString());
obj.Add("ClientVersion", "");
}
if (row[5].ToString() != "(unknown)")
{
obj.Add("Operation", row[5].ToString());
}
obj.Add("Downloads", (int)row[6]);
((JArray)childReport["Items"]).Add(obj);
}
report.Add("Items", items);
return report;
}