예제 #1
0
		public void Init()
		{
			entry = new AtomEntry();
			testUri = new Uri("http://www.w3.org");
			entriespath = @"..\..\tests\entries\";
			files = Directory.GetFiles(entriespath);
		}
예제 #2
0
		public void TestMultipleMultipartsContent()
		{
            AtomEntry entry = new AtomEntry(new Uri("http://purl.org/atom/ns#"));

            AtomContent content = new AtomContent(new Uri("http://purl.org/atom/ns#"));
			content.Content = "sample text";
			content.Mode = Mode.Xml;
			content.Type = MediaType.MultipartAlternative;
			content.XmlLang = Language.en_US;

			entry.Contents.Add(content);

            content = new AtomContent(new Uri("http://purl.org/atom/ns#"));
			content.Content = "sample text";
			content.Mode = Mode.Xml;
			content.Type = MediaType.MultipartAlternative;
			content.XmlLang = Language.en_US;
			entry.Contents.Add(content);
		}
예제 #3
0
		public void TestNameIsNotEmail()
		{
			foreach(string file in files)
			{
				entry = AtomEntry.Load(file);
				if(entry.Author != null)
					Assert.IsFalse(AU.Utils.IsEmail(entry.Author.Name));
				foreach(AtomPersonConstruct contributor in entry.Contributors)
					Assert.IsFalse(AU.Utils.IsEmail(contributor.Name));
			}
		}
예제 #4
0
		public void TestXmlFragment()
		{
			string filename = "test";
			for(int i = 0; i < files.Length; i++)
			{
				StreamReader reader = new StreamReader(files[i]);
				string content = reader.ReadToEnd();
				entry = AtomEntry.LoadXml(content);
				Assert.IsNotNull(entry);
				entry.Save(filename);
				File.Delete(filename);
			}
		}
예제 #5
0
		public void TestXmlReaderXmlWriter()
		{
			for(int i = 0; i < files.Length; i++)
			{
				XmlTextReader reader = new XmlTextReader(files[i]);
				entry = AtomEntry.Load(reader);
				Assert.IsNotNull(entry);
				MemoryStream stream = new MemoryStream();
				XmlTextWriter writer = new XmlTextWriter(stream,
					System.Text.Encoding.Default);
				entry.Save(writer);
				stream.Close();
			}
		}
예제 #6
0
		public void TestTextReaderWriter()
		{
			for(int i = 0; i < files.Length; i++)
			{
				StreamReader reader = new StreamReader(files[i]);
				entry = AtomEntry.Load(reader);
				Assert.IsNotNull(entry);
				MemoryStream stream = new MemoryStream();
				StreamWriter w = new StreamWriter(stream);
				entry.Save(w);
				stream.Close();
			}
		}
예제 #7
0
		public void TestStream()
		{
			for(int i = 0; i < files.Length; i++)
			{
				FileStream stream = File.OpenRead(files[i]);
				entry = AtomEntry.Load(stream);
				Assert.IsNotNull(entry);
				MemoryStream memStream = new MemoryStream();
				entry.Save(memStream);
				stream.Close();
			}
		}
예제 #8
0
		public void TestInvalidEntries()
		{
			string filename = "test";
			entriespath = @"..\..\tests\invalidentries\";
			files = Directory.GetFiles(entriespath);
			for(int i = 0; i < files.Length; i++)
			{
				entry = AtomEntry.Load(files[i]);
				Assert.IsNotNull(entry);
				entry.Save(filename);
				File.Delete(filename);
			}
		}
예제 #9
0
파일: AtomWriter.cs 프로젝트: dblock/sncore
		internal void Write(AtomEntry entry)
		{
			this.WriteEntry(entry);
		}
예제 #10
0
		public void TestUri()
		{
			for(int i = 0; i < files.Length; i++)
			{
				Console.WriteLine("{0}: {1}", i, files[i]);
				entry = AtomEntry.Load(files[i]);
				Assert.IsNotNull(entry.Uri);
			}
		}
