コード例 #1
0
        private async Task SendRecievedMessage(IUser user, Account acc, int uidSender, int messageId, int dialogParticipientId, string messageString)
        {
            string messageType = await GetMessageSenderMessageType(messageId, acc);

            var sender = new DataUser()
            {
                Uid = uidSender.ToString()
            };

            IMessage message = new DataMessage()
            {
                Content        = messageString,
                Recipient      = messageType == "1" ? sender : user,
                Sender         = messageType == "1" ? user : sender,
                ParticipientId = dialogParticipientId.ToString()
            };

            if (messageType == "1")
            {
                GalaSoft.MvvmLight.Messaging.Messenger.Default.Send <MessagesUI.MessageNewMyMessageWasSent>
                    (new MessagesUI.MessageNewMyMessageWasSent(message));
            }
            else
            {
                GalaSoft.MvvmLight.Messaging.Messenger.Default.Send <MessagesUI.MessageNewMessageWasSentToMe>
                    (new MessagesUI.MessageNewMessageWasSentToMe(message));
            }
        }
コード例 #2
0
        private static async Task <IEnumerable <IDialog> > GetVkDialogs(DataIUser user)
        {
            IList <IDialog> dialogs = new List <IDialog>();

            try
            {
                Account acc     = Account.Deserialize(user.SerializeInfo.ToString());
                var     request = new OAuth2Request("GET", new Uri("https://api.vk.com/method/messages.getDialogs"), null, acc);

                request.Parameters.Add("count", "200");
                request.Parameters.Add("v", "5.37");

                var res = await request.GetResponseAsync();

                var responseText = res.GetResponseText();

                var msg = JsonConvert.DeserializeObject <XamarinSocialApp.Droid.Data.VkData.VkDialogsResponse>(responseText);


                foreach (var item in msg.Response.Messages)
                {
                    IUser userDialog = new User()
                    {
                        Uid           = item.Message.UserId,
                        SerializeInfo = user.SerializeInfo
                    };
                    DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);

                    string dateMessage = start.AddSeconds(item.Message.DateMessage).ToLocalTime().ToString();
                    //var userDialog = await GetUserInfoRequest(item.Message.UserId, acc, socialNetwork);
                    dialogs.Add(new DataDialogs(userDialog, new List <IMessage>()
                    {
                        new DataMessage()
                        {
                            Content = item.Message.Body, DateMessage = dateMessage
                        }
                    }));
                }
            }
            catch (Exception)
            {
            }

            return(dialogs);
        }
コード例 #3
0
        public async Task <IEnumerable <IDialog> > GetTwitterDialogs(DataIUser user)
        {
            IList <IDialog> dialogs = new List <IDialog>();

            try
            {
                TwitterContext context = this.GetTwitterContext(user.SerializeInfo);

                var twitterDialogs = await
                                         (from dm in context.DirectMessage
                                         where dm.Type == DirectMessageType.SentTo
                                         select dm)
                                     .ToListAsync();

                foreach (var msg in twitterDialogs)
                {
                    IUser userDialog = new User()
                    {
                        Uid           = msg.SenderID.ToString(),
                        FirstName     = msg.SenderScreenName,
                        SerializeInfo = user.SerializeInfo,
                        SocialNetwork = user.SocialNetwork
                    };

                    dialogs.Add(new DataDialogs(userDialog, new List <IMessage>()
                    {
                        new DataMessage()
                        {
                            Content = msg.Text, DateMessage = msg.CreatedAt.ToString()
                        }
                    }));
                }
            }
            catch (Exception)
            {
            }

            return(dialogs);
        }
