Beispiel #1
0
            public void ReadMetadata()
            {
                // Given
                IExecutionContext context;

                IDocument[] documents;
                Dictionary <IDocument, IDictionary <string, object> > cloneDictionary;

                Setup(out context, out documents, out cloneDictionary, Path.Combine(TestContext.CurrentContext.TestDirectory, @"Samples\Flamme.png"));

                System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("en");

                Xmp directoryMetadata = new Xmp()
                                        .WithMetadata("xmpRights:UsageTerms", "Copyright");
                // When
                var returnedDocuments = directoryMetadata.Execute(new List <IDocument>(documents), context).ToList();  // Make sure to materialize the result list

                // Then

                string expected = "This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/4.0/\">Creative Commons Attribution-ShareAlike 4.0 International License</a>.";

                Assert.True(cloneDictionary[documents[0]]
                            .ContainsKey("Copyright"),
                            "Metadata Copyright not found");
                Assert.AreEqual(expected, cloneDictionary[documents[0]]["Copyright"],
                                "Metadata Copyright Wrong Value");
            }
Beispiel #2
0
            public void ReadMetadata()
            {
                // Given
                IExecutionContext context;
                IDocument[] documents;
                Dictionary<IDocument, IDictionary<string, object>> cloneDictionary;
                Setup(out context, out documents, out cloneDictionary, Path.Combine(TestContext.CurrentContext.TestDirectory, @"Samples\Flamme.png"));

                System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("en");

                Xmp directoryMetadata = new Xmp()
                    .WithMetadata("xmpRights:UsageTerms", "Copyright");
                // When
                var returnedDocuments = directoryMetadata.Execute(new List<IDocument>(documents), context).ToList();  // Make sure to materialize the result list

                // Then

                string expected = "This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/4.0/\">Creative Commons Attribution-ShareAlike 4.0 International License</a>.";

                Assert.True(cloneDictionary[documents[0]]
                    .ContainsKey("Copyright"),
                    "Metadata Copyright not found");
                Assert.AreEqual(expected, cloneDictionary[documents[0]]["Copyright"],
                    "Metadata Copyright Wrong Value");
            }
Beispiel #3
0
        public void UsingNonDefaultNamespace()
        {
            // Given

            IDocument[] documents;
            Dictionary <IDocument, IDictionary <string, object> > cloneDictionary;

            Setup(out documents, out cloneDictionary, @"Samples\Flamme.png");

            System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("en");

            Xmp directoryMetadata = new Xmp()
                                    .WithNamespace("http://ns.adobe.com/xap/1.0/rights/", "bla")
                                    .WithMetadata("bla:UsageTerms", "Copyright");
            // When
            var returnedDocuments = directoryMetadata.Execute(new List <IDocument>(documents), Substitute.For <IExecutionContext>()).ToList();  // Make sure to materialize the result list

            // Then

            string expected = "This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/4.0/\">Creative Commons Attribution-ShareAlike 4.0 International License</a>.";

            Assert.True(cloneDictionary[documents[0]]
                        .ContainsKey("Copyright"),
                        "Metadata Copyright not found");
            Assert.AreEqual(expected, cloneDictionary[documents[0]]["Copyright"],
                            "Metadata Copyright Wrong Value");
        }
Beispiel #4
0
            public void DontSkipMissingMandatory()
            {
                // Given
                ThrowOnTraceEventType(TraceEventType.Error);
                IDocument[]       documents;
                IExecutionContext context;
                Dictionary <IDocument, IDictionary <string, object> > cloneDictionary;

                Setup(
                    out context,
                    out documents,
                    out cloneDictionary,
                    Path.Combine(TestContext.CurrentContext.TestDirectory, @"Samples\Flamme.png"),
                    Path.Combine(TestContext.CurrentContext.TestDirectory, @"Samples\RomantiqueInitials.ttf"));

                System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("en");

                Xmp directoryMetadata = new Xmp(skipElementOnMissingMandatoryData: false)
                                        .WithMetadata("xmpRights:UsageTerms", "Copyright", true);

                // When
                List <IDocument> returnedDocuments = directoryMetadata.Execute(new List <IDocument>(documents), context).ToList();  // Make sure to materialize the result list

                // Then
                Assert.AreEqual(
                    2,
                    returnedDocuments.Count,
                    "Wrong number of returned Documents");
            }
