using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.SessionState;
using System.Net;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Text;
public partial class SPSample : System.Web.UI.Page
{
string ownerHandle = "";
string domainAuthToken = "";
string strRoot = "";
NameTable nt = new NameTable();
XmlDocument xmld = new XmlDocument();
XmlNamespaceManager xmlnsm = null;
protected void Page_Load(object sender, EventArgs e)
{
// Paste Windows Live ID here.
ownerHandle = "user@hotmail.com";
// Paste in the domain authentication token.
domainAuthToken = "[domain authentication token]";
Session["OwnerHandle"] = ownerHandle;
Session["DomainAuthToken"] = domainAuthToken;
strRoot = "https://cumulus.services.live.com/" + ownerHandle + "/SpacesPhotos/";
lblRootUrl.Text = strRoot;
xmlnsm = new XmlNamespaceManager(nt);
xmlnsm.AddNamespace("D", "DAV:");
xmlnsm.AddNamespace("c", "http://storage.msn.com/DAV/");
}
protected void listAlbums()
{
string path = strRoot;
HttpWebRequest request = MakeRequest(path, "PROPFIND");
request.Headers.Add("Depth", "1");
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
xmld.LoadXml((new StreamReader(response.GetResponseStream()).ReadToEnd()).ToString());
response.Close();
}
catch (WebException ex)
{
//The parsing failed, display what happened.
lblError.Text = ex.Message;
}
catch (Exception ex)
{
//The parsing failed, display what happened.
lblError.Text = ex.Message;
}
photoAlbums.Items.Clear();
if (null != xmld)
{
XmlNodeList xmlnl = xmld.SelectNodes("/D:multistatus/D:response/D:propstat/D:prop", xmlnsm);
bool first = true;
foreach (XmlNode xmlnode in xmlnl)
{
if (first)
{
// Ignore first item
first = false;
continue;
}
XmlNode href = xmlnode.SelectSingleNode("D:href", xmlnsm);
XmlNode name = xmlnode.SelectSingleNode("D:displayname", xmlnsm);
photoAlbums.Items.Add(new ListItem(name.LastChild.Value, href.LastChild.Value));
}
}
if (0 != photoAlbums.Items.Count)
{
Session["PhotoAlbum"] = photoAlbums.Items[0].Value;
}
else
{
Session["PhotoAlbum"] = null;
}
}
protected void photoAlbums_SelectedIndexChanged(object sender, EventArgs e)
{
string path = photoAlbums.Items[photoAlbums.SelectedIndex].Value;
lblRootUrl.Text = path;
Session["PhotoAlbum"] = path;
HttpWebRequest request = MakeRequest(path, "PROPFIND");
request.Headers.Add("Depth", "1");
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
xmld.LoadXml((new StreamReader(response.GetResponseStream()).ReadToEnd()).ToString());
response.Close();
}
catch (WebException ex)
{
//The parsing failed, so handle the error, or at least display what happened.
lblError.Text = ex.Message;
}
catch (Exception ex)
{
//The parsing failed, so handle the error, or at least display what happened.
lblError.Text = ex.Message;
}
photos.Items.Clear();
if (null != xmld)
{
XmlNodeList xmlnl = xmld.SelectNodes("/D:multistatus/D:response/D:propstat/D:prop", xmlnsm);
bool first = true;
foreach (XmlNode xmlnode in xmlnl)
{
if (first)
{
// Ignore first item
first = false;
continue;
}
XmlNode href = xmlnode.SelectSingleNode("D:href", xmlnsm);
XmlNode name = xmlnode.SelectSingleNode("D:displayname", xmlnsm);
photos.Items.Add(new ListItem(name.LastChild.Value, href.LastChild.Value));
}
}
}
protected void photos_SelectedIndexChanged(object sender, EventArgs e)
{
string path = photos.Items[photos.SelectedIndex].Value;
lblRootUrl.Text = path;
Image1.ImageUrl = "./LoadImageHandler.ashx?" + "url=" + photos.Items[photos.SelectedIndex].Value + "&oh=" + ownerHandle;
Image1.Visible = true;
}
protected void btnListAll_Click(object sender, EventArgs e)
{
listAlbums();
}
private HttpWebRequest MakeRequest(string reqPath, string method)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(reqPath);
request.UserAgent = "Microsoft Windows Live Photo Demo";
request.Method = method;
request.Headers.Add("Authorization", "DomainAuthToken at=\"" + domainAuthToken + "\"");
return request;
}
}