コード例 #4
0
		private async Task<IDialog> GetTwitterDialogWithFriend(DataIUser user, DataIUser friend)
		{
			IDialog dialog = null;
			IUser userInDialog = null;
			IList<IMessage> messages = new List<IMessage>();
 
			try
			{
				TwitterContext context = this.GetTwitterContext(user.SerializeInfo);

				var receivedMessages = await
						(from dm in context.DirectMessage
						 where dm.Type == DirectMessageType.SentTo
						 select dm).OrderByDescending(x => x.CreatedAt)
						.ToListAsync();

				var sentMessages = await
						(from dm in context.DirectMessage
						 where dm.Type == DirectMessageType.SentBy
						 select dm).OrderByDescending(x => x.CreatedAt)
						.ToListAsync();

				foreach (var message in receivedMessages)
				{
					if (message.SenderID.ToString() == friend.Uid)
					{
						userInDialog = new User() { FirstName = message.Sender.ScreenNameResponse };
						messages.Add(new DataMessage() { Content = message.Text, Sender = userInDialog, DateMessage = message.CreatedAt.ToString() });
					}
				}

				foreach (var message in sentMessages)
				{
					if (message.RecipientID.ToString() == friend.Uid)
					{
						userInDialog = new User() { FirstName = message.Sender.ScreenNameResponse };
						messages.Add(new DataMessage() { Content = message.Text, Sender = userInDialog, DateMessage = message.CreatedAt.ToString() });
					}
				}

				messages = messages.OrderByDescending(x => x.DateMessage).ToList();

				dialog = new XamarinSocialApp.UI.Data.Implementations.Entities.Databases.Dialog(user, messages);
			}
			catch (Exception)
			{
			}

			return dialog;
		}
コード例 #5
0
		private static async Task<IEnumerable<IDialog>> GetVkDialogs(DataIUser user)
		{
			IList<IDialog> dialogs = new List<IDialog>();
			try
			{
				Account acc = Account.Deserialize(user.SerializeInfo.ToString());
				var request = new OAuth2Request("GET", new Uri("https://api.vk.com/method/messages.getDialogs"), null, acc);

				request.Parameters.Add("count", "200");
				request.Parameters.Add("v", "5.37");

				var res = await request.GetResponseAsync();
				var responseText = res.GetResponseText();

				var msg = JsonConvert.DeserializeObject<XamarinSocialApp.Droid.Data.VkData.VkDialogsResponse>(responseText);


				foreach (var item in msg.Response.Messages)
				{
					IUser userDialog = new User()
					{
						Uid = item.Message.UserId,
						SerializeInfo = user.SerializeInfo
					};
					DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);

					string dateMessage = start.AddSeconds(item.Message.DateMessage).ToLocalTime().ToString();				
					//var userDialog = await GetUserInfoRequest(item.Message.UserId, acc, socialNetwork);
					dialogs.Add(new DataDialogs(userDialog, new List<IMessage>() 
				{ 
					new DataMessage() { Content = item.Message.Body, DateMessage = dateMessage } 
				}));
				}
			}
			catch (Exception)
			{
			}

			return dialogs;
		}
コード例 #6
0
		public async Task<IEnumerable<IDialog>> GetTwitterDialogs(DataIUser user)
		{
			IList<IDialog> dialogs = new List<IDialog>();
			try
			{
				TwitterContext context = this.GetTwitterContext(user.SerializeInfo);

				var twitterDialogs = await
						(from dm in context.DirectMessage
						 where dm.Type == DirectMessageType.SentTo
						 select dm)
						.ToListAsync();

				foreach (var msg in twitterDialogs)
				{
					IUser userDialog = new User()
					{
						Uid = msg.SenderID.ToString(),
						FirstName = msg.SenderScreenName,
						SerializeInfo = user.SerializeInfo, 
						SocialNetwork = user.SocialNetwork
					};

					dialogs.Add(new DataDialogs(userDialog, new List<IMessage>()
					{ 
						new DataMessage() { Content = msg.Text, DateMessage = msg.CreatedAt.ToString() } 
					}));
				}
			}
			catch (Exception)
			{
			}

			return dialogs;
		}
