Example #1
0
        public virtual object GetContents()
        {
            using var stream = OpenRead();
            var romBytes = stream.ReadFullyAsMemory();

            if (MimeTypes.IsBinary(MimeTypes.GetMimeType(Extension)))
            {
                return(romBytes);
            }

            return(MemoryProvider.Instance.FromUtf8(romBytes.Span));
        }
Example #2
0
        public override void WriteFiles(Dictionary <string, object> files)
        {
            string ToBase64ThenDispose(Stream stream)
            {
                using (stream)
                    return(ToBase64(stream));
            }

            var gistFiles = new Dictionary <string, string>();

            foreach (var entry in files)
            {
                if (entry.Value == null)
                {
                    continue;
                }

                var filePath = SanitizePath(entry.Key);

                var base64 = entry.Value is string
                             ?null
                             : entry.Value is byte[] bytes
                        ? ToBase64(bytes)
                        : entry.Value is Stream stream
                            ? ToBase64ThenDispose(stream)
                            : entry.Value is IVirtualFile file &&
                             MimeTypes.IsBinary(MimeTypes.GetMimeType(file.Extension))
                                ? ToBase64(file.ReadAllBytes())
                                : null;

                if (base64 != null)
                {
                    filePath += "|base64";
                }

                var textContents = base64 ??
                                   (entry.Value is string text
                                       ? text
                                       : throw CreateContentNotSupportedException(entry.Value));

                gistFiles[filePath] = textContents;
            }

            Gateway.WriteGistFiles(GistId, gistFiles);
            ClearGist();
        }
 public bool fileIsBinary(IVirtualFile file) => MimeTypes.IsBinary(MimeTypes.GetMimeType(file.Extension));
 public object fileContents(IVirtualFile file) => file is null ? null
     : MimeTypes.IsBinary(MimeTypes.GetMimeType(file.Extension))
         ? file.ReadAllBytes()
         : (object)file.ReadAllText();