Beispiel #5
0
            public void ReadMetadata()
            {
                // Given
                System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("en");
                TestExecutionContext    context   = new TestExecutionContext();
                IEnumerable <IDocument> documents = GetDocuments(Path.Combine(TestContext.CurrentContext.TestDirectory, "Samples", "Flamme.png"));
                Xmp directoryMetadata             = new Xmp()
                                                    .WithMetadata("xmpRights:UsageTerms", "Copyright");

                // When
                List <IDocument> results = directoryMetadata.Execute(new List <IDocument>(documents), context).ToList();  // Make sure to materialize the result list

                // Then
                results.Single()["Copyright"].ToString()
                .ShouldBe("This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/4.0/\">Creative Commons Attribution-ShareAlike 4.0 International License</a>.");
            }
Beispiel #6
0
            public void DontSkipMissingMandatory()
            {
                // Given
                System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("en");
                ThrowOnTraceEventType(TraceEventType.Error);
                TestExecutionContext    context   = new TestExecutionContext();
                IEnumerable <IDocument> documents = GetDocuments(
                    Path.Combine(TestContext.CurrentContext.TestDirectory, "Samples", "Flamme.png"),
                    Path.Combine(TestContext.CurrentContext.TestDirectory, "Samples", "RomantiqueInitials.ttf"));
                Xmp directoryMetadata = new Xmp(skipElementOnMissingMandatoryData: false)
                                        .WithMetadata("xmpRights:UsageTerms", "Copyright", true);

                // When
                List <IDocument> results = directoryMetadata.Execute(new List <IDocument>(documents), context).ToList();  // Make sure to materialize the result list

                // Then
                results.Count.ShouldBe(2);
            }
 public void LoadFromMetadata(string fileName)
 {
     try
     {
         using (var xmp = Xmp.FromFile(fileName, XmpFileMode.ReadOnly))
         {
             string        propValue;
             PropertyFlags flags;
             xmp.XmpCore.GetProperty(XmpNamespace, XmpField, out propValue, out flags);
             if (!string.IsNullOrEmpty(propValue))
             {
                 Load(propValue);
             }
         }
     }
     catch (Exception exc)
     {
         Logger.Instance.Error("Error while parsing XMP metadata.", exc);
     }
 }
Beispiel #8
0
        public void DontSkipMissingMandetory()
        {
            // Given

            IDocument[] documents;
            Dictionary <IDocument, IDictionary <string, object> > cloneDictionary;

            Setup(out documents, out cloneDictionary, @"Samples\Flamme.png", @"Samples\RomantiqueInitials.ttf");

            System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("en");

            Xmp directoryMetadata = new Xmp(skipElementOnMissingMandatoryData: false)
                                    .WithMetadata("xmpRights:UsageTerms", "Copyright", true);
            // When
            var returnedDocuments = directoryMetadata.Execute(new List <IDocument>(documents), Substitute.For <IExecutionContext>()).ToList();  // Make sure to materialize the result list

            // Then

            Assert.AreEqual(2, returnedDocuments.Count,
                            "Wrong number of returned Documents");
        }