コード例 #7
0
		private async Task<DataIUser> LoginToTwitter()
		{
			DataIUser resultUser = null;
			LinqToTwitter.User twitterUser = null;
			try
			{
				TaskCompletionSource<int> ts = new TaskCompletionSource<int>();

				var auth = new OAuth1Authenticator(
										consumerKey: "YVgafJLg6figpxcFTx9oBhXDw",
										consumerSecret: "AdNdiuHSHIf5hN6HWnVrC9u6bnW3vVirjEhAFrfabacPIQdh98",
					requestTokenUrl: new Uri("https://api.twitter.com/oauth/request_token"),
					//https://api.twitter.com/oauth/authorize
					authorizeUrl: new Uri("https://api.twitter.com/oauth/authorize"),
					accessTokenUrl: new Uri("https://api.twitter.com/oauth/access_token"),
					callbackUrl: new Uri("https://oauth.vk.com/blank.html"));

				auth.AllowCancel = true;

				auth.Completed += (s, ee) =>
				{
					if (!ee.IsAuthenticated)
					{
						ts.SetResult(0);
						return;
					}

					var twitterCtx = GetTwitterContext();

					var accounts =
						from acct in twitterCtx.Account
						where acct.Type == AccountType.VerifyCredentials
						select acct;

					LinqToTwitter.Account account = accounts.SingleOrDefault();

					twitterUser = account.User;

					#region unused requests

					//var searchResponses = (from search in ctx.Search
					//											 where search.Type == SearchType.Search
					//											 && search.Query == searchText
					//											 select search).SingleOrDefault();

					//var tweets = from tweet in searchResponses.Statuses
					//						 select new Message
					//						 {
					//							 Value = tweet.Text,
					//							 Id = tweet.TweetIDs,
					//							 ImageUri = tweet.User.ProfileImageUrl,
					//							 UserName = tweet.User.ScreenNameResponse,
					//							 Name = tweet.User.Name,
					//							 CreatedAt = tweet.CreatedAt,
					//							 ReTweets = tweet.RetweetCount,
					//							 Favorite = tweet.FavoriteCount.Value
					//						 };

					//var followers = (from follower in twitterCtx.Friendship
					//								 where follower.Type == FriendshipType.FollowersList &&
					//											 follower.UserID == "3620214675"
					//								 select follower).SingleOrDefault();

					#endregion

					string uid = twitterUser.UserIDResponse;
					string firstName = twitterUser.ScreenNameResponse;

					TwitterData.TwitterUser twUser = new TwitterData.TwitterUser();
					twUser.ConsumerKey = twitterCtx.Authorizer.CredentialStore.ConsumerKey;
					twUser.ConsumerSecret = twitterCtx.Authorizer.CredentialStore.ConsumerSecret;
					twUser.OAuthToken = twitterCtx.Authorizer.CredentialStore.OAuthToken;
					twUser.OAuthTokenSecret = twitterCtx.Authorizer.CredentialStore.OAuthTokenSecret;

					twUser.UserID = ulong.Parse(uid);
					twUser.ScreenName = firstName;

					resultUser = new User()
					{
						FirstName = firstName,
						Uid = uid,
						SerializeInfo = JsonConvert.SerializeObject(twUser),
						SocialNetwork = enSocialNetwork.Twitter				
					};

					ts.SetResult(0);

				};

				var intent = auth.GetUI(Forms.Context);
				Forms.Context.StartActivity(intent);
				await ts.Task;
			}
			catch (Exception)
			{
			}
			return resultUser;
		}
コード例 #8
0
		private static async Task<DataIUser> LoginToVk()
		{
			IUser user = null;
			try
			{
				TaskCompletionSource<int> ts = new TaskCompletionSource<int>();

				var auth = new OAuth2Authenticator(
				clientId: "5042701",
				scope: "offline,messages,friends",
				authorizeUrl: new Uri("https://oauth.vk.com/authorize"),
				redirectUrl: new Uri("https://oauth.vk.com/blank.html"));

				auth.AllowCancel = true;

				auth.Completed += (s, ee) =>
				{
					if (!ee.IsAuthenticated)
					{
						ts.SetResult(0);
						return;
					}

					var request = new OAuth2Request("GET", new Uri("https://api.vk.com/method/users.get"), null, ee.Account);
					request.GetResponseAsync().ContinueWith(t =>
					{
						if (t.IsCompleted)
						{
							Token = ee.Account.Properties["access_token"].ToString();
							string account = ee.Account.Serialize();
							Account = ee.Account;

							var response = t.Result.GetResponseText();
							var users = JsonConvert.DeserializeObject<XamarinSocialApp.Droid.Data.VkData.VkUsers>(response);

							string uid = users.response[0].uid;
							string firstName = users.response[0].first_name;
							string lastName = users.response[0].last_name;

							user = new User()
							{
								FirstName = firstName,
								LastName = lastName,
								Uid = uid,
								SerializeInfo = Account.Serialize(),
								SocialNetwork = enSocialNetwork.VK
							};

							ts.SetResult(0);
						}
						else
						{
							ts.SetResult(0);
							return;
						}
					}, UIScheduler);
				};

				var intent = auth.GetUI(Forms.Context);
				Forms.Context.StartActivity(intent);
				await ts.Task;
			}
			catch (Exception)
			{
			}
			return user;
		}
