Example #1
0
        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));
            }
        }
Example #2
0
        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;
        }
Example #3
0
        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);
        }