Beispiel #9
0
            public void DontSkipMissingMandatory()
            {
                // Given
                ThrowOnTraceEventType(TraceEventType.Error);
                IDocument[] documents;
                IExecutionContext context;
                Dictionary<IDocument, IDictionary<string, object>> cloneDictionary;
                Setup(out context, out documents, out cloneDictionary,
                    Path.Combine(TestContext.CurrentContext.TestDirectory, @"Samples\Flamme.png"),
                    Path.Combine(TestContext.CurrentContext.TestDirectory, @"Samples\RomantiqueInitials.ttf"));

                System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("en");

                Xmp directoryMetadata = new Xmp(skipElementOnMissingMandatoryData: false)
                    .WithMetadata("xmpRights:UsageTerms", "Copyright", true);
                // When
                var returnedDocuments = directoryMetadata.Execute(new List<IDocument>(documents), context).ToList();  // Make sure to materialize the result list

                // Then
                Assert.AreEqual(2, returnedDocuments.Count,
                    "Wrong number of returned Documents");
            }
        public static MetaDataItem[] GetXmpData(string filename)
        {
            if (PageUtils.IsRunningOnMono())
            {
                return(new MetaDataItem[0]);
            }

            List <MetaDataItem> ret = new List <MetaDataItem>();

            try
            {
                Xmp        xmp = Xmp.FromFile(filename, XmpFileMode.ReadOnly);
                DublinCore dc  = new DublinCore(xmp);
                if (dc.Contributor.Count > 0)
                {
                    foreach (string con in dc.Contributor)
                    {
                        ret.Add(new MetaDataItem("Xmp:Contributor", cleanXmpString(con)));
                    } // foreach
                }

                if (dc.Coverage != null)
                {
                    ret.Add(new MetaDataItem("Xmp:Coverage", cleanXmpString(dc.Coverage)));
                }

                if (dc.Creator.Count > 0)
                {
                    foreach (string s in dc.Creator)
                    {
                        ret.Add(new MetaDataItem("Xmp:Creator", cleanXmpString(s)));
                    }
                }

                if (dc.Date.Count > 0)
                {
                    foreach (DateTime dt in dc.Date)
                    {
                        ret.Add(new MetaDataItem("Xmp:Date", (dt)));
                    }
                }

                if (dc.Description != null && dc.Description.DefaultValue != null)
                {
                    ret.Add(new MetaDataItem("Xmp:Description", cleanXmpString(dc.Description.DefaultValue)));
                }

                if (dc.Format != null)
                {
                    ret.Add(new MetaDataItem("Xmp:Format", cleanXmpString(dc.Format)));
                }

                if (dc.Language.Count > 0)
                {
                    foreach (string lang in dc.Language)
                    {
                        ret.Add(new MetaDataItem("Xmp:Language", cleanXmpString(lang)));
                    }
                }

                if (dc.Publisher.Count > 0)
                {
                    foreach (string pub in dc.Publisher)
                    {
                        ret.Add(new MetaDataItem("Xmp:Publisher", cleanXmpString(pub)));
                    }
                }

                if (dc.Relation.Count > 0)
                {
                    foreach (string rel in dc.Relation)
                    {
                        ret.Add(new MetaDataItem("Xmp:Relation", cleanXmpString(rel)));
                    }
                }


                if (dc.Rights != null && dc.Rights.DefaultValue != null)
                {
                    ret.Add(new MetaDataItem("Xmp:Rights", (dc.Rights.DefaultValue)));
                }

                if (dc.Source != null)
                {
                    ret.Add(new MetaDataItem("Xmp:Source", cleanXmpString(dc.Source)));
                }

                if (dc.Subject.Count > 0)
                {
                    foreach (string sub in dc.Subject)
                    {
                        ret.Add(new MetaDataItem("Xmp:Subject", cleanXmpString(sub)));
                    }
                }

                if (dc.Title != null && dc.Title.DefaultValue != null)
                {
                    ret.Add(new MetaDataItem("Xmp:Title", (dc.Title.DefaultValue)));
                }

                if (dc.Type != null)
                {
                    ret.Add(new MetaDataItem("Xmp:Type", cleanXmpString(dc.Type)));
                }
            }
            catch (DllNotFoundException dllEx)
            {
                throw dllEx;
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }

            return(ret.ToArray());
        }