public ShazamResponse(ResultShazamResponse result) { if (result.newTag != null) { Tag = result.newTag; } }
private void ResultReadCallback(IAsyncResult asynchronousResult) { ResultShazamResponse resultShazamResponse = null; try { var asyncState = (RequestContext)asynchronousResult.AsyncState; var webRequest = (HttpWebRequest)asyncState.WebRequest; var httpWebResponse = (HttpWebResponse)webRequest.EndGetResponse(asynchronousResult); var responseString = ""; if (httpWebResponse.GetResponseStream() != null) { using (var streamReader = new StreamReader(httpWebResponse.GetResponseStream())) { responseString = streamReader.ReadToEnd(); } } resultShazamResponse = ParseResponseForRequestResults(responseString); if (resultShazamResponse.errorMessage != "" && resultShazamResponse.errorMessage != null) { throw new Exception(resultShazamResponse.errorMessage); } RaiseOnRecongnitionStateChanged(ShazamRecognitionState.Done, new ShazamResponse(resultShazamResponse)); } catch (Exception e) { RecognitionFailed(e); } }
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); }