public static async Task ExtractSignature()

in net/JetBrains.SignatureExtractor/src/SignatureOperations.cs [13:43]


  public static async Task ExtractSignature(Stream inputFile, Stream output)
  {
    if (!inputFile.CanSeek)
      throw new SignatureExtractionException("Input file must be seekable");

    var fileType = FileTypeExplorer.Detect(inputFile);
    inputFile.Seek(0, SeekOrigin.Begin);

    var signatureContainer = fileType.FileType switch
    {
      FileType.MachO => ExtractMachOSignatures(inputFile),
      FileType.Pe => ExtractPeSignatures(inputFile),
      FileType.Dmg => ExtractDmgSignatures(inputFile),
      _ => throw new SignatureExtractionException($"Unsupported file type: {fileType.FileType}.")
    };

    var settings = new JsonSerializerSettings()
    {
      Converters = { new Newtonsoft.Json.Converters.StringEnumConverter() },
      Formatting = Formatting.Indented,
      NullValueHandling = NullValueHandling.Ignore,
    };

    using (StreamWriter writer = new StreamWriter(output, Encoding.UTF8, 1024, true))
    using (JsonTextWriter jsonWriter = new JsonTextWriter(writer))
    {
      JsonSerializer ser = JsonSerializer.Create(settings);
      ser.Serialize(jsonWriter, signatureContainer);
      await jsonWriter.FlushAsync();
    }
  }