Example #1
0
        public void OutletSelected(Outlet outlet)
        {
            var realm = RealmManager.SharedInstance.GetRealm(null);

            realm.Write(() =>
            {
                outlet.Omitted = !outlet.Omitted;
            });
        }
Example #2
0
        public void RemoveOutlet(Outlet outlet)
        {
            var realm = RealmManager.SharedInstance.GetRealm(null);

            realm.Write(() =>
            {
                Outlets.Remove(outlet);
            });
        }
        async public static Task <InstagramResponse> GetInstagramAccount(string token)
        {
            var client = new HttpClient();

            client.Timeout = TimeSpan.FromSeconds(10);

            Dictionary <string, string> Parameters = new Dictionary <string, string>();

            Parameters.Add("grant_type", "authorization_code");
            Parameters.Add("code", token);
            Parameters.Add("redirect_uri", NotSensitive.SystemUrls.instagram_redirect_url);
            Parameters.Add("client_id", NotSensitive.SlinkKeys.instagram_client_id);
            Parameters.Add("client_secret", NotSensitive.SlinkKeys.instagram_client_secret);


            var contentsTask = await client.PostAsync("https://api.instagram.com/oauth/access_token", new FormUrlEncodedContent(Parameters));


            if (contentsTask != null)
            {
                string result = contentsTask.Content.ReadAsStringAsync().Result;
                if (!String.IsNullOrEmpty(result))
                {
                    JToken jToken      = JToken.Parse(result);
                    var    accessToken = jToken["access_token"].ToString();
                    if (!String.IsNullOrEmpty(accessToken))
                    {
                        var client2 = new HttpClient();
                        client2.Timeout = TimeSpan.FromSeconds(10);
                        var contentsTask2 = await client2.GetAsync("https://api.instagram.com/v1/users/self/?access_token=" + accessToken);

                        if (contentsTask2 != null)
                        {
                            var result2 = JToken.Parse(contentsTask2.Content.ReadAsStringAsync().Result);
                            if (result2 != null)
                            {
                                var response = JsonConvert.DeserializeObject <InstagramResponse>(result2["data"].ToString());

                                var outlet = new Outlet();
                                outlet.Handle = response.username;
                                outlet.Type   = Outlet.outlet_type_instagram;
                                outlet.Name   = response.full_name;

                                RealmServices.SaveOutlet(outlet);

                                return(response);
                            }
                        }
                    }
                }
            }
            return(null);
        }