예제 #11
0
        internal static AtomEntry Parse(XPathNavigator navigator)
        {
            AtomEntry entry = new AtomEntry();

            XPathNavigator    nav  = navigator.Clone();
            XPathNodeIterator iter = nav.SelectDescendants(XPathNodeType.All, true);

            while (iter.MoveNext())
            {
                string name = iter.Current.Name.ToLower();
                int    idx  = name.IndexOf(":");
                if (idx != -1)
                {
                    string prefix;
                    prefix = name.Split(new char[] { ':' }, 2)[0];
                    if (prefix == "atom")
                    {
                        name = name.Split(new char[] { ':' }, 2)[1];
                    }
                }

                switch (name)
                {
                case "entry":
                    try
                    {
                        entry.Uri     = FindAlternateUri(iter.Current);
                        entry.XmlLang = Utils.Utils.ParseLanguage(iter.Current.XmlLang);
                    }
                    catch {}
                    break;

                case "title":
                    AtomContentConstruct content = AtomContentConstruct.Parse(iter.Current);
                    entry.Title = content;
                    break;

                case "link":
                    entry.Links.Add(AtomLink.Parse(iter.Current));
                    break;

                case "author":
                    entry.Author = AtomPersonConstruct.Parse(iter.Current);
                    break;

                case "contributor":
                    entry.Contributors.Add(AtomPersonConstruct.Parse(iter.Current));
                    break;

                case "id":
                    entry.Id = new Uri(iter.Current.Value);
                    break;

                case "modified":
                    entry.Modified = AtomDateConstruct.Parse(iter.Current);
                    break;

                case "issued":
                    entry.Issued = AtomDateConstruct.Parse(iter.Current);
                    break;

                case "created":
                    entry.Created = AtomDateConstruct.Parse(iter.Current);
                    break;

                case "summary":
                    entry.Summary = AtomContentConstruct.Parse(iter.Current);
                    break;

                case "content":
                    entry.Contents.Add(AtomContent.Parse(iter.Current));
                    break;

                case "dc:title":
                case "dc:creator":
                case "dc:subject":
                case "dc:description":
                case "dc:publisher":
                case "dc:contributor":
                case "dc:date":
                case "dc:type":
                case "dc:format":
                case "dc:identifier":
                case "dc:source":
                case "dc:language":
                case "dc:relation":
                case "dc:coverage":
                case "dc:rights":
                    entry.AdditionalElements.Add(DcElement.Parse(iter.Current));
                    break;
                }
            }

            return(entry);
        }
예제 #12
0
		public void TestSaveToFile()
		{
			string filename = "test";
			for(int i = 0; i < files.Length; i++)
			{
                entry = AtomEntry.Load(files[i], new Uri("http://purl.org/atom/ns#"));
				Assert.IsNotNull(entry);
				entry.Save(filename);
				File.Delete(filename);
			}
		}
예제 #13
0
		public void TestUri()
		{
			for(int i = 0; i < files.Length; i++)
			{
				Console.WriteLine("{0}: {1}", i, files[i]);
                entry = AtomEntry.Load(files[i], new Uri("http://purl.org/atom/ns#"));
				Assert.IsNotNull(entry.Uri);
			}
		}
예제 #14
0
        internal static AtomFeed Parse(XPathNavigator navigator)
        {
            AtomFeed feed = new AtomFeed();

            XPathNavigator    nav  = navigator.Clone();
            XPathNodeIterator iter = nav.SelectChildren(XPathNodeType.All);

            do
            {
                string name = iter.Current.Name.ToLower();
                int    idx  = name.IndexOf(":");
                if (idx != -1)
                {
                    name = name.Split(new char[] { ':' }, 2)[1];
                }

                switch (name)
                {
                case "feed":
                {
                    try
                    {
                        XPathNavigatorReader reader = new XPathNavigatorReader(nav);
                        string baseUri = reader.GetAttribute("base", XmlNamespaces.Xml);
                        if (baseUri != null && baseUri.Length > 0)
                        {
                            feed.XmlBase = new Uri(baseUri);
                        }
                    }
                    catch {}

                    try
                    {
                        feed.Uri = FindAlternateUri(iter.Current);
                    }
                    catch {}

                    try
                    {
                        feed.XmlLang = Utils.Utils.ParseLanguage(iter.Current.XmlLang);
                    }
                    catch {}

                    XPathNodeIterator attrIterator = nav.Select("@*");
                    while (attrIterator.MoveNext())
                    {
                        if (attrIterator.Current.Name.ToLower() == "version")
                        {
                            if (attrIterator.Current.Value != DefaultValues.AtomVersion)
                            {
                                string msg = String.Format("Atom {0} version is not supported!", attrIterator.Current.Value);
                                throw new InvalidOperationException(msg);
                            }
                        }
                    }
                    break;
                }

                case "title":
                    AtomContentConstruct content = AtomContentConstruct.Parse(iter.Current);
                    feed.Title = content;
                    break;

                case "link":
                    feed.Links.Add(AtomLink.Parse(iter.Current));
                    break;

                case "author":
                    feed.Author = AtomPersonConstruct.Parse(iter.Current);
                    break;

                case "contributor":
                    feed.Contributors.Add(AtomPersonConstruct.Parse(iter.Current));
                    break;

                case "tagline":
                    feed.Tagline = AtomContentConstruct.Parse(iter.Current);
                    break;

                case "id":
                    feed.Id = new Uri(iter.Current.Value);
                    break;

                case "copyright":
                    feed.Copyright = AtomContentConstruct.Parse(iter.Current);
                    break;

                case "info":
                    feed.Info = AtomContentConstruct.Parse(iter.Current);
                    break;

                case "modified":
                    feed.Modified = AtomDateConstruct.Parse(iter.Current);
                    break;

                case "entry":
                    feed.Entries.Add(AtomEntry.Parse(iter.Current));
                    break;
                }
            } while(iter.MoveNext());

            return(feed);
        }
