Exemplo n.º 1
0
        private static XElement XmlParse(XDocument projDefinition, string referenceType, Func <XElement, bool> whereCondition = null)
        {
            XNamespace xmlns = "http://schemas.microsoft.com/developer/msbuild/2003";
            XElement   packageReferenceElement;

            if (projDefinition.Root.Attribute("xmlns") != null)
            {
                packageReferenceElement = projDefinition
                                          ?.Element(xmlns + "Project")
                                          ?.Elements(xmlns + "ItemGroup")
                                          ?.Elements(xmlns + referenceType)
                                          .Where(x => whereCondition == null ? true : whereCondition(x))
                                          .FirstOrDefault();
            }
            else
            {
                packageReferenceElement = projDefinition
                                          ?.Element("Project")
                                          ?.Elements("ItemGroup")
                                          ?.Elements(referenceType)
                                          .Where(x => whereCondition == null ? true : whereCondition(x))
                                          .FirstOrDefault();
            }

            return(packageReferenceElement);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Parse the app cast XML string into a list of <see cref="AppCastItem"/> objects.
        /// When complete, the Items list should contain the parsed information
        /// as <see cref="AppCastItem"/> objects.
        /// </summary>
        /// <param name="appCast">the non-null string XML app cast</param>
        protected virtual void ParseAppCast(string appCast)
        {
            const string itemNode = "item";

            Items.Clear();

            XDocument doc     = XDocument.Parse(appCast);
            var       rss     = doc?.Element("rss");
            var       channel = rss?.Element("channel");

            Title    = channel?.Element("title")?.Value ?? string.Empty;
            Language = channel?.Element("language")?.Value ?? "en";

            var items = doc.Descendants(itemNode);

            foreach (var item in items)
            {
                var currentItem = AppCastItem.Parse(_config.InstalledVersion, _config.ApplicationName, _castUrl, item, _logWriter);
                _logWriter.PrintMessage("Found an item in the app cast: version {0} ({1}) -- os = {2}",
                                        currentItem?.Version, currentItem?.ShortVersion, currentItem.OperatingSystemString);
                Items.Add(currentItem);
            }

            // sort versions in reverse order
            Items.Sort((item1, item2) => - 1 * item1.CompareTo(item2));
        }
Exemplo n.º 3
0
        public Nuspec GetNuspec()
        {
            using (var zipArchive = System.IO.Compression.ZipFile.Open(_packagePath, System.IO.Compression.ZipArchiveMode.Read))
            {
                var nuspecFileName  = $"{_packageName}.nuspec";
                var zipArchiveEntry = zipArchive.GetEntry(nuspecFileName);

                var       nuspecFileStream = zipArchiveEntry.Open();
                XDocument document         = null;
                document = XDocument.Load(nuspecFileStream);

                var nsNs         = XNamespace.Get("http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd");
                var dependencies = document?.Element(nsNs + "package")?.Element(nsNs + "metadata")?.Element(nsNs + "dependencies")?.Elements(nsNs + "dependency")
                                   .Select(e => new NuspecDependency()
                {
                    Name = e.Attribute("id")?.Value, Version = e.Attribute("version")?.Value
                });
                var nuspec = new Nuspec
                {
                    Name         = _packageName,
                    Dependencies = dependencies?.Where(d => d != null).ToArray() ?? new NuspecDependency[0],
                    Version      = _version,
                };

                return(nuspec);
            }
        }
Exemplo n.º 4
0
        public async Task RequestExtract(CancellationToken token, string id, ExtractType type, string extractorPath)
        {
            try
            {
                string extracttype = type switch
                {
                    ExtractType.Full => "complete",
                    ExtractType.Incremental => "incremental",
                    _ => "incremental"
                };
                string request_string = $"{_settings.GisServerUrl}?request=export&export_type={extracttype}&path={Uri.EscapeDataString(extractorPath)}&correlation_id={id}";
                var    method         = new HttpMethod("GET");
                var    request        = new HttpRequestMessage(method, request_string);
                var    res            = await client.SendAsync(request);

                var message = await res.Content.ReadAsStringAsync();

                XDocument doc = XDocument.Parse(message);
                if (res.StatusCode == System.Net.HttpStatusCode.OK && doc?.Element("return")?.Element("service_response")?.Element("status")?.Value == "OK")
                {
                    await CheckForIdfOutput(extractorPath, token);
                }
                else
                {
                    throw new ExtractorException($"Could not trigger an extract.  Message from gis server:{message}");
                }
            }
            catch (Exception ex)
            {
                throw new ExtractorException("Exception occured during extraction, see inner exception for details", ex);
            }
        }
        public static MapLocation ManageGeolocationResponse(XDocument response)
        {
            var geocodeResponse = response?.Element("GeocodeResponse");
            var result          = geocodeResponse?.Element("result");
            var geometry        = result?.Element("geometry");
            var location        = geometry?.Element("location");

            if (location == null)
            {
                return(null);
            }

            var latitude  = location.Element("lat");
            var longitude = location.Element("lng");

            if (latitude == null || longitude == null)
            {
                return(null);
            }

            return(new MapLocation()
            {
                Latitude = latitude.Value,
                Longitude = longitude.Value
            });
        }
Exemplo n.º 6
0
        public MorningReportInfo FindMorningReport(XDocument rss)
        {
            var item = rss?.Element("rss")
                       ?.Element("channel")
                       ?.Element("item");

            if (item == null)
            {
                return(null);
            }
            var title    = item.Element("title")?.Value;
            var date     = Utils.ParseDate(item.Element("pubDate")?.Value);
            var author   = item.Element("{http://purl.org/dc/elements/1.1/}creator")?.Value;
            var contents = item.Element("{http://purl.org/rss/1.0/modules/content/}encoded")?.Value;
            var doc      = ConvertHtmlToXml(contents);

            if (doc == null)
            {
                return(null);
            }
            return(new MorningReportInfo {
                Title = title,
                Date = date ?? DateTime.UtcNow.Date,
                Author = author,
                Document = doc
            });
        }
Exemplo n.º 7
0
        public static bool TryParseRss20Feed(XDocument document, out Rss20Feed parsedFeed, ExtensionManifestDirectory extensionManifestDirectory = null)
        {
            parsedFeed = default;

            var rssElement = document?.Element("rss");

            if (rssElement == null)
            {
                return(false);
            }

            var rssVersion = rssElement.Attribute("version")?.Value;

            if (!Rss20Constants.RecognizedVersions.Contains(rssVersion))
            {
                return(false);
            }

            if (extensionManifestDirectory == null)
            {
                extensionManifestDirectory = ExtensionManifestDirectory.DefaultForRss;
            }

            if (!TryParseRss20Channel(rssElement.Element("channel"), extensionManifestDirectory, out var parsedChannel))
            {
                return(false);
            }

            parsedFeed         = new Rss20Feed();
            parsedFeed.Channel = parsedChannel;
            return(true);
        }
Exemplo n.º 8
0
 private static XElement GetCardRoot(XDocument xDocument)
 {
     return(xDocument?
            .Element("DB")?
            .Element("Geraeteeintraege")?
            .Element("Geraete")?
            .Element("ECELMKartenEintraege"));
 }
Exemplo n.º 9
0
        private async Task UpdateTotalPostCount()
        {
            XDocument document = await GetApiPageAsync(1);

            int totalPosts;

            int.TryParse(document?.Element("tumblr").Element("posts").Attribute("total").Value, out totalPosts);
            blog.Posts = totalPosts;
        }
Exemplo n.º 10
0
        private async Task <ulong> GetHighestPostId()
        {
            XDocument document = await GetApiPageAsync(1);

            ulong highestId;

            ulong.TryParse(document?.Element("tumblr").Element("posts").Element("post")?.Attribute("id").Value, out highestId);
            return(highestId);
        }
Exemplo n.º 11
0
        public static int GetProjectNumber(XDocument xDocument)
        {
            var idElement = xDocument?
                            .Element("DB")?
                            .Element("ProjektKopfdaten")?
                            .Element("Projekt")?
                            .Attribute("id");

            return(idElement != null ? (int)idElement : 0);
        }
Exemplo n.º 12
0
        private static List <XElement> LoadFileIncludes(XDocument projectXml)
        {
            var items = projectXml
                        ?.Element(XmlNamespace + "Project")
                        ?.Elements(XmlNamespace + "ItemGroup")
                        .ToList()

                        ?? new List <XElement>();

            return(items);
        }
        public void ThenItShouldWrapTheRequestInASoapPackage(ProviderQueryRequest request)
        {
            var serializer = new RequestSerializer();

            var actual = serializer.Serialize(request);

            XDocument doc = XDocument.Parse(actual);

            Assert.IsNotNull(doc.Root.Name == RequestSerializer.SoapNs + "Envelope");
            Assert.IsNotNull(doc?
                             .Element(RequestSerializer.SoapNs + "Envelope")?
                             .Element(RequestSerializer.SoapNs + "Header"));
            Assert.IsNotNull(doc?
                             .Element(RequestSerializer.SoapNs + "Envelope")?
                             .Element(RequestSerializer.SoapNs + "Body"));
            Assert.IsNotNull(doc?
                             .Element(RequestSerializer.SoapNs + "Envelope")?
                             .Element(RequestSerializer.SoapNs + "Body")?
                             .Element(RequestSerializer.UkrlpNs + "ProviderQueryRequest"));
        }
        private static bool TryReadFromPropertyGroup(XDocument document, string tag, XNamespace @namespace, out string value)
        {
            value = document
                    ?.Element(@namespace + "Project")
                    ?.Elements(@namespace + "PropertyGroup")
                    ?.Elements(@namespace + tag)
                    ?.FirstOrDefault()
                    ?.Value
                    ?? string.Empty;

            return(value != string.Empty);
        }
        private void ExtractPackageConfiguration(Project definition, XDocument nuspec, XNamespace ns)
        {
            var metadata = nuspec?.Element(ns + "package")?.Element(ns + "metadata");

            if (metadata != null)
            {
                var id = metadata.Element(ns + "id")?.Value;
                if (id == "$id$")
                {
                    id = null;
                }

                var version = metadata.Element(ns + "version")?.Value;
                if (version == "$version$")
                {
                    version = null;
                }

                definition.PackageConfiguration = new PackageConfiguration
                {
                    Id           = id,
                    Version      = version,
                    Authors      = ReadValueAndReplace(metadata, ns + "authors", definition.AssemblyAttributes),
                    Description  = ReadValueAndReplace(metadata, ns + "description", definition.AssemblyAttributes),
                    Copyright    = ReadValueAndReplace(metadata, ns + "copyright", definition.AssemblyAttributes),
                    LicenseUrl   = ReadValueAndReplace(metadata, ns + "licenseUrl", definition.AssemblyAttributes),
                    ProjectUrl   = ReadValueAndReplace(metadata, ns + "projectUrl", definition.AssemblyAttributes),
                    IconUrl      = ReadValueAndReplace(metadata, ns + "iconUrl", definition.AssemblyAttributes),
                    Tags         = ReadValueAndReplace(metadata, ns + "tags", definition.AssemblyAttributes),
                    ReleaseNotes = ReadValueAndReplace(metadata, ns + "releaseNotes", definition.AssemblyAttributes),
                    RequiresLicenseAcceptance = metadata.Element(ns + "requireLicenseAcceptance")?.Value != null?bool.Parse(metadata.Element(ns + "requireLicenseAcceptance")?.Value) : false
                };

                var dependencies = metadata.Element(ns + "dependencies")?.Elements(ns + "dependency");
                if (dependencies != null)
                {
                    foreach (var dependency in dependencies)
                    {
                        var packageId  = dependency.Attribute("id").Value;
                        var constraint = dependency.Attribute("version").Value;

                        var packageReference = definition.PackageReferences?.FirstOrDefault(x => x.Id.Equals(packageId, StringComparison.OrdinalIgnoreCase));
                        if (packageReference != null)
                        {
                            packageReference.Version = constraint;
                        }
                    }
                }
            }
        }
Exemplo n.º 16
0
        /// <summary>
        /// Обработва отговорите на ЕИСПП
        /// </summary>
        /// <returns></returns>
        private async Task ProcessReplies()
        {
            foreach (var item in eisppReplies)
            {
                try
                {
                    XDocument message       = XDocument.Parse(item);
                    string    correlationId = message?.Descendants("Property")
                                              .Where(e => e.Attribute("name")?.Value == "correlation_id")
                                              .Select(e => e.Attribute("value")?.Value)
                                              .FirstOrDefault();

                    XElement result    = message?.Element("EISPPMessage")?.Element("EISPPPAKET")?.Element("DATA")?.Element("RZT");
                    XElement exception = result?.Element("Exception");
                    XElement htmlCard  = result?.Element("KartaNPR");

                    if (correlationId != null)
                    {
                        string eisppNumber = result
                                             ?.Descendants()
                                             .Where(e => e.NodeType == System.Xml.XmlNodeType.Attribute)
                                             .Where(a => a.Name == "nprnmr")
                                             .Select(a => a.Value)
                                             .FirstOrDefault() ?? "";
                        await SaveResponse(correlationId, item, eisppNumber);

                        if (exception != null)
                        {
                            SetError(correlationId, exception.Value);
                        }
                        else if (htmlCard != null)
                        {
                            await SaveCard(correlationId, htmlCard.Value, eisppNumber);
                        }
                        else if (result != null)
                        {
                            SetOk(correlationId);
                        }
                        else
                        {
                            SetError(correlationId, "Липсва отговор от ЕИСПП!");
                        }
                    }
                }
                catch (Exception ex)
                {
                    logger.LogError(ex, "Error processing replies!");
                }
            }
        }
Exemplo n.º 17
0
 public static Config LoadConfig(string location, string key)
 {
     if (_configStore.ContainsKey(key))
     {
         return((Config)_configStore[key]);
     }
     else
     {
         XDocument xdoc   = XDocument.Load(location);
         var       config = new Config()
         {
             TimeToSell = int.Parse(xdoc?.Element("Settings")?.Element("TimeToSell")?.Value ?? "5")
         };
         return(config);
     }
 }
Exemplo n.º 18
0
 public PodcastInfo[] FindPodcasts(XDocument rss)
 {
     return(rss?.Element("rss")
            ?.Element("channel")
            ?.Elements("item")
            ?.Take(_podcastsLimit)
            ?.Select(item => {
         return new PodcastInfo {
             Title = item.Element("title").Value,
             Date = Utils.ParseDate(item.Element("pubDate").Value) ?? DateTime.UtcNow.Date,
             Url = item.Element("enclosure").Attribute("url").Value.Replace("http://", "https://"),
             Token = item.Element("guid").Value
         };
     })
            ?.ToArray() ?? new PodcastInfo[0]);
 }
Exemplo n.º 19
0
        private PackageConfiguration ExtractPackageConfiguration(
            XDocument nuspec, XNamespace ns
            )
        {
            var metadata = nuspec?.Element(ns + "package")?.Element(ns + "metadata");

            if (metadata == null)
            {
                return(null);
            }

            var id = metadata.Element(ns + "id")?.Value;

            if (id == "$id$")
            {
                id = null;
            }

            var version = metadata.Element(ns + "version")?.Value;

            if (version == "$version$")
            {
                version = null;
            }

            var dependencies = metadata.Element(ns + "dependencies")
                               ?.Elements(ns + "dependency")
                               .ToList();

            var packageConfig = new PackageConfiguration {
                Id           = id,
                Version      = version,
                Authors      = GetElement(metadata, ns + "authors"),
                Description  = GetElement(metadata, ns + "description"),
                Copyright    = GetElement(metadata, ns + "copyright"),
                LicenseUrl   = GetElement(metadata, ns + "licenseUrl"),
                ProjectUrl   = GetElement(metadata, ns + "projectUrl"),
                IconUrl      = GetElement(metadata, ns + "iconUrl"),
                Tags         = GetElement(metadata, ns + "tags"),
                ReleaseNotes = GetElement(metadata, ns + "releaseNotes"),
                RequiresLicenseAcceptance = metadata.Element(ns + "requireLicenseAcceptance")?.Value != null && bool.Parse(metadata.Element(ns + "requireLicenseAcceptance")?.Value),
                Dependencies = dependencies
            };

            return(packageConfig);
        }
Exemplo n.º 20
0
        public static XDocument SetXmlValue(XDocument document, string element, string value)
        {
            var xElements = document?.Element("body")?.Elements().Where(xEle => xEle.Name == element);

            if (xElements == null)
            {
                return(document);
            }
            {
                foreach (var xEle in xElements)
                {
                    xEle.Value = value;
                    document.Save(SettingHandler.SettingPath());
                }
            }
            return(document);
        }
Exemplo n.º 21
0
        public static string GrabXmlValue(XDocument document, string element)
        {
            var value     = "";
            var xElements = document?.Element("body")?.Elements().Where(xEle => xEle?.Name == element);

            if (xElements == null)
            {
                return(value);
            }
            {
                foreach (var xEle in xElements)
                {
                    value = xEle.Value;
                    return(value);
                }
            }
            return(value);
        }
Exemplo n.º 22
0
        public void NianTest()
        {
            if (File.Exists("NianTest.db"))
            {
                File.Delete("NianTest.db");
            }
            Assert.IsTrue(File.Exists("AccountData.xml"), "AccountData.xml Not Found");
            XDocument doc  = XDocument.Load("AccountData.xml");
            var       root = doc?.Element("AccountData")?.Element("NianTest");

            Assert.IsNotNull(root, "No NianTest Node");
            Assert.IsNotNull(root.Element("UserName"), "UserName not found");
            Assert.IsNotNull(root.Element("PassWord"), "PassWord Not Found");
            AutoResetEvent isFetched = new AutoResetEvent(false);

            //Init Database
            {
                var db   = new LiteDatabase("NianTest.db");
                var col  = db.GetCollection <NianData>();
                var data = new NianData();
                data.ListItems = new Dictionary <string, string>();
                data.Dreams    = new List <DreamInfo>();
                col.Insert(data);
            }

            var nian = new NianObserver.NianStalker()
            {
                Alias        = "NianTest",
                DiffDetected = (string a, string b, string c, string d) => {
                    isFetched.Set();
                },
                IsTest    = true,
                UserName  = root.Element("UserName").Value,
                PassWord  = root.Element("PassWord").Value,
                TargetUID = 777777 //普通的一个用户(明明有神id却不用念了xxxx)
            };

            nian.Start();
            if (!isFetched.WaitOne(10000))
            {
                Assert.Fail();
            }
        }
Exemplo n.º 23
0
        /// <summary>
        /// Retreive the project references from new csproj file format
        /// </summary>
        /// <param name="projectPath">The Project Path</param>
        /// <returns></returns>
        private IEnumerable <string> GetProjectReferencesFromNewProjectFile(string projectPath)
        {
            IEnumerable <string> references     = new List <string>();
            XDocument            projDefinition = XDocument.Load(projectPath);

            try
            {
                references = projDefinition
                             ?.Element("Project")
                             ?.Elements("ItemGroup")
                             ?.Elements("PackageReference")
                             ?.Select(refElem => (refElem.Attribute("Include") == null ? "" : refElem.Attribute("Include").Value) + "," +
                                      (refElem.Attribute("Version") == null ? "" : refElem.Attribute("Version").Value));
            }
            catch (System.Exception ex)
            {
                throw ex;
            }

            return(references);
        }
Exemplo n.º 24
0
        public void MailTest()
        {
            if (File.Exists("MailTest.db"))
            {
                File.Delete("MailTest.db");
            }
            if (File.Exists("MailTerminal.shortcut"))
            {
                File.Delete("MailTerminal.shortcut");
            }
            Assert.IsTrue(File.Exists("AccountData.xml"), "AccountData.xml Not Found");
            XDocument doc  = XDocument.Load("AccountData.xml");
            var       root = doc?.Element("AccountData")?.Element("MailTest");

            Assert.IsNotNull(root, "No MailTest Node");
            var mail = new OutputTerminal.MailTerminal()
            {
                MailHost   = root.Element("MailHost").Value,
                MailPort   = int.Parse(root.Element("MailPort").Value),
                MailUName  = root.Element("MailUName").Value,
                MailPWord  = root.Element("MailPWord").Value,
                MailSender = root.Element("MailSender").Value,
                MailTarget = root.Element("MailTarget").Value,
                MailSSL    = root.Element("MailSSL")?.Value == "true",
                Alias      = "MailTerminal",
                Interval   = 60000
            };
            var diffdb = new OutputTerminal.DiffDatabase()
            {
                Alias          = "MailTest",
                DatabaseSource = src => { mail.GetDatabase(src); }
            };

            diffdb.Start();
            diffdb.InputData("http://Saigetsu.moe", "测试", "测试", "MailTest");
            mail.Start();
            Thread.Sleep(5000);
            Assert.IsTrue(mail.IsWaitingForNextRound);
            Assert.IsTrue(mail.ServiceStatus);
        }
Exemplo n.º 25
0
        public static LocalizedAssembly FromXml(Assembly assembly, CultureInfo cultureInfo, XDocument?doc, Dictionary <string, string>?replacements /*new -> old*/)
        {
            Dictionary <string, XElement>?file = doc?.Element("Translations").Elements("Type")
                                                 .Select(x => KeyValuePair.Create(x.Attribute("Name").Value, x))
                                                 .Distinct(x => x.Key)
                                                 .ToDictionary();

            var result = new LocalizedAssembly
            {
                Assembly  = assembly,
                Culture   = cultureInfo,
                IsDefault = GetDefaultAssemblyCulture(assembly) == cultureInfo.Name
            };

            result.Types = (from t in assembly.GetTypes()
                            let opts = GetDescriptionOptions(t)
                                       where opts != DescriptionOptions.None
                                       let x = file?.TryGetC(replacements?.TryGetC(t.Name) ?? t.Name)
                                               select LocalizedType.ImportXml(t, opts, result, x))
                           .ToDictionary(lt => lt.Type);

            return(result);
        }
Exemplo n.º 26
0
        private void Game_UpdateFrame(object sender, FrameEventArgs e)
        {
            PreviousMouseState = MouseState;
            PreviousKeyboardState = KeyboardState;

            MouseState = OpenTK.Input.Mouse.GetState();
            KeyboardState = OpenTK.Input.Keyboard.GetState();

            PreviousMousePosition = MousePosition;

            #if GRAPHMAKER
            XDocument doc = new XDocument();
            doc.Add(new XElement("Waypoints"));
            if (MouseState.LeftButton == ButtonState.Pressed && PreviousMouseState.LeftButton == ButtonState.Released) {
            int x = Camera.X + MousePosition.X;
            int y = Camera.Y + MousePosition.Y;

            if (MouseState.LeftButton == ButtonState.Pressed && PreviousMouseState.LeftButton == ButtonState.Released && MousePosition.X > 40) {
               doc.Element("Waypoints").Add(new XElement("Waypoint", new XAttribute("X", x), new XAttribute("Y", y)));
               minID++;
               Minion markerMinion = new Minion(new List<Sprite>() { new Sprite(new List<string>() { "Images/BlueMinion.png" }), new Sprite(new List<string>() { "Images/BlueMinion0.png", "Images/BlueMinion1.png" }) }, minID);
                markerMinion.Pos.X = x;
                markerMinion.Pos.Y = y;
                _player1.AddMinion(markerMinion);
              // doc.Save("TestWaypoint.xml");
            XDocument doc = new XDocument();
            doc.Add(new XElement("Waypoints"));
            if (MouseState.LeftButton == ButtonState.Pressed && PreviousMouseState.LeftButton == ButtonState.Released) {
            }

            if (MouseState.RightButton == ButtonState.Pressed && PreviousMouseState.RightButton == ButtonState.Released && MousePosition.X > 40)
            {
                switch (rightClicks)
                {
                    case 0: clicks[0] = x;
                        clicks[1] = y;
                        break;

                    case 1:
                        clicks[2] = x;
                        clicks[3] = y;
                         minID++;
                         Minion markerMinion = new Minion(new List<Sprite>() { new Sprite(new List<string>() { "Images/square.png" }), new Sprite(new List<string>() { "Images/square.png", "Images/square.png" }) }, minID);
                         WaypointNode waypoint1 = graph.GetClosestWaypoint(clicks[0], clicks[1]);
                         WaypointNode waypoint2 = graph.GetClosestWaypoint(clicks[2], clicks[3]);
                         markerMinion.Pos.X = waypoint1.X + (waypoint2.X - waypoint1.X) / 2;
                         markerMinion.Pos.Y = waypoint1.Y + (waypoint2.Y - waypoint1.Y) / 2;
                _player1.AddMinion(markerMinion);
                graph.ConnectNodes(waypoint1, waypoint2);
                        Console.Write("Added neighbor");
                        break;
                }
                rightClicks++;
                rightClicks = rightClicks % 2;
                graph.WriteGraph("TestWaypointNeighbors.xml");
            }

            _scrollBar.Update(e.Time);
            #else

            _map.Update(e.Time);

            _ui.Update(e.Time);

            #endif
            }

            private void Mouse_Move(object sender, MouseMoveEventArgs e)
            {
            MousePosition = e.Position;
            }
            }
        }
Exemplo n.º 27
0
 private void AssertXDocument(XDocument document, int expectedNumber, string expectedText)
 {
     Assert.Equal(expectedNumber.ToString(), document?.Element("TestModel")?.Element("Number")?.Value);
     Assert.Equal(expectedText, document?.Element("TestModel")?.Element("Text")?.Value);
 }
Exemplo n.º 28
0
        private static Dictionary <string, string> ParsePackageVersions(XDocument packagesDocument, string repoName)
        {
            var props = new Dictionary <string, string>();
            IEnumerable <XElement> propGroups = packagesDocument?.Element("Project")?.Elements("PropertyGroup");

            if (propGroups != null)
            {
                foreach (XElement propGroup in propGroups)
                {
                    if (propGroup.Attribute("Condition") != null)
                    {
                        WriteWarning($"{repoName} Packages.prop has Conditional PropertyGroup, which is not supported");
                        continue;
                    }

                    foreach (XElement prop in propGroup.Elements())
                    {
                        if (prop.Attribute("Condition") != null)
                        {
                            WriteWarning(
                                $"{repoName} Packages.prop property {prop.Name.LocalName} has Conditional Property, which is not supported");
                            continue;
                        }

                        props[prop.Name.LocalName] = prop.Value;
                    }
                }
            }

            var versions = new Dictionary <string, string>();
            IEnumerable <XElement> packageReferences = packagesDocument?.Element("Project")
                                                       ?.Elements("ItemGroup")
                                                       ?.Elements("PackageReference");

            if (packageReferences == null)
            {
                WriteError($"No PackageReferences found in {repoName} Packages.props");
            }
            else
            {
                foreach (XElement packageRef in packageReferences)
                {
                    string name    = packageRef.Attribute("Update")?.Value;
                    string version = packageRef.Attribute("Version")?.Value;

                    if (string.IsNullOrEmpty(name))
                    {
                        WriteWarning($"PackageReference with no 'Update' found in Packages.props for repo {repoName}");
                        continue;
                    }

                    if (string.IsNullOrEmpty(version))
                    {
                        WriteWarning(
                            $"PackageReference with no 'Version' for Package '{name}' found in Packages.props for repo {repoName}");
                        continue;
                    }

                    version = Regex.Replace(version,
                                            @"\$\(([A-Za-z0-9_]*)\)",
                                            m => props.GetValueOrDefault(m.Groups[1].Value, m.Groups[0].Value));

                    versions.Add(name, version);
                }
            }

            return(versions);
        }
Exemplo n.º 29
0
        public static bool TryParseRss10Feed(XDocument document, out Rss10Feed parsedFeed, ExtensionManifestDirectory extensionManifestDirectory = null)
        {
            parsedFeed = default;

            var rdfElement = document?.Element(_rdf + "RDF");

            if (rdfElement == null)
            {
                return(false);
            }

            var        rssNamespace = rdfElement.Attribute("xmlns")?.Value;
            XNamespace rss          = null;

            foreach (var ns in Rss10Constants.RecognizedNamespaces)
            {
                rss = ns;
                if (rssNamespace == ns.NamespaceName)
                {
                    break;
                }
            }

            if (rss == null)
            {
                return(false);
            }

            if (extensionManifestDirectory == null)
            {
                extensionManifestDirectory = ExtensionManifestDirectory.DefaultForRss;
            }

            if (!TryParseRss10Channel(rdfElement.Element(rss + "channel"), rss, extensionManifestDirectory, out var parsedChannel))
            {
                return(false);
            }

            if (TryParseRss10Image(rdfElement.Element(rss + "image"), rss, extensionManifestDirectory, out var parsedImage))
            {
                parsedChannel.Image = parsedImage;
            }

            if (TryParseRss10TextInput(rdfElement.Element(rss + "textinput"), rss, extensionManifestDirectory, out var parsedTextInput))
            {
                parsedChannel.TextInput = parsedTextInput;
            }

            // items
            foreach (var itemElement in rdfElement.Elements(rss + "item"))
            {
                if (TryParseRss10Item(itemElement, rss, extensionManifestDirectory, out var parsedItem))
                {
                    parsedChannel.Items.Add(parsedItem);
                }
            }

            parsedFeed         = new Rss10Feed();
            parsedFeed.Channel = parsedChannel;
            return(true);
        }
Exemplo n.º 30
0
        public static bool TryParseAtom10Feed(XDocument document, out Atom10Feed parsedFeed, ExtensionManifestDirectory extensionManifestDirectory = null)
        {
            parsedFeed = default;

            XElement   feedElement = null;
            XNamespace atom        = null;

            foreach (var ns in Atom10Constants.RecognizedNamespaces)
            {
                atom        = ns;
                feedElement = document?.Element(atom + "feed");
                if (feedElement != null)
                {
                    break;
                }
            }

            if (feedElement == null)
            {
                return(false);
            }

            if (extensionManifestDirectory == null)
            {
                extensionManifestDirectory = ExtensionManifestDirectory.DefaultForAtom;
            }

            parsedFeed = new Atom10Feed();

            parsedFeed.Lang = feedElement.Attribute(_xml + "lang")?.Value;
            parsedFeed.Base = feedElement.Attribute(_xml + "base")?.Value;

            parsedFeed.Id = feedElement.Element(atom + "id")?.Value.Trim();

            if (TryParseAtom10Text(feedElement.Element(atom + "title"), out var parsedTitle))
            {
                parsedFeed.Title = parsedTitle;
            }

            if (TryParseAtom10Timestamp(feedElement.Element(atom + "updated"), out var parsedUpdated))
            {
                parsedFeed.Updated = parsedUpdated;
            }

            foreach (var authorElement in feedElement.Elements(atom + "author"))
            {
                if (TryParseAtom10Person(authorElement, atom, out var parsedPerson))
                {
                    parsedFeed.Authors.Add(parsedPerson);
                }
            }

            foreach (var linkElement in feedElement.Elements(atom + "link"))
            {
                if (TryParseAtom10Link(linkElement, out var parsedLink))
                {
                    parsedFeed.Links.Add(parsedLink);
                }
            }

            foreach (var categoryElement in feedElement.Elements(atom + "category"))
            {
                if (TryParseAtom10Category(categoryElement, out var parsedCategory))
                {
                    parsedFeed.Categories.Add(parsedCategory);
                }
            }

            foreach (var contributorElement in feedElement.Elements(atom + "contributor"))
            {
                if (TryParseAtom10Person(contributorElement, atom, out var parsedPerson))
                {
                    parsedFeed.Contributors.Add(parsedPerson);
                }
            }

            if (TryParseAtom10Generator(feedElement.Element(atom + "generator"), out var parsedGenerator))
            {
                parsedFeed.Generator = parsedGenerator;
            }

            parsedFeed.Icon = feedElement.Element(atom + "icon")?.Value.Trim();
            parsedFeed.Logo = feedElement.Element(atom + "logo")?.Value.Trim();

            if (TryParseAtom10Text(feedElement.Element(atom + "rights"), out var parsedRights))
            {
                parsedFeed.Rights = parsedRights;
            }

            if (TryParseAtom10Text(feedElement.Element(atom + "subtitle"), out var parsedSubtitle))
            {
                parsedFeed.Subtitle = parsedSubtitle;
            }

            // entries
            foreach (var entryElement in feedElement.Elements(atom + "entry"))
            {
                if (TryParseAtom10Entry(entryElement, atom, extensionManifestDirectory, out var parsedEntry))
                {
                    parsedFeed.Entries.Add(parsedEntry);
                }
            }

            // extensions
            ExtensibleEntityParser.ParseXElementExtensions(feedElement, extensionManifestDirectory, parsedFeed);

            return(true);
        }
Exemplo n.º 31
0
        public IEnumerable <TootSpan> Parse(MastodonStatus status)
        {
            var content     = status.Content;
            var encoding    = Encoding.UTF8;
            var parsedSpans = new List <TootSpan>();

            // なんか一応 div で囲ってみてる(今のところ <p></p> で囲まれてるtootしかみたことないけど)
            using (var stream = new MemoryStream(encoding.GetBytes("<div>" + content.Replace("<br>", "<br/>") + "</div>")))
                using (var reader = new SgmlReader(stream))
                {
                    XDocument doc = XDocument.Load(reader);

                    //Console.WriteLine("start----");
                    //Console.WriteLine("raw--");
                    //Console.WriteLine(content);
                    //Console.WriteLine("--raw");

                    // 最初に見つかった XText の Node の親の Node群を列挙する → いきなり @amay とかで始まるとだめだー
                    //var firstTextNode = doc.DescendantNodes().FirstOrDefault(node => node is XText);
                    //var contentRoot = firstTextNode?.Parent?.Nodes()

                    // しょうがないので決め打ち;(SgmlReader にしたら勝手に <html></html> が付いた)
                    var contentRoot = doc?.Element("html")?.Element("div")?.Element("p") ?? null;
                    foreach (var node in contentRoot?.Nodes() ?? new XNode[0])
                    {
                        if (node.NodeType == XmlNodeType.Text)
                        {
                            var xText = node as XText;
                            parsedSpans.Add(TootSpan.MakeText(xText.Value));
                            //Console.WriteLine($"text - {xText.Value}");
                        }
                        else if (node.NodeType == XmlNodeType.Element)
                        {
                            var element = node as XElement;
                            switch (element.Name.LocalName.ToLower())
                            {
                            case "a":
                            {
                                var span = ParseLink(element, status.MediaAttachments, status.Tags);
                                parsedSpans.Add(span);
                                break;
                            }

                            case "br":
                            {
                                parsedSpans.Add(TootSpan.MakeLineBreak());
                                break;
                            }

                            case "span":
                            {
                                // なんか @amay みたいなメンションは span になるらしいが判別できないのでただの Text とする
                                parsedSpans.Add(TootSpan.MakeText(element.Value));
                                break;
                            }

                            default:
                            {
                                //Console.WriteLine("Unknown Element: [" + element.Name + "]" + element.Value);
                                throw new NotSupportedException($"Unknown Element: [{element.Name}]{element.Value} - {status.Id}");
                                break;
                            }
                            }
                        }
                        else
                        {
                            // Unknown XNode
                            //Console.WriteLine($"Unknown Node: {node}");
                            throw new NotSupportedException($"Unknown Node: {node} - {status.Id}");
                        }
                    }
                    //Console.WriteLine("----end");
                }

            return(parsedSpans);
        }