public void ReadGpxFromFileTest_ReturnAfterFirstFieldReadFile_Null()
        {
            var returnItem = ReadMetaGpx.ReadGpxFromFileReturnAfterFirstField(null, "/test.gpx");

            Assert.AreEqual(FileIndexItem.ExifStatus.OperationNotSupported, returnItem.Status);
            Assert.AreEqual("/test.gpx", returnItem.FilePath);
        }
Exemple #2
0
        private FileIndexItem ReadExifAndXmpFromFileDirect(string subPath)
        {
            if (_iStorage.ExistFile(subPath) &&
                ExtensionRolesHelper.IsExtensionForceGpx(subPath))
            {
                return(ReadMetaGpx.ReadGpxFromFileReturnAfterFirstField(_iStorage.ReadStream(subPath), subPath));
            }

            var fileIndexItemWithPath = new FileIndexItem(subPath);

            // Read first the sidecar file
            var xmpFileIndexItem = _readXmp.XmpGetSidecarFile(fileIndexItemWithPath.Clone());

            if (xmpFileIndexItem.IsoSpeed == 0 ||
                string.IsNullOrEmpty(xmpFileIndexItem.Make) ||
                xmpFileIndexItem.DateTime.Year == 0 || xmpFileIndexItem.ImageHeight == 0)
            {
                // so the sidecar file is not used
                var fileExifItemFile = _readExif.ReadExifFromFile(subPath, fileIndexItemWithPath);

                // overwrite content with incomplete sidecar file (this file can contain tags)
                FileIndexCompareHelper.Compare(fileExifItemFile, xmpFileIndexItem);
                return(fileExifItemFile);
            }

            return(xmpFileIndexItem);
        }
        public void ParseXml_XXETest()
        {
            var xxeExample = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                             "<!DOCTYPE foo [ <!ENTITY xxe SYSTEM \"file:///etc/passwd\"> ]>" +
                             "<stockCheck><productId>&xxe;</productId></stockCheck>";

            var returnItem = ReadMetaGpx.ParseXml(xxeExample);

            Assert.AreEqual(string.Empty, returnItem.ChildNodes[1].InnerText);
        }
        public void ReadGpxFromFileTest_NonValidInput()
        {
            var          gpxBytes = new byte[0];
            MemoryStream stream   = new MemoryStream(gpxBytes);

            var returnItem = ReadMetaGpx.ReadGpxFromFileReturnAfterFirstField(stream, "/test.gpx");

            Assert.AreEqual(new DateTime(), returnItem.DateTime);
            Assert.AreEqual("/test.gpx", returnItem.FilePath);
        }
        public void ReadGpxFromFileTest_TestFileName()
        {
            var          gpxBytes = CreateAnGpx.Bytes;
            MemoryStream stream   = new MemoryStream(gpxBytes);

            var returnItem =
                ReadMetaGpx.ReadGpxFromFileReturnAfterFirstField(stream, "/test.gpx");

            Assert.AreEqual("test.gpx", returnItem.FileName);
            Assert.AreEqual("/", returnItem.ParentDirectory);
        }
        public void ReadGpxFromFileTest_ReadFile()
        {
            var          gpxBytes   = CreateAnGpx.Bytes;
            MemoryStream stream     = new MemoryStream(gpxBytes);
            var          returnItem = ReadMetaGpx.ReadGpxFile(stream);

            Assert.AreEqual(5.485941, returnItem.FirstOrDefault().Longitude, 0.001);
            Assert.AreEqual(51.809360, returnItem.FirstOrDefault().Latitude, 0.001);
            DateTime.TryParseExact("2018-09-05T17:31:53Z",
                                   "yyyy-MM-ddTHH:mm:ssZ",
                                   CultureInfo.InvariantCulture,
                                   DateTimeStyles.AdjustToUniversal,
                                   out var expectDateTime);

            // gpx is always utc
            Assert.AreEqual(expectDateTime, returnItem.FirstOrDefault().DateTime);
            Assert.AreEqual("_20180905-fietsen-oss", returnItem.FirstOrDefault().Title);
            Assert.AreEqual(7.263, returnItem.FirstOrDefault().Altitude, 0.001);
        }
Exemple #7
0
        private List <GeoListItem> GetGpxFile(List <FileIndexItem> metaFilesInDirectory)
        {
            var geoList = new List <GeoListItem>();

            foreach (var metaFileItem in metaFilesInDirectory)
            {
                if (!ExtensionRolesHelper.IsExtensionForceGpx(metaFileItem.FileName))
                {
                    continue;
                }

                if (!_iStorage.ExistFile(metaFileItem.FilePath))
                {
                    continue;
                }

                using (var stream = _iStorage.ReadStream(metaFileItem.FilePath))
                {
                    geoList.AddRange(ReadMetaGpx.ReadGpxFile(stream, geoList));
                }
            }
            return(geoList);
        }