BlogEngine.Core.Web.HttpHandlers.Foaf.WriteFoaf C# (CSharp) Method

WriteFoaf() private method

Writes the FOAF.
private WriteFoaf ( HttpContext context, string name ) : void
context System.Web.HttpContext /// The context. ///
name string /// The name of the FOAF. ///
return void
        private void WriteFoaf(HttpContext context, string name)
        {
            // begin FOAF
            var writer = GetWriter(context.Response.OutputStream);

            // write DOCUMENT
            writer.WriteStartElement("foaf", "PersonalProfileDocument", null);
            writer.WriteAttributeString("rdf", "about", null, string.Empty);
            writer.WriteStartElement("foaf", "maker", null);
            writer.WriteAttributeString("rdf", "resource", null, "#me");
            writer.WriteEndElement(); // foaf:maker
            writer.WriteStartElement("foaf", "primaryTopic", null);
            writer.WriteAttributeString("rdf", "resource", null, "#me");
            writer.WriteEndElement(); // foaf:primaryTopic
            writer.WriteEndElement(); // foaf:PersonalProfileDocument

            // get main person's data
            var ap = AuthorProfile.GetProfile(name);

            if (!ap.Private)
            {
                // main author object
                var me = new FoafPerson("#me", ap) { Friends = new List<FoafPerson>() };

                // TODO: this really should be it's own data store

                // assume all other authors are friends
                foreach (var user in
                    Membership.GetAllUsers().Cast<MembershipUser>().Where(
                        user => !user.UserName.Equals(name, StringComparison.OrdinalIgnoreCase)))
                {
                    var friend = AuthorProfile.GetProfile(user.UserName);
                    if (friend == null)
                    {
                        continue;
                    }

                    me.Friends.Add(new FoafPerson("#" + user.UserName, friend));
                }

                // assume blog roll = friends
                foreach (var br in BlogRollItem.BlogRolls)
                {
                    var title = br.Title;
                    var url = br.BlogUrl.ToString();

                    var foaf = new FoafPerson(title) { Name = title, Blog = url };

                    if (Blog.CurrentInstance.Cache[string.Format("foaf:{0}", title)] == null)
                    {
                        var docs = Utils.FindSemanticDocuments(new Uri(url), "foaf");
                        if (docs.Count > 0)
                        {
                            foreach (var key in docs.Keys)
                            {
                                Blog.CurrentInstance.Cache.Insert(string.Format("foaf:{0}", title), key.ToString());
                                break;
                            }
                        }
                        else
                        {
                            Blog.CurrentInstance.Cache.Insert(string.Format("foaf:{0}", title), "0");
                        }
                    }

                    var seeAlso = (string)Blog.CurrentInstance.Cache[string.Format("foaf:{0}", title)];
                    if (seeAlso != null && seeAlso.Contains("://"))
                    {
                        foaf.Rdf = seeAlso;
                    }

                    me.Friends.Add(foaf);
                }

                // begin writing FOAF Persons
                this.WriteFoafPerson(writer, me);
            }

            CloseWriter(writer);
        }