コード例 #9
0
		private async Task SendRecievedMessage(IUser user, Account acc, int uidSender, int messageId, int dialogParticipientId, string messageString)
		{
			string messageType = await GetMessageSenderMessageType(messageId, acc);
			var sender = new DataUser() { Uid = uidSender.ToString() };

			IMessage message = new DataMessage()
			{
				Content = messageString,
				Recipient = messageType == "1" ? sender : user,
				Sender = messageType == "1" ? user : sender,
				ParticipientId = dialogParticipientId.ToString()
			};

			if (messageType == "1")
			{
				GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<MessagesUI.MessageNewMyMessageWasSent>
				(new MessagesUI.MessageNewMyMessageWasSent(message));
			}
			else
			{
				GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<MessagesUI.MessageNewMessageWasSentToMe>
				(new MessagesUI.MessageNewMessageWasSentToMe(message));
			}
		}
コード例 #10
0
        private async Task <IDialog> GetTwitterDialogWithFriend(DataIUser user, DataIUser friend)
        {
            IDialog          dialog       = null;
            IUser            userInDialog = null;
            IList <IMessage> messages     = new List <IMessage>();

            try
            {
                TwitterContext context = this.GetTwitterContext(user.SerializeInfo);

                var receivedMessages = await
                                           (from dm in context.DirectMessage
                                           where dm.Type == DirectMessageType.SentTo
                                           select dm).OrderByDescending(x => x.CreatedAt)
                                       .ToListAsync();

                var sentMessages = await
                                       (from dm in context.DirectMessage
                                       where dm.Type == DirectMessageType.SentBy
                                       select dm).OrderByDescending(x => x.CreatedAt)
                                   .ToListAsync();

                foreach (var message in receivedMessages)
                {
                    if (message.SenderID.ToString() == friend.Uid)
                    {
                        userInDialog = new User()
                        {
                            FirstName = message.Sender.ScreenNameResponse
                        };
                        messages.Add(new DataMessage()
                        {
                            Content = message.Text, Sender = userInDialog, DateMessage = message.CreatedAt.ToString()
                        });
                    }
                }

                foreach (var message in sentMessages)
                {
                    if (message.RecipientID.ToString() == friend.Uid)
                    {
                        userInDialog = new User()
                        {
                            FirstName = message.Sender.ScreenNameResponse
                        };
                        messages.Add(new DataMessage()
                        {
                            Content = message.Text, Sender = userInDialog, DateMessage = message.CreatedAt.ToString()
                        });
                    }
                }

                messages = messages.OrderByDescending(x => x.DateMessage).ToList();

                dialog = new XamarinSocialApp.UI.Data.Implementations.Entities.Databases.Dialog(user, messages);
            }
            catch (Exception)
            {
            }

            return(dialog);
        }
