private RecognitionShazamResponse ParseResponseForDoRecognition(string responseString) { var recognitionShazamResponse = new RecognitionShazamResponse(); var xDocument = XDocument.Parse(responseString); XNamespace xNamespace = "http://orbit.shazam.com/v1/response"; var elementIgnoreNamespace = xDocument.Root.GetElementIgnoreNamespace(xNamespace, "doRecognition1"); var xElement = elementIgnoreNamespace; if (elementIgnoreNamespace == null) { var elementIgnoreNamespace1 = xDocument.Root.GetElementIgnoreNamespace(xNamespace, "error"); var xElement1 = elementIgnoreNamespace1; if (elementIgnoreNamespace1 != null) { recognitionShazamResponse.errorCode = int.Parse(xElement1.Attribute("code").Value); } } else { var elementIgnoreNamespace2 = xElement.GetElementIgnoreNamespace(xNamespace, "requestId"); var xElement2 = elementIgnoreNamespace2; if (elementIgnoreNamespace2 != null) { recognitionShazamResponse.requestId = ulong.Parse(xElement2.Attribute("id").Value); } } return(recognitionShazamResponse); }
private void RecognitionReadCallback(IAsyncResult asynchronousResult) { RecognitionShazamResponse recognitionShazamResponse = null; try { var asyncState = (RequestContext)asynchronousResult.AsyncState; var webRequest = (HttpWebRequest)asyncState.WebRequest; var httpWebResponse = (HttpWebResponse)webRequest.EndGetResponse(asynchronousResult); var requestBuilder = asyncState.RequestBuilder as OrbitPostRequestBuilder; var responseString = ""; if (httpWebResponse.GetResponseStream() != null) { using (var streamReader = new StreamReader(httpWebResponse.GetResponseStream())) { responseString = streamReader.ReadToEnd(); } } recognitionShazamResponse = ParseResponseForDoRecognition(responseString); if (recognitionShazamResponse.errorMessage != "" && recognitionShazamResponse.errorMessage != null) { throw new Exception(recognitionShazamResponse.errorMessage); } DoGetResult(recognitionShazamResponse.requestId); } catch (Exception e) { RecognitionFailed(e); } }