I am trying to find the balance of the MSFT translator from the azure marketplace b looking at the uri
https://api.datamarket.azure.com/Services/My/DatasetsSo a code snippet is :
Uri targetUri = new Uri("https://api.datamarket.azure.com/Services/My/Datasets");.....
NetworkCredential myCredentials = new NetworkCredential(myUserName, myAzureKey);
WebClient myWebClient = new WebClient();
myWebClient.Credentials = myCredentials;
myWebClient.BaseAddress = myUrl;
string myResonse = myWebClient.DownloadString(targetUri);
XmlDocument myXmlDoc = new XmlDocument();
myXmlDoc.LoadXml(myResonse);
// Set up namespace manager for XPath
XmlNamespaceManager myXmlNamespaceManager = new XmlNamespaceManager(myXmlDoc.NameTable);
myXmlNamespaceManager.AddNamespace("base", "https://api.datamarket.azure.com/Services.svc/My/Datasets");
myXmlNamespaceManager.AddNamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices");
myXmlNamespaceManager.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
myXmlNamespaceManager.AddNamespace("", "http://www.w3.org/2005/Atom");
XmlNode myNode = myXmlDoc.LastChild;
XmlNodeList myXmlNodeList = myNode.SelectNodes("entry/content/m:properties", myXmlNamespaceManager);
But the nodelist is empty so I cannot get to the the d:ResourceBalance atribute in the list of data services subscribed too.
Has anyone suggestions as to how I can walk the DOM to get to this entry - or what Im doing wrong ?
Cheers
Peter
peterPosted Apr 11, 2012, 4:44 AM
Finally managed to figure it out.
If anyone has a more elegant solution please post it !
Anyway heres the code for people who are interested:
public static int countRemaining(string myUserName, string myAzureKey, string myAzureBalanceUrl)
{
string myNumber = string.Empty;
int myReturn = 0;
StreamReader StreamHandler;
XmlDocument myXmlDoc = new XmlDocument();
bool myTranslatorFlag = false;
Uri targetUri = new Uri(myAzureBalanceUrl);
NetworkCredential myCredentials = new NetworkCredential(myUserName, myAzureKey);
try
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(targetUri);
myHttpWebRequest.Credentials = myCredentials;
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
if (myHttpWebRequest.HaveResponse)
{
if (myHttpWebResponse.StatusCode == HttpStatusCode.OK)
{
StreamHandler = new System.IO.StreamReader(myHttpWebResponse.GetResponseStream());
myXmlDoc.LoadXml(StreamHandler.ReadToEnd());
XmlNodeList myParentNodeList = myXmlDoc.ChildNodes;
XmlNode myFeed = myParentNodeList[0];
XmlNodeList myEntryList = myFeed.ChildNodes;
foreach (XmlNode myAzureNode in myEntryList)
{
if (myAzureNode.Name == "entry")
{
XmlNodeList myContent = myAzureNode.ChildNodes;
foreach (XmlNode myEntryNode in myContent)
{
if (myEntryNode.Name == "title" && myEntryNode.InnerText == "Microsoft Translator")
{
myTranslatorFlag = true;
}
if (myEntryNode.Name == "content" && myTranslatorFlag)
{
XmlNodeList myTemp = myEntryNode.ChildNodes;
XmlNode myTempNode = myTemp[0];
XmlNodeList myProperties = myTempNode.ChildNodes;
foreach (XmlNode myValueNode in myProperties)
{
if (myValueNode.Name == "d:ResourceBalance")
{
myNumber = myValueNode.InnerText;
}
}
}
}
}
}
}
}
}
catch (Exception)
{
myNumber = "0";
}
bool myTest = Int32.TryParse(myNumber, out myReturn);
if (!myTest) myReturn = 0;
return myReturn;
}