Example #1
0
        public void MimeTypeGet()
        {
            Assert.IsTrue(MimeTypeMapping.TryGetMapping(MimeTypes.Text.Plain, out var mapping));
            Assert.AreEqual(".txt", mapping.Extensions[0]);
            Assert.IsFalse(mapping.IsCompressedContent);

            MimeTypeMapping.Update("quark", false, true, ".quark", ".txt");
            Assert.AreEqual(".quark", MimeTypeMapping.GetExtensionFromMimeType("quark"));
            Assert.AreEqual("quark", MimeTypeMapping.GetMimeTypeFromExtension(".quark"));

            MimeTypeMapping.Update(MimeTypes.Text.Plain, false, false, ".txt", ".text");
            Assert.AreEqual(MimeTypes.Text.Plain, MimeTypeMapping.GetMimeTypeFromExtension(".text"));
        }
Example #2
0
                }                 // proc WriteAsync

                public override async Task WriteAsync(XmlWriter xml, IDataRow row)
                {
                    var objkIdKey = GetValue(row);

                    if (objkIdKey == null)
                    {
                        return;
                    }

                    var objkId = objkIdKey.ChangeType <long>();

                    // check cache
                    if (session.exportedImages.TryGetValue(objkId, out var fi) && fi != null)
                    {
                        await WriteAsync(xml, fi);

                        return;
                    }

                    // mark as exported
                    session.exportedImages[objkId] = null;

                    // test if the object is an image
                    var obj = session.application.Objects.GetObject(objkId);

                    if (obj.MimeType != MimeTypes.Image.Jpeg &&
                        obj.MimeType != MimeTypes.Image.Png &&
                        obj.MimeType != MimeTypes.Application.Pdf)
                    {
                        return;
                    }

                    // write object to disc
                    // todo: optimize to use direct link
                    fi = session.CreateTempFile(objkId.ToString() + MimeTypeMapping.GetExtensionFromMimeType(obj.MimeType), true);

                    using (var dst = fi.OpenWrite())
                        using (var src = obj.GetDataStream())
                            await src.CopyToAsync(dst);

                    await WriteAsync(xml, fi);

                    session.exportedImages[objkId] = fi;
                }         // proc WriteAsnyc
        public FileInfo GetLocalTempFileInfo(PpsObject obj)
        {
            // create temp directory
            var tempDirectory = new DirectoryInfo(Path.Combine(LocalPath.FullName, "tmp"));

            if (!tempDirectory.Exists)
            {
                tempDirectory.Create();
            }

            // build filename
            if (obj.TryGetProperty <string>(PpsObjectBlobData.FileNameTag, out var fileName))
            {
                fileName = obj.Guid.ToString("N") + "_" + fileName;
            }
            else
            {
                fileName = obj.Guid.ToString("N") + MimeTypeMapping.GetExtensionFromMimeType(obj.MimeType);
            }

            return(new FileInfo(Path.Combine(tempDirectory.FullName, fileName)));
        }         // func GetLocalTempFileInfo