private string parseFacebookUserIdFromSettings(ACAccount account)
        {
            SLRequest sl = SLRequest.Create(SLServiceKind.Facebook, SLRequestMethod.Get, new NSUrl("https://graph.facebook.com/me"), null);

            sl.Account = account;

            AutoResetEvent completedEvent = new AutoResetEvent(false);
            var            id             = string.Empty;

            sl.PerformRequest((data, response, error) =>
            {
                if (error == null)
                {
                    NSError parseError;
                    NSDictionary jsonDict = (NSDictionary)NSJsonSerialization.Deserialize(data, 0, out parseError);
                    if (jsonDict != null)
                    {
                        NSObject obj = jsonDict.ValueForKey(new NSString("id"));
                        id           = obj?.ToString();
                    }
                }

                completedEvent.Set();
            });

            completedEvent.WaitOne();
            return(id);
        }
            public SocialRequest(SLServiceKind kind, string method, Uri url, IDictionary <string, string> parametrs, Account account)
                : base(method, url, parametrs, account)
            {
                var m = SLRequestMethod.Get;

                switch (method.ToLowerInvariant())
                {
                case "get":
                    m = SLRequestMethod.Get;
                    break;

                case "post":
                    m = SLRequestMethod.Post;
                    break;

                case "delete":
                    m = SLRequestMethod.Delete;
                    break;

                default:
                    throw new NotSupportedException("Social framework does not support the HTTP method '" + method + "'");
                }

                request = SLRequest.Create(kind, m, new NSUrl(url.AbsoluteUri), new NSMutableDictionary());
                UpdateParameters(request);

                Account = account;
            }
        public async Task <List <TweetInfo> > SearchAsync(string term, int count)
        {
            await LoadAccountAsync();

            Debug.WriteLine($"Searching for '{term}'");

            if (account == null)
            {
                throw new Exception("Couldn't open Twitter account!");
            }
            if (term == null)
            {
                throw new Exception("Null search term!");
            }

            // create the Twitter search request
            var requestUrl = new NSUrl($"https://api.twitter.com/1.1/search/tweets.json?count={count}&q={Uri.EscapeUriString(term)}");
            var request    = SLRequest.Create(SLServiceKind.Twitter, SLRequestMethod.Get, requestUrl, new NSDictionary());

            request.Account = account;
            var preparedRequest = request.GetPreparedUrlRequest();

            if (preparedRequest == null)
            {
                throw new Exception("Couldn't construct request!");
            }

            var taskRequest = await NSUrlSession.SharedSession.CreateDataTaskAsync(preparedRequest);

            var statusCode = ((NSHttpUrlResponse)taskRequest.Response).StatusCode;

            if (statusCode != 200)
            {
                throw new Exception($"HTTP Code {statusCode}");
            }

            var parsedResponse = ParseResponse(taskRequest.Data);

            if (parsedResponse == null)
            {
                throw new Exception("Failed to parse response!");
            }

            Debug.WriteLine("Search completed!");

            return(parsedResponse);
        }
Beispiel #4
0
        partial void RequestFacebookTimeline_TouchUpInside(UIButton sender)
        {
            // Initialize request
            var parameters = new NSDictionary();
            var url        = new NSUrl("https://graph.facebook.com/283148898401104");
            var request    = SLRequest.Create(SLServiceKind.Facebook, SLRequestMethod.Get, url, parameters);

            // Request data
            request.Account = FacebookAccount;
            request.PerformRequest((data, response, error) => {
                // Was there an error?
                if (error == null)
                {
                    // Was the request successful?
                    if (response.StatusCode == 200)
                    {
                        // Yes, display it
                        InvokeOnMainThread(() => {
                            Results.Text = data.ToString();
                        });
                    }
                    else
                    {
                        // No, display error
                        InvokeOnMainThread(() => {
                            Results.Text = $"Error: {response.StatusCode}";
                        });
                    }
                }
                else
                {
                    // No, display error
                    InvokeOnMainThread(() => {
                        Results.Text = $"Error: {error}";
                    });
                }
            });
        }
