Ejemplo n.º 1
0
        /// <summary>
        /// Loads a Mod from a Manifest
        /// </summary>
        /// <param name="uri">the URI where the Manifest lives</param>
        /// <returns>a Mod</returns>
        public static Mod LoadFromUrl(string uri)
        {
            Mod ret = new Mod();

            XDocument manifest = XDocument.Load(uri);

            if (manifest.Root.Name != Namespace.GetName("manifest"))
            {
                throw new Exception("That's not a McModManager manifest");
            }

            ret.Name = manifest.Root.Element(Namespace.GetName("name")).Value;
            ret.Id   = manifest.Root.Element(Namespace.GetName("id"));

            if (ret.Id.Version != null)
            {
                throw new Exception("Manifest IDs cannot include versions");
            }

            if (manifest.Root.Element(Namespace.GetName("url")) != null)
            {
                ret.Url = manifest.Root.Element(Namespace.GetName("url")).Value;
            }

            using (var dbConn = Database.GetConnection())
                using (var tx = dbConn.BeginTransaction())
                {
                    ret.Save(dbConn, tx);
                    foreach (var ver in manifest.Root.Element(Namespace.GetName("versions")).Elements(Namespace.GetName("version")))
                    {
                        var v = ModVersion.LoadVersion(ret, ver, dbConn, tx);
                        v.Save(dbConn, tx);
                    }

                    tx.Commit();
                }

            return(ret);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Loads a Mod from a Manifest
        /// </summary>
        /// <param name="uri">the URI where the Manifest lives</param>
        /// <returns>a Mod</returns>
        public static Mod LoadFromUrl(string uri)
        {
            Mod ret = new Mod();

            XDocument manifest = XDocument.Load(uri);

            if (manifest.Root.Name != Namespace.GetName("manifest"))
            {
                throw new Exception("That's not a McModManager manifest");
            }

            ret.Name = manifest.Root.Element(Namespace.GetName("name")).Value;
            ret.Id = manifest.Root.Element(Namespace.GetName("id"));

            if (ret.Id.Version != null)
            {
                throw new Exception("Manifest IDs cannot include versions");
            }

            if (manifest.Root.Element(Namespace.GetName("url")) != null)
            {
                ret.Url = manifest.Root.Element(Namespace.GetName("url")).Value;
            }

            using (var dbConn = Database.GetConnection())
            using (var tx = dbConn.BeginTransaction())
            {
                ret.Save(dbConn, tx);
                foreach (var ver in manifest.Root.Element(Namespace.GetName("versions")).Elements(Namespace.GetName("version")))
                {
                    var v = ModVersion.LoadVersion(ret, ver, dbConn, tx);
                    v.Save(dbConn, tx);
                }

                tx.Commit();
            }

            return ret;
        }