private ResultShazamResponse ParseResponseForRequestResults(string responseString) { var resultShazamResponse = new ResultShazamResponse(); var xDocument = XDocument.Parse(responseString); XNamespace xNamespace = "http://orbit.shazam.com/v1/response"; var elementIgnoreNamespace = xDocument.Root.GetElementIgnoreNamespace(xNamespace, "requestResults1"); var xElement = elementIgnoreNamespace; if (elementIgnoreNamespace == null) { var elementIgnoreNamespace1 = xDocument.Root.GetElementIgnoreNamespace(xNamespace, "error"); var xElement1 = elementIgnoreNamespace1; if (elementIgnoreNamespace1 != null) { resultShazamResponse.errorCode = int.Parse(xElement1.Attribute("code").Value); } } else { var elementIgnoreNamespace2 = xElement.GetElementIgnoreNamespace(xNamespace, "request"); var tagVO = new TagVO(); tagVO.Id = elementIgnoreNamespace2.Attribute("requestId").Value; resultShazamResponse.newTag = tagVO; TrackVO trackVO = null; var num = 0; var xElement2 = xElement.GetElementIgnoreNamespace(xNamespace, "tracks"); var elementIgnoreNamespace3 = xElement2.GetElementIgnoreNamespace(xNamespace, "track"); if (elementIgnoreNamespace3 != null) { trackVO = ParseXmlElementForTrackData(xNamespace, elementIgnoreNamespace3, false); if (elementIgnoreNamespace3.Attribute("cache-max-age") != null) { num = Convert.ToInt32(elementIgnoreNamespace3.Attribute("cache-max-age").Value); } } if (trackVO != null) { resultShazamResponse.newTag.Track = trackVO; } } return(resultShazamResponse); }
private TrackVO ParseXmlElementForTrackData(XNamespace xNamespace, XElement trackElem, bool fromList = false) { var trackVO = new TrackVO(); trackVO.Id = Convert.ToInt32(trackElem.Attribute("id").Value); trackVO.Title = trackElem.GetElementIgnoreNamespace(xNamespace, "ttitle").Value; var elementIgnoreNamespace = trackElem.GetElementIgnoreNamespace(xNamespace, "tartists"); if (elementIgnoreNamespace != null) { var xElement = elementIgnoreNamespace.GetElementIgnoreNamespace(xNamespace, "tartist"); if (xElement != null) { trackVO.Artist = xElement.Value; } } var elementIgnoreNamespace1 = trackElem.GetElementIgnoreNamespace(xNamespace, "tlabel"); if (elementIgnoreNamespace1 != null) { trackVO.Label = elementIgnoreNamespace1.Value; } var xElement1 = trackElem.GetElementIgnoreNamespace(xNamespace, "tgenre"); if (xElement1 != null) { var elementIgnoreNamespace2 = xElement1.GetElementIgnoreNamespace(xNamespace, "tparentGenre"); if (elementIgnoreNamespace2 != null) { trackVO.Genre = elementIgnoreNamespace2.Value; } } var xElement2 = trackElem.GetElementIgnoreNamespace(xNamespace, "tcoverart"); if (xElement2 != null) { trackVO.ImageUri = xElement2.Value; } var elementIgnoreNamespace3 = trackElem.GetElementIgnoreNamespace(xNamespace, "addOns"); if (elementIgnoreNamespace3 != null) { foreach (var xElement3 in elementIgnoreNamespace3.Elements(xNamespace + "addOn")) { if (xElement3.Attribute("providerName").Value == "Zune") { var elementIgnoreNamespace4 = xElement3.GetElementIgnoreNamespace(xNamespace, "actions"); if (elementIgnoreNamespace4 != null) { var xElement4 = elementIgnoreNamespace4.GetElementIgnoreNamespace(xNamespace, "MarketplaceSearchTask"); if (xElement4 != null) { trackVO.ContentType = xElement4.Attribute("ContentType").Value; trackVO.SearchTerms = xElement4.Attribute("SearchTerms").Value; } } var elementIgnoreNamespace5 = xElement3.GetElementIgnoreNamespace(xNamespace, "content"); if (elementIgnoreNamespace5 == null) { continue; } trackVO.PurchaseUrl = elementIgnoreNamespace5.Value; } else if (xElement3.Attribute("providerName").Value != "Share") { var xElement5 = xElement3.GetElementIgnoreNamespace(xNamespace, "actions"); if (xElement5 == null) { continue; } var addOnVO = new AddOnVO(); addOnVO.ProviderName = xElement3.Attribute("providerName").Value; addOnVO.Caption = xElement3.Attribute("typeName").Value; var num = -1; if (int.TryParse(xElement3.Attribute("typeId").Value, out num)) { addOnVO.TypeId = num; } var num1 = -1; if (xElement3.Attribute("creditTypeId") != null && int.TryParse(xElement3.Attribute("creditTypeId").Value, out num1)) { addOnVO.CreditTypeId = num1; } addOnVO.Actions = new List <AddOnActionVO>(); foreach (var xElement6 in xElement5.Elements()) { var addOnActionVO = new AddOnActionVO(); addOnActionVO.Url = xElement6.Attribute("Uri").Value; var localName = xElement6.Name.LocalName; var str = localName; if (localName != null) { if (str == "LaunchUriTask") { addOnActionVO.Type = AddOnActionVO.ActionType.LaunchUri; } else if (str == "WebViewTask") { addOnActionVO.Type = AddOnActionVO.ActionType.WebView; } } addOnVO.Actions.Add(addOnActionVO); } var providerName = addOnVO.ProviderName; var str1 = providerName; if (providerName != null) { switch (str1) { case "Buy": { addOnVO.ImageUri = "ms-appx:///PresentationLib/Assets/buy.png"; break; } case "YouTube": { addOnVO.ImageUri = "ms-appx:///PresentationLib/Assets/youtube.png"; break; } case "Biography": { addOnVO.ImageUri = "ms-appx:///PresentationLib/Assets/biog.png"; break; } case "Discography": { addOnVO.ImageUri = "ms-appx:///PresentationLib/Assets/discog.png"; break; } case "ProductReview": { addOnVO.ImageUri = "ms-appx:///PresentationLib/Assets/reviews.png"; break; } case "TrackReview": { addOnVO.ImageUri = "ms-appx:///PresentationLib/Assets/trackreview.png"; break; } case "ShazamLyrics": { addOnVO.ImageUri = "ms-appx:///PresentationLib/Assets/lyrics.png"; break; } case "Recommendations": { addOnVO.ImageUri = "ms-appx:///PresentationLib/Assets/recommendations.png"; break; } } } addOnVO.AssociateOwnerTrack(trackVO); trackVO.AddOns = new List <AddOnVO>(); trackVO.AddOns.Add(addOnVO); } else { var elementIgnoreNamespace6 = xElement3.GetElementIgnoreNamespace(xNamespace, "actions"); if (elementIgnoreNamespace6 == null) { continue; } var elementIgnoreNamespace7 = elementIgnoreNamespace6.GetElementIgnoreNamespace(xNamespace, "ShareLinkTask"); if (elementIgnoreNamespace7 == null) { continue; } trackVO.ShareLinkUri = elementIgnoreNamespace7.Attribute("LinkUri").Value; trackVO.ShareLinkTitle = elementIgnoreNamespace7.Attribute("Title").Value; trackVO.ShareLinkMessage = elementIgnoreNamespace7.Attribute("Message").Value; } } } var xElement7 = trackElem.GetElementIgnoreNamespace(xNamespace, "tproduct"); if (xElement7 != null) { trackVO.Product = xElement7.Value; } return(trackVO); }