Example #4
0
        public void AddOutlet(Outlet outlet)
        {
            var realm = RealmManager.SharedInstance.GetRealm(null);
            var item  = Outlets.Where(o => o.Type.Equals(outlet.Type, StringComparison.OrdinalIgnoreCase) && o.Handle.Equals(outlet.Handle, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();

            if (item == null) //prevent adding the same outlet twice.
            {
                realm.Write(() =>
                {
                    Outlets.Add(outlet);
                });
            }
        }
Example #5
0
        public static bool SaveOutlet(Outlet outlet)
        {
            if (outlet == null)
            {
                return(false);
            }
            if (String.IsNullOrEmpty(outlet.Handle))
            {
                return(false);
            }

            var realm = RealmManager.SharedInstance.GetRealm(null);

            if (realm == null)
            {
                return(false);
            }

            var me = RealmUserServices.GetMe(false);

            if (me == null)
            {
                return(false);
            }

            var existingOutlet = me.Outlets.Where(
                c => c.Type != null && c.Type.Equals(outlet.Type, StringComparison.OrdinalIgnoreCase) &&
                c.Handle != null && c.Handle.Equals(outlet.Handle, StringComparison.OrdinalIgnoreCase)
                ).FirstOrDefault();

            if (existingOutlet != null)
            {
                realm.Write(() =>
                {
                    existingOutlet.Deleted = false;
                });
            }
            else
            {
                realm.Write(() =>
                {
                    realm.Add(outlet);

                    me.Outlets.Add(outlet);
                });

                Transporter.SharedInstance.SetObject(Transporter.NewOutletAddedValueTransporterKey, outlet);
                return(true);
            }
            return(false);
        }
Example #6
0
        public static List <Outlet> GetAllAvailableOutlets()
        {
            var me = RealmUserServices.GetMe(false);

            if (me == null)
            {
                return(null);
            }

            var returnList = new List <Outlet>();

            var facebook = new Outlet();

            facebook.Type = Outlet.outlet_type_facebook;
            facebook.AvailbleForAddition = me.Outlets.Where(o => o.Type.Equals(Outlet.outlet_type_facebook, StringComparison.OrdinalIgnoreCase)).Count() == 0;
            returnList.Add(facebook);

            var instagram = new Outlet();

            instagram.Type = Outlet.outlet_type_instagram;
            instagram.AvailbleForAddition = true;
            returnList.Add(instagram);

            var website = new Outlet();

            website.Type = Outlet.outlet_type_website;
            website.AvailbleForAddition = true;
            returnList.Add(website);

            var email = new Outlet();

            email.Type = Outlet.outlet_type_email;
            email.AvailbleForAddition = true;
            returnList.Add(email);

            var github = new Outlet();

            github.Type = Outlet.outlet_type_github;
            github.AvailbleForAddition = true;
            returnList.Add(github);

            var twitter = new Outlet();

            twitter.Type = Outlet.outlet_type_twitter;
            twitter.AvailbleForAddition = true;
            returnList.Add(twitter);

            var linkedIn = new Outlet();

            linkedIn.Type = Outlet.outlet_type_linkedIn;
            linkedIn.AvailbleForAddition = true;
            returnList.Add(linkedIn);

            var pinterest = new Outlet();

            pinterest.Type = Outlet.outlet_type_pinterest;
            pinterest.AvailbleForAddition = true;
            returnList.Add(pinterest);

            var google = new Outlet();

            google.Type = Outlet.outlet_type_google;
            google.AvailbleForAddition = true;
            returnList.Add(google);

            var phone = new Outlet();

            phone.Type = Outlet.outlet_type_phone;
            phone.AvailbleForAddition = true;
            returnList.Add(phone);

            return(returnList.OrderBy(c => c.Type).ToList());
        }
        async public static Task <LinkedInResponse> GetLinkedInAccount(string token)
        {
            var client = new HttpClient();

            client.Timeout = TimeSpan.FromSeconds(10);

            Dictionary <string, string> Parameters = new Dictionary <string, string>();

            Parameters.Add("grant_type", "authorization_code");
            Parameters.Add("code", token);
            Parameters.Add("redirect_uri", "https://mobile.linkedin.com");
            Parameters.Add("client_id", NotSensitive.SlinkKeys.linkedin_client_id);
            Parameters.Add("client_secret", NotSensitive.SlinkKeys.linkedin_client_secret);


            var contentsTask = await client.PostAsync("https://www.linkedin.com/uas/oauth2/accessToken", new FormUrlEncodedContent(Parameters));


            if (contentsTask != null)
            {
                string result = contentsTask.Content.ReadAsStringAsync().Result;
                if (!String.IsNullOrEmpty(result))
                {
                    JToken jToken = JToken.Parse(result);
                    if (jToken == null || jToken["access_token"] == null)
                    {
                        return(null);
                    }

                    var accessToken = jToken["access_token"].ToString();
                    if (!String.IsNullOrEmpty(accessToken))
                    {
                        var client2 = new HttpClient();
                        client2.Timeout = TimeSpan.FromSeconds(10);
                        client2.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
                        var contentsTask2 = await client2.GetAsync("https://api.linkedin.com/v1/people/~:(id,first-name,last-name,public-profile-url)?format=json");

                        if (contentsTask2 != null)
                        {
                            string result2 = contentsTask2.Content.ReadAsStringAsync().Result;
                            if (!String.IsNullOrEmpty(result2))
                            {
                                var response = JsonConvert.DeserializeObject <LinkedInResponse>(result2);

                                var handle = response.publicProfileUrl.Split('/').Last();

                                var outlet = new Outlet();
                                outlet.Handle = handle;
                                outlet.Type   = Outlet.outlet_type_linkedIn;
                                outlet.Name   = response.firstName + " " + response.lastName;

                                RealmServices.SaveOutlet(outlet);

                                return(response);
                            }
                        }
                    }
                }
            }

            return(null);
        }
Example #8
0
            static ExchangeTransaction ParseTransaction(JToken token, List <Card> itemsToIgnore)
            {
                if (token == null)
                {
                    return(null);
                }
                if (token["id"] == null)
                {
                    return(null);
                }
                if (token["card"] == null)
                {
                    return(null);
                }
                if (token["lat"] == null)
                {
                    return(null);
                }
                if (token["lng"] == null)
                {
                    return(null);
                }

                var cardToken = token["card"];

                if (cardToken == null)
                {
                    return(null);
                }

                //check if we should ignore it
                var uuid = (string)cardToken["uuid"];

                if (itemsToIgnore.Any(c => c.UUID.Equals(uuid, StringComparison.OrdinalIgnoreCase)))
                {
                    return(null);
                }


                string id = (string)token["id"];

                if (String.IsNullOrEmpty(id))
                {
                    return(null);
                }

                ExchangeTransaction transaction = new ExchangeTransaction();

                transaction.UUID        = id;
                transaction.Latitidue   = (double)token["lat"];
                transaction.Longitude   = (double)token["lng"];
                transaction.AccessToken = (string)cardToken["accessKey"];

                var realm = RealmManager.SharedInstance.GetRealm(null);

                realm.Write(() =>
                {
                    var user        = new SlinkUser();
                    user.ID         = (string)token["facebookId"];
                    user.FacebookID = (string)token["facebookId"];
                    user.Name       = (string)cardToken["name"];
                    realm.Add(user, true);

                    //fetch fresh copy
                    //this is needed in case you get a user already with one card in in Connections
                    user       = realm.All <SlinkUser>().Where(c => c.ID.Equals(user.ID, StringComparison.OrdinalIgnoreCase)).First();
                    var before = user.Cards.Count();

                    var card                  = new Card();
                    card.UUID                 = uuid;
                    card.Name                 = (string)cardToken["name"];
                    card.UserDisplayName      = (string)cardToken["userDisplayName"];
                    card.Title                = (string)cardToken["title"];
                    card.BorderColor          = (string)cardToken["borderColor"];
                    card.BackgroundColor      = (string)cardToken["backgroundColor"];
                    card.CompanyName          = (string)cardToken["companyName"];
                    card.CompanyNameTextColor = (string)cardToken["companyNameTextColor"];
                    card.AccessToken          = (string)cardToken["accessKey"];
                    card.Owner                = user;

                    var after = user.Cards.Count();

                    var outlets = cardToken["outlets"] as JArray;
                    if (outlets != null)
                    {
                        foreach (var outlet in outlets)
                        {
                            var o    = new Outlet();
                            o.Name   = (string)outlet["name"];
                            o.Type   = (string)outlet["type"];
                            o.Handle = (string)outlet["handle"];
                            o.Card   = card;
                            card.Outlets.Add(o);
                        }
                    }
                    realm.Add(card, true);

                    transaction.Card   = card;
                    transaction.Person = user;
                });

                return(transaction);
            }
Example #9
0
        async public static Task <GithubResponse> GetGithubAccount(string token)
        {
            var client = new HttpClient();

            client.Timeout = TimeSpan.FromSeconds(10);

            Dictionary <string, string> Parameters = new Dictionary <string, string>();

            Parameters.Add("code", token);
            Parameters.Add("client_id", NotSensitive.SlinkKeys.github_client_id);
            Parameters.Add("client_secret", NotSensitive.SlinkKeys.github_client_secret);
            Parameters.Add("accept", "json");

            HttpResponseMessage contentsTask = null;

            try
            {
                contentsTask = await client.PostAsync("https://github.com/login/oauth/access_token", new FormUrlEncodedContent(Parameters));
            }
            catch (Exception e)
            {
                AppCenterManager.Report(e);
                return(null);
            }

            if (contentsTask == null)
            {
                return(null);
            }

            //access_token=01805dc46a84d7b7547f5d430629a0354fe7ddcd&scope=user%3Aemail&token_type=bearer
            string accessToken = null;
            string result      = contentsTask.Content.ReadAsStringAsync().Result;

            if (!String.IsNullOrEmpty(result))
            {
                var splitByAmpersand = result.Split('&');
                foreach (String sub in splitByAmpersand)
                {
                    if (sub.Contains("access_token"))
                    {
                        var seperatedByEquals = sub.Split('=');
                        accessToken = seperatedByEquals.Last();
                    }
                }


                if (!String.IsNullOrEmpty(accessToken))
                {
                    var client2 = new HttpClient();
                    client2.Timeout = TimeSpan.FromSeconds(10);
                    client2.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
                    client2.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
                    var contentsTask2 = await client2.GetAsync("https://api.github.com/user?access_token=" + accessToken);

                    if (contentsTask2 != null)
                    {
                        var result2 = JToken.Parse(contentsTask2.Content.ReadAsStringAsync().Result);
                        if (result2 != null)
                        {
                            var response = JsonConvert.DeserializeObject <GithubResponse>(result2.ToString());

                            var outlet = new Outlet();
                            outlet.Handle = response.id;
                            outlet.Type   = Outlet.outlet_type_github;
                            outlet.Name   = response.login;

                            RealmServices.SaveOutlet(outlet);

                            return(response);
                        }
                    }
                }
            }
            return(null);
        }