Beispiel #5
0
        partial void RequestTwitterTimeline_TouchUpInside(UIButton sender)
        {
            // Initialize request
            var parameters = new NSDictionary();
            var url        = new NSUrl("https://api.twitter.com/1.1/statuses/user_timeline.json?count=10");
            var request    = SLRequest.Create(SLServiceKind.Twitter, SLRequestMethod.Get, url, parameters);

            // Request data
            request.Account = TwitterAccount;
            request.PerformRequest((data, response, error) => {
                // Was there an error?
                if (error == null)
                {
                    // Was the request successful?
                    if (response.StatusCode == 200)
                    {
                        // Yes, display it
                        InvokeOnMainThread(() => {
                            Results.Text = data.ToString();
                        });
                    }
                    else
                    {
                        // No, display error
                        InvokeOnMainThread(() => {
                            Results.Text = $"Error: {response.StatusCode}";
                        });
                    }
                }
                else
                {
                    // No, display error
                    InvokeOnMainThread(() => {
                        Results.Text = $"Error: {error}";
                    });
                }
            });
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            twitterButton.TouchUpInside += delegate {
                if (SLComposeViewController.IsAvailable(SLServiceKind.Twitter))
                {
                    slComposer = SLComposeViewController.FromService(SLServiceType.Twitter);

                    slComposer.SetInitialText("test");
                    slComposer.AddImage(UIImage.FromFile("monkey.png"));

                    slComposer.CompletionHandler += (result) => {
                        InvokeOnMainThread(() => {
                            DismissViewController(true, null);
                            resultsTextView.Text = result.ToString();
                        });
                    };

                    PresentViewController(slComposer, true, null);
                }
                else
                {
                    resultsTextView.Text = "Twitter Account not added";
                }
            };

            facebookButton.TouchUpInside += delegate {
                if (SLComposeViewController.IsAvailable(SLServiceKind.Facebook))
                {
                    slComposer = SLComposeViewController.FromService(SLServiceType.Facebook);

                    slComposer.SetInitialText("test2");
                    slComposer.AddImage(UIImage.FromFile("monkey.png"));
                    slComposer.AddUrl(new NSUrl("http://xamarin.com"));

                    slComposer.CompletionHandler += (result) => {
                        InvokeOnMainThread(() => {
                            DismissViewController(true, null);
                            resultsTextView.Text = result.ToString();
                        });
                    };

                    PresentViewController(slComposer, true, null);
                }
                else
                {
                    resultsTextView.Text = "Facebook Account not added";
                }
            };

            twitterRequestButton.TouchUpInside += delegate {
                if (SLComposeViewController.IsAvailable(SLServiceKind.Twitter))
                {
                    var parameters = new NSDictionary();
                    var request    = SLRequest.Create(SLServiceKind.Twitter,
                                                      SLRequestMethod.Get,
                                                      new NSUrl("http://api.twitter.com/1/statuses/public_timeline.json"),
                                                      parameters);

                    request.PerformRequest((data, response, error) => {
                        if (response.StatusCode == 200)
                        {
                            InvokeOnMainThread(() => {
                                resultsTextView.Text = data.ToString();
                            });
                        }
                        else
                        {
                            InvokeOnMainThread(() => {
                                resultsTextView.Text = "Error: " + response.StatusCode.ToString();
                            });
                        }
                    });
                }
                else
                {
                    resultsTextView.Text = "Twitter Account not added";
                }
            };

            facebookRequestButton.TouchUpInside += delegate {
                if (SLComposeViewController.IsAvailable(SLServiceKind.Facebook))
                {
                    var parameters = new NSDictionary();
                    var request    = SLRequest.Create(SLServiceKind.Facebook,
                                                      SLRequestMethod.Get,
                                                      new NSUrl("https://graph.facebook.com/283148898401104"),
                                                      parameters);

                    request.PerformRequest((data, response, error) => {
                        if (response.StatusCode == 200)
                        {
                            InvokeOnMainThread(() => {
                                resultsTextView.Text = data.ToString();
                            });
                        }
                        else
                        {
                            InvokeOnMainThread(() => {
                                resultsTextView.Text = "Error: " + response.StatusCode.ToString();
                            });
                        }
                    });
                }
                else
                {
                    resultsTextView.Text = "Facebook Account not added";
                }
            };
        }