예제 #15
0
		public void TestSaveToFile()
		{
			string filename = "test";
			for(int i = 0; i < files.Length; i++)
			{
				entry = AtomEntry.Load(files[i]);
				Assert.IsNotNull(entry);
				entry.Save(filename);
				File.Delete(filename);
			}
		}
예제 #16
0
		internal static AtomEntry Parse(XPathNavigator navigator)
		{
			AtomEntry entry = new AtomEntry();

			XPathNavigator nav = navigator.Clone();
			XPathNodeIterator iter = nav.SelectDescendants(XPathNodeType.All, true);
			
			while(iter.MoveNext())
			{
				string name = iter.Current.Name.ToLower();
				int idx = name.IndexOf(":");
				if(idx != -1)
				{
					string prefix;
					prefix = name.Split(new char[] {':'}, 2)[0];
					if(prefix == "atom")
						name = name.Split(new char[] {':'}, 2)[1];
				}

				switch(name)
				{
					case "entry":
						try
						{
							entry.Uri = FindAlternateUri(iter.Current);
							entry.XmlLang = Utils.Utils.ParseLanguage(iter.Current.XmlLang);
						}
						catch {}
						break;

					case "title":
						AtomContentConstruct content = AtomContentConstruct.Parse(iter.Current);
						entry.Title = content;
						break;

					case "link":
						entry.Links.Add(AtomLink.Parse(iter.Current));
						break;

					case "author":
						entry.Author = AtomPersonConstruct.Parse(iter.Current);
						break;

					case "contributor":
						entry.Contributors.Add(AtomPersonConstruct.Parse(iter.Current));
						break;

					case "id":
						entry.Id = new Uri(iter.Current.Value);
						break;					

					case "modified":
						entry.Modified = AtomDateConstruct.Parse(iter.Current);
						break;

					case "issued":
						entry.Issued = AtomDateConstruct.Parse(iter.Current);
						break;

					case "created":
						entry.Created = AtomDateConstruct.Parse(iter.Current);
						break;

					case "summary":
						entry.Summary = AtomContentConstruct.Parse(iter.Current);
						break;

					case "content":
						entry.Contents.Add(AtomContent.Parse(iter.Current));
						break;

					case "dc:title":
					case "dc:creator":
					case "dc:subject":
					case "dc:description":
					case "dc:publisher":
					case "dc:contributor":
					case "dc:date":
					case "dc:type":
					case "dc:format":
					case "dc:identifier":
					case "dc:source":
					case "dc:language":
					case "dc:relation":
					case "dc:coverage":
					case "dc:rights":
						entry.AdditionalElements.Add(DcElement.Parse(iter.Current));
						break;

				}
			}

			return entry;
		}
예제 #17
0
파일: AtomWriter.cs 프로젝트: dblock/sncore
		/// <summary>
		/// Writes the Atom entry body.
		/// </summary>
		private void WriteEntry(AtomEntry entry)
		{
			if(this._writer == null)
				throw new InvalidOperationException("AtomWriter has been closed, and can not be written to.");

			if(entry == null)
				throw new RequiredElementNotFoundException("AtomEntry cannot be null.");

			this._writer.WriteRaw(entry.ToString());

			this._writer.Flush();
			this._writer.Close();
			this._writer = null;
		}