public Report(string level, string culprit, string message, string exception = null)
 {
     this.headers = RemoteLogger.BuildHeaders();
     this.level   = level;
     this.message = (message.Length > 1000 ? message.Substring(0, 1000) : message);
     this.culprit = culprit;
     this.modules = new Dictionary <string, string>();
     foreach (Extension allExtension in Interface.Oxide.GetAllExtensions())
     {
         this.modules[allExtension.GetType().Assembly.GetName().Name] = allExtension.Version.ToString();
     }
     if (exception != null)
     {
         this.extra = new Dictionary <string, string>();
         string[] array = exception.Split(new char[] { '\n' }).Take <string>(31).ToArray <string>();
         for (int i = 0; i < (int)array.Length; i++)
         {
             string str = array[i].Trim(new char[] { ' ', '\r', '\n' }).Replace('\t', ' ');
             if (str.Length > 0)
             {
                 this.extra[string.Concat("line_", i.ToString("00"))] = str;
             }
         }
     }
 }
 public QueuedReport(RemoteLogger.Report report)
 {
     this.Headers = RemoteLogger.BuildHeaders();
     this.Body    = JsonConvert.SerializeObject(report);
 }