public IEnumerable <FBQueryResult> EndQuery(IAsyncResult result) { if (!result.IsCompleted) { result.AsyncWaitHandle.WaitOne(); } FBResult fbResult = result as FBResult; if (fbResult == null) { throw new ArgumentException(InvalidAsyncResult, "result"); } WebRequest req = fbResult.InnerResult.AsyncState as WebRequest; if (req == null) { throw new ArgumentException(InvalidAsyncResult, "result"); } JObject jObject = null; using (WebResponse resp = req.EndGetResponse(fbResult.InnerResult)) using (Stream stream = resp.GetResponseStream()) using (StreamReader reader = new StreamReader(stream)) { string json = reader.ReadToEnd(); jObject = JObject.Parse(json); } var errors = jObject["error"] as JObject; if (errors != null) { throw new ApplicationException( String.Format( "Facebook Graph service errors were returned: message: {0}; type: {1}; code: {2}", (string)errors["message"], (string)errors["type"], (int)errors["code"])); } var data = jObject["data"] as JArray; if (data != null) { foreach (var queryResult in data) { var jobjResult = queryResult as JObject; yield return(new FBQueryResult(jobjResult)); } } else { yield return(new FBQueryResult(jObject)); } }
public IAsyncResult BeginQuery(string entity, string query, AsyncCallback callback, object state) { string uri = ConstructQueryUri(entity, query); WebRequest req = WebRequest.Create(uri); FBResult fbResult = new FBResult(state); fbResult.InnerResult = req.BeginGetResponse( (result) => { if (callback != null) callback(fbResult); }, req); return fbResult; }
public IAsyncResult BeginQuery(string entity, string query, AsyncCallback callback, object state) { string uri = ConstructQueryUri(entity, query); WebRequest req = WebRequest.Create(uri); FBResult fbResult = new FBResult(state); fbResult.InnerResult = req.BeginGetResponse( (result) => { if (callback != null) { callback(fbResult); } }, req); return(fbResult); }