public void OutletSelected(Outlet outlet) { var realm = RealmManager.SharedInstance.GetRealm(null); realm.Write(() => { outlet.Omitted = !outlet.Omitted; }); }
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); }
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); }); } }
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); }
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); }
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); }
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); }