private void LoadCrossPostServerInfo()
        {
            string fullPath = SiteConfig.GetConfigPathFromCurrentContext() + "CrossPostServerInfo.xml";

            if (File.Exists(fullPath))
            {
                FileStream fileStream = newtelligence.DasBlog.Util.FileUtils.OpenForRead(fullPath);

                if (fileStream != null)
                {
                    try
                    {
                        XmlSerializer ser    = new XmlSerializer(typeof(CrossPostServerInfo[]));
                        StreamReader  reader = new StreamReader(fileStream);
                        crossPostServerInfo = (CrossPostServerInfo[])ser.Deserialize(reader);
                    }
                    catch (Exception e)
                    {
                        ErrorTrace.Trace(System.Diagnostics.TraceLevel.Error, e);
                    }
                    finally
                    {
                        fileStream.Close();
                    }
                }
            }
            else
            {
                CrossPostServerInfo[] crossPostServerInfo = new CrossPostServerInfo[1];
                CrossPostServerInfo   c1 = new CrossPostServerInfo();
                c1.Name                = "DasBlog";
                c1.Endpoint            = "blogger.aspx";
                c1.Port                = 80;
                c1.Service             = 1;
                crossPostServerInfo[0] = c1;
            }
        }
        private void crosspostSitesGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        {
            if (e.CommandName == "AddItem")
            {
                CrosspostSite newSite = new CrosspostSite();
                newSite.ProfileName = "New Profile";
                newSite.Port        = 80;
                // luke@jurasource 24-MAR-04
                // init all blog names
                newSite.AllBlogNames = new string[] { "" };
                crosspostSites.Insert(0, newSite);
                crosspostSitesGrid.CurrentPageIndex = 0;
                crosspostSitesGrid.EditItemIndex    = 0;

                BindGrid();
            }
            else if (e.CommandName == "autoFill")
            {
                DropDownList dropDownList   = (DropDownList)e.Item.FindControl("blogSoftware");
                TextBox      textHostName   = (TextBox)e.Item.FindControl("textHostName");
                TextBox      textEndpoint   = (TextBox)e.Item.FindControl("textEndpoint");
                TextBox      textBoxBlogURL = (TextBox)e.Item.FindControl("textBoxBlogURL");
                DropDownList dropDownApi    = (DropDownList)e.Item.FindControl("listApiType");

                string rawBlogUrl = textBoxBlogURL.Text;
                rawBlogUrl = rawBlogUrl.Replace("http://", "");
                string[] blogUrl = rawBlogUrl.Split('/');
                textHostName.Text = blogUrl[0];

                string endpoint = "";
                for (int index = 1; index < blogUrl.Length; index++)
                {
                    endpoint += "/" + blogUrl[index];
                }

                CrossPostServerInfo currentInfo = (CrossPostServerInfo)crossPostServerInfo.GetValue(dropDownList.SelectedIndex);

                if (endpoint.Length != 0 && endpoint.EndsWith("/") == false)
                {
                    endpoint += "/";
                }

                textEndpoint.Text         = endpoint + currentInfo.Endpoint;
                dropDownApi.SelectedIndex = currentInfo.Service;
            }
            else if (e.CommandName == "testConnection")
            {
                Label labelTestError;

                labelTestError      = ((Label)e.Item.FindControl("labelTestError"));
                labelTestError.Text = "";
                try
                {
                    TextBox textBlogName;
                    TextBox textPassword;

                    CrosspostSite site = crosspostSites[e.Item.DataSetIndex];
                    site.ProfileName = ((TextBox)e.Item.FindControl("textProfileName")).Text;
                    site.HostName    = ((TextBox)e.Item.FindControl("textHostName")).Text;
                    site.Port        = int.Parse(((TextBox)e.Item.FindControl("textPort")).Text);
                    site.Endpoint    = ((TextBox)e.Item.FindControl("textEndpoint")).Text;
                    site.Username    = ((TextBox)e.Item.FindControl("textUsername")).Text;
                    site.ApiType     = ((DropDownList)e.Item.FindControl("listApiType")).SelectedValue;
                    textPassword     = ((TextBox)e.Item.FindControl("textPassword"));
                    if (textPassword.Text.Length > 0)
                    {
                        site.Password = textPassword.Text;
                    }
                    textBlogName = ((TextBox)e.Item.FindControl("textBlogName"));


                    UriBuilder            uriBuilder = new UriBuilder("http", site.HostName, site.Port, site.Endpoint);
                    BloggerAPIClientProxy proxy      = new BloggerAPIClientProxy();
                    proxy.Url       = uriBuilder.ToString();
                    proxy.UserAgent = "newtelligence dasBlog/1.4";
                    bgBlogInfo[] blogInfos = proxy.blogger_getUsersBlogs("", site.Username, site.Password);
                    if (blogInfos.Length > 0)
                    {
                        // [email protected] 24-MAR-04
                        // refresh all the blog names for this crosspost site
                        string[] allBlogNames = new string[blogInfos.Length];

                        for (int blog = 0; blog < blogInfos.Length; blog++)
                        {
                            allBlogNames[blog] = blogInfos[blog].blogName;
                        }

                        site.AllBlogNames = allBlogNames;

                        // Default the crosspost blog to the first one
                        site.BlogName = textBlogName.Text = blogInfos[0].blogName;
                        site.BlogId   = blogInfos[0].blogid;
                    }

                    BindGrid();
                }
                catch (Exception exc)
                {
                    labelTestError.Text = exc.Message;
                }
                finally
                {
                }
            }
        }