コード例 #11
0
        private async Task <DataIUser> LoginToTwitter()
        {
            DataIUser resultUser = null;

            LinqToTwitter.User twitterUser = null;
            try
            {
                TaskCompletionSource <int> ts = new TaskCompletionSource <int>();

                var auth = new OAuth1Authenticator(
                    consumerKey: "YVgafJLg6figpxcFTx9oBhXDw",
                    consumerSecret: "AdNdiuHSHIf5hN6HWnVrC9u6bnW3vVirjEhAFrfabacPIQdh98",
                    requestTokenUrl: new Uri("https://api.twitter.com/oauth/request_token"),
                    //https://api.twitter.com/oauth/authorize
                    authorizeUrl: new Uri("https://api.twitter.com/oauth/authorize"),
                    accessTokenUrl: new Uri("https://api.twitter.com/oauth/access_token"),
                    callbackUrl: new Uri("https://oauth.vk.com/blank.html"));

                auth.AllowCancel = true;

                auth.Completed += (s, ee) =>
                {
                    if (!ee.IsAuthenticated)
                    {
                        ts.SetResult(0);
                        return;
                    }

                    var twitterCtx = GetTwitterContext();

                    var accounts =
                        from acct in twitterCtx.Account
                        where acct.Type == AccountType.VerifyCredentials
                        select acct;

                    LinqToTwitter.Account account = accounts.SingleOrDefault();

                    twitterUser = account.User;

                    #region unused requests

                    //var searchResponses = (from search in ctx.Search
                    //											 where search.Type == SearchType.Search
                    //											 && search.Query == searchText
                    //											 select search).SingleOrDefault();

                    //var tweets = from tweet in searchResponses.Statuses
                    //						 select new Message
                    //						 {
                    //							 Value = tweet.Text,
                    //							 Id = tweet.TweetIDs,
                    //							 ImageUri = tweet.User.ProfileImageUrl,
                    //							 UserName = tweet.User.ScreenNameResponse,
                    //							 Name = tweet.User.Name,
                    //							 CreatedAt = tweet.CreatedAt,
                    //							 ReTweets = tweet.RetweetCount,
                    //							 Favorite = tweet.FavoriteCount.Value
                    //						 };

                    //var followers = (from follower in twitterCtx.Friendship
                    //								 where follower.Type == FriendshipType.FollowersList &&
                    //											 follower.UserID == "3620214675"
                    //								 select follower).SingleOrDefault();

                    #endregion

                    string uid       = twitterUser.UserIDResponse;
                    string firstName = twitterUser.ScreenNameResponse;

                    TwitterData.TwitterUser twUser = new TwitterData.TwitterUser();
                    twUser.ConsumerKey      = twitterCtx.Authorizer.CredentialStore.ConsumerKey;
                    twUser.ConsumerSecret   = twitterCtx.Authorizer.CredentialStore.ConsumerSecret;
                    twUser.OAuthToken       = twitterCtx.Authorizer.CredentialStore.OAuthToken;
                    twUser.OAuthTokenSecret = twitterCtx.Authorizer.CredentialStore.OAuthTokenSecret;

                    twUser.UserID     = ulong.Parse(uid);
                    twUser.ScreenName = firstName;

                    resultUser = new User()
                    {
                        FirstName     = firstName,
                        Uid           = uid,
                        SerializeInfo = JsonConvert.SerializeObject(twUser),
                        SocialNetwork = enSocialNetwork.Twitter
                    };

                    ts.SetResult(0);
                };

                var intent = auth.GetUI(Forms.Context);
                Forms.Context.StartActivity(intent);
                await ts.Task;
            }
            catch (Exception)
            {
            }
            return(resultUser);
        }
コード例 #12
0
        private static async Task <DataIUser> LoginToVk()
        {
            IUser user = null;

            try
            {
                TaskCompletionSource <int> ts = new TaskCompletionSource <int>();

                var auth = new OAuth2Authenticator(
                    clientId: "5042701",
                    scope: "offline,messages,friends",
                    authorizeUrl: new Uri("https://oauth.vk.com/authorize"),
                    redirectUrl: new Uri("https://oauth.vk.com/blank.html"));

                auth.AllowCancel = true;

                auth.Completed += (s, ee) =>
                {
                    if (!ee.IsAuthenticated)
                    {
                        ts.SetResult(0);
                        return;
                    }

                    var request = new OAuth2Request("GET", new Uri("https://api.vk.com/method/users.get"), null, ee.Account);
                    request.GetResponseAsync().ContinueWith(t =>
                    {
                        if (t.IsCompleted)
                        {
                            Token          = ee.Account.Properties["access_token"].ToString();
                            string account = ee.Account.Serialize();
                            Account        = ee.Account;

                            var response = t.Result.GetResponseText();
                            var users    = JsonConvert.DeserializeObject <XamarinSocialApp.Droid.Data.VkData.VkUsers>(response);

                            string uid       = users.response[0].uid;
                            string firstName = users.response[0].first_name;
                            string lastName  = users.response[0].last_name;

                            user = new User()
                            {
                                FirstName     = firstName,
                                LastName      = lastName,
                                Uid           = uid,
                                SerializeInfo = Account.Serialize(),
                                SocialNetwork = enSocialNetwork.VK
                            };

                            ts.SetResult(0);
                        }
                        else
                        {
                            ts.SetResult(0);
                            return;
                        }
                    }, UIScheduler);
                };

                var intent = auth.GetUI(Forms.Context);
                Forms.Context.StartActivity(intent);
                await ts.Task;
            }
            catch (Exception)
            {
            }
            return(user);
        }