public DirectMessageItem(DirectMessage target, bool sentByMe)
        {
            this.Dm = target;
            if (sentByMe)
            {
                this.UserData = target.Recipient;
            }
            else
            {
                this.UserData = target.Sender;
            }
            this.ScreenName   = this.UserData.ScreenName;
            this.Name         = this.UserData.Name;
            this.IconUrl      = this.UserData.ProfileImageUrl;
            this.IsLockedUser = this.UserData.IsProtected;
            this.Time         = target.CreatedAt.LocalDateTime;
            this.Text         = WebUtility.HtmlDecode(target.Text);

            if (target.Entities.Media != null)
            {
                foreach (MediaEntity me in target.Entities.Media)
                {
                    ContentsItem ci = new ContentsItem(me.MediaUrl);
                    this.contentsItemList.Add(ci);
                }
            }
        }
 public void Put(int id, [FromBody] DirectMessage value)
 {
     _context.SaveChanges();
     _context.DirectMessages.Remove(_context.DirectMessages.FirstOrDefault(fr => fr.Id == id));
     _context.DirectMessages.Add(value);
     _context.SaveChanges();
 }
Beispiel #3
0
        public void DirectMessage_Constructor_Parses_Json()
        {
            var dmJson = JsonMapper.ToObject(DirectMessagesResponse);

            var dm = new DirectMessage(dmJson);

            Assert.AreEqual(new DateTimeOffset(2012, 7, 22, 18, 38, 09, new TimeSpan(0L)).DateTime, dm.CreatedAt);
            Assert.AreEqual(15411837ul, dm.SenderID);
            Assert.AreEqual("JoeMayo", dm.SenderScreenName);
            Assert.IsNotNull(dm.Sender);
            Assert.AreEqual(16761255ul, dm.RecipientID);
            Assert.AreEqual("Linq2Tweeter", dm.RecipientScreenName);
            Assert.IsNotNull(dm.Recipient);
            Assert.AreEqual(227110300510461952ul, dm.IDResponse);
            Assert.AreEqual("227110300510461952", dm.IDString);
            Assert.AreEqual("Testing entities from @JoeMayo : http://t.co/Q1CQHi2 #entitytest", dm.Text);
            Entities entities = dm.Entities;

            Assert.IsNotNull(entities);
            List <UserMentionEntity> userMentions = entities.UserMentionEntities;

            Assert.IsNotNull(userMentions);
            Assert.IsTrue(userMentions.Any());
            UserMentionEntity usrMention = userMentions.FirstOrDefault();

            Assert.IsNotNull(usrMention);
            Assert.AreEqual("Joe Mayo", usrMention.Name);
        }
        public DirectMessageViewModel(DirectMessage directMessage, long userId)
        {
            Model = directMessage;

            BackgroundBrush = "Default";
            if (directMessage.Recipient.Id == userId)
            {
                BackgroundBrush = "Mention";
            }
            else if (directMessage.Sender.Id == userId)
            {
                BackgroundBrush = "MyTweet";
            }

            CreatedAt       = directMessage.CreatedAt.ToLocalTime().ToString(CultureInfo.CurrentCulture);
            Text            = directMessage.Text;
            ScreenName      = directMessage.Sender.ScreenName;
            Name            = directMessage.Sender.Name;
            ProfileImageUrl = string.IsNullOrWhiteSpace(directMessage.Sender.ProfileImageUrl)
                ? "http://localhost/"
                : directMessage.Sender.ProfileImageUrl;
            Id       = directMessage.Id;
            Entities = directMessage.Entities;

            MediaVisibility = directMessage.Entities.Media.Count != 0;
            MediaEntities   = new List <MediaEntityViewModel>();
            foreach (var mediaEntity in directMessage.Entities.Media)
            {
                MediaEntities.Add(new MediaEntityViewModel(mediaEntity, directMessage.PossiblySensitive));
            }

            EntitiesList = new List <EntityViewModel>();
            if (directMessage.Entities.Urls != null && directMessage.Entities.HashTags != null &&
                directMessage.Entities.UserMentions != null)
            {
                foreach (var urlEntity in directMessage.Entities.Urls)
                {
                    EntitiesList.Add(new EntityViewModel(urlEntity));
                }
                foreach (var hashTagEntity in directMessage.Entities.HashTags)
                {
                    EntitiesList.Add(new EntityViewModel(hashTagEntity));
                }
                foreach (var userMentionEntity in directMessage.Entities.UserMentions)
                {
                    EntitiesList.Add(new EntityViewModel(userMentionEntity));
                }
            }

            RecipientName            = directMessage.Recipient.Name;
            RecipientProfileImageUrl = string.IsNullOrWhiteSpace(directMessage.Recipient.ProfileImageUrl)
                ? "http://localhost/"
                : directMessage.Recipient.ProfileImageUrl;
            RecipientScreenName = directMessage.Recipient.ScreenName;

            IsMyTweet = directMessage.Sender.Id == userId;

            Notice  = Notice.Instance;
            Setting = SettingService.Setting;
        }
Beispiel #5
0
    // This function sets the current DM user
    public void setUser(User user)
    {
        // Populate the user's profile picture
        StartCoroutine(setDMUserProfilePic(Utilities.cleanProfileImageURLForUser(user)));
        DMUsername.text = "@" + user.ScreenName;
        DMName.text     = user.Name;

        string otherUser = user.ScreenName;

        // Load all of the DMs between the current user and the selected user
        List <DirectMessage> dms = authHandler.makeTwitterAPICall(
            () => authHandler.Interactor.buildDMConversation(otherUser));

        // Get the newest message
        DirectMessage latestMessage = dms.OrderByDescending((arg) => arg.CreatedAt).First();

        LastMessageText.text = latestMessage.Sender.ScreenName + " - (" + Utilities.ElapsedTime(latestMessage.CreatedAt.DateTime)
                               + ") - " + latestMessage.Text;

        // Populate the previous and next buttons with the number of users in each direction
        LastDMUser.GetComponentInChildren <Text>().text = "< (" + authHandler.makeTwitterAPICall(() => authHandler.Interactor.getDmUsersNavigatable().getNumNewerObjects()) + ") newer";
        NextDMUser.GetComponentInChildren <Text>().text = "(" + authHandler.makeTwitterAPICall(() => authHandler.Interactor.getDmUsersNavigatable().getNumOlderObjects()) + ") older >";

        // Determine if there are any newer users. If there aren't, disable the button
        Boolean lastButtonEnabled = authHandler.makeTwitterAPICall(() => authHandler.Interactor.getDmUsersNavigatable().hasNewerObject());

        LastDMUser.enabled      = lastButtonEnabled;    // Disable the button for clicking
        LastDMUser.interactable = lastButtonEnabled;    // Disable the button for highlighting

        // Determine if there are any older users. If there aren't, disable the button
        Boolean nextButtonEnabled = authHandler.makeTwitterAPICall(() => authHandler.Interactor.getDmUsersNavigatable().hasOlderObject());

        NextDMUser.enabled      = nextButtonEnabled;    // Disable the button for clicking
        NextDMUser.interactable = nextButtonEnabled;    // Disable the button for highlighting
    }
Beispiel #6
0
        protected async Task <MessageViewModel> CreateViewModel(DirectMessage m)
        {
            var vm = new MessageViewModel(m, Context, Configuration, ViewServiceRepository);
            await vm.LoadDataAsync();

            return(vm);
        }
Beispiel #7
0
        /// <summary>
        /// Messageリストビューに DirectMessage を追加する
        /// </summary>
        /// <param name="addStatus">表示するダイレクトメッセージ</param>
        private void AddMessageToListView(DirectMessage message)
        {
            string date = string.Empty;

            if (DateTime.Today <= message.CreatedAt)
            {
                TimeSpan span = DateTime.Now.Subtract(message.CreatedAt);
                if (0 <= span.Minutes && span.Minutes < 1 && span.Hours == 0)
                {
                    date = string.Format(stringResource.GetString("SecAgo"), span.Seconds.ToString());
                }
                else if (0 <= span.Hours && span.Hours < 1 && span.Days == 0)
                {
                    date = string.Format(stringResource.GetString("MinAgo"), span.Minutes.ToString());
                }
                else
                {
                    date = string.Format(stringResource.GetString("HourAgo"), span.Hours.ToString());
                }
            }
            else
            {
                date = message.CreatedAt.ToString("d", null);
            }

            string[] str = { message.SenderScreenName, message.Text, date };

            ListViewItem item = new ListViewItem(str);

            item.Tag = message;
            messageTwitterListView.Items.Add(item);
        }
Beispiel #8
0
        public ActionResult <ApiResponse <DirectMessageModel> > NewMessageAdd([FromBody] CreateDirectMessageModel model)
        {
            try
            {
                var onlineId = this._userService.GetOnlineUser(this.HttpContext);

                if (onlineId == null)
                {
                    return(Json(ApiResponse.WithError("Not Authority")));
                }

                DirectMessageModel result = null;

                var newMessage = new DirectMessage();
                newMessage.Message    = model.Message;
                newMessage.SenderId   = model.SenderId;
                newMessage.ReceiverId = model.ReceiverId;
                newMessage.IsDeleted  = 0;

                this._directMessageService.AddNewMessage(newMessage);

                result = this._directMessageService.GetById(newMessage.Id);
                return(Json(ApiResponse <DirectMessageModel> .WithSuccess(result)));
            }
            catch (Exception exp)
            {
                return(Json(ApiResponse <DirectMessageModel> .WithError(exp.ToString())));
            }
        }
Beispiel #9
0
        public StreamingMessage(CoreTweet.Streaming.StreamingMessage m)
        {
            switch (m.Type)
            {
            case CoreTweet.Streaming.MessageType.Create:
                var tweet = m as CoreTweet.Streaming.StatusMessage;
                Type   = MessageType.Create;
                Status = new Status(tweet.Status);
                break;

            case CoreTweet.Streaming.MessageType.DirectMesssage:
                var directMessage = m as CoreTweet.Streaming.DirectMessageMessage;
                Type          = MessageType.DirectMesssage;
                DirectMessage = new DirectMessage(directMessage.DirectMessage);
                break;

            case CoreTweet.Streaming.MessageType.Event:
                var eventMessage = m as CoreTweet.Streaming.EventMessage;
                Type         = MessageType.Event;
                EventMessage = new EventMessage(eventMessage);
                break;

            case CoreTweet.Streaming.MessageType.DeleteStatus:
                var deleteStatus = m as CoreTweet.Streaming.DeleteMessage;
                Type            = MessageType.DeleteStatus;
                DeletedStatusId = deleteStatus.Id;
                break;

            case CoreTweet.Streaming.MessageType.DeleteDirectMessage:
                var deleteDirectMessage = m as CoreTweet.Streaming.DeleteMessage;
                Type = MessageType.DeleteDirectMessage;
                DeletedDirectMessageId = deleteDirectMessage.Id;
                break;
            }
        }
Beispiel #10
0
        public async Task <IEnumerable <MessageDto> > GetDirectMessagesAsync(string userId, string chatId, string last, int count = 20)
        {
            var chat = _directChatGR.GetDbSet().Where(x => x.Id == chatId && (x.User1Id == userId || x.User2Id == userId)).FirstOrDefault();

            if (chat == null)
            {
                throw new ClientException("inc-chatid");
            }

            DirectMessage message = null;

            if (last != null)
            {
                message = await _directMessageGR.GetDbSet().Where(x => x.Id == last && x.ChatId == chatId).FirstOrDefaultAsync();

                if (message == null)
                {
                    throw new ClientException("inc-message-id", last);
                }
            }

            return(_mapper.Map <IEnumerable <DirectMessage>, IEnumerable <MessageDto> >(
                       await _directMessageGR.GetDbSet()
                       .Where((x) => x.ChatId == chatId && (message == null || x.Date < message.Date))
                       .OrderByDescending((x) => x.Date)
                       .Take(count)
                       .ToArrayAsync()
                       ).Select(x => {
                x.Sender = _userService.GetShortDto(x.Sender.Id);
                return x;
            }));
        }
Beispiel #11
0
        private void HandleDirectMessage(DirectMessageDto directMessageDto)
        {
            if (!AuthService.IsLoggedIn(_user))
            {
                Communication.SendError(_webSocket, "You must be logged in to send direct message");
                Log.Warning("Not logged in user tried to send direct message");
                return;
            }

            var receiver      = AuthService.GetUserFromUsername(directMessageDto.Receiver);
            var directMessage = new DirectMessage
            {
                CreatedAt = DateTimeOffset.Now,
                Sender    = _user.UserId,
                Receiver  = receiver.UserId,
                Text      = directMessageDto.Text
            };

            // Tries to save the direct message in the database
            if (MessageService.SaveDirectMessage(directMessage))
            {
                // Check if the user is currently connected to the server
                if (_connectedClient.ContainsKey(receiver))
                {
                    MessageService.SendDirectMessage(
                        directMessage,
                        _connectedClient[receiver]
                        );
                }

                Communication.SendSuccess(_webSocket);
            }
        }
Beispiel #12
0
        static async Task NewLongDirectMessageAsync(TwitterContext twitterCtx)
        {
            string messageOver140Characters =
                string.Join("-", Enumerable.Repeat("XXXX", 35)) + " - " + DateTime.Now;
            DirectMessage message =
                await twitterCtx.NewDirectMessageAsync("Linq2Twitr", messageOver140Characters);

            DirectMessage dmResponse =
                await
                    (from dm in twitterCtx.DirectMessage
                    where dm.Type == DirectMessageType.Show &&
                    dm.ID == message.IDResponse &&
                    dm.FullText == true        // required for full text, otherwise text truncates to 140
                    select dm)
                .SingleOrDefaultAsync();

            if (dmResponse != null &&
                dmResponse.Recipient != null &&
                dmResponse.Sender != null)
            {
                Console.WriteLine(
                    "From: {0}\nTo:  {1}\nMessage: {2}",
                    dmResponse.Sender.Name,
                    dmResponse.Recipient.Name,
                    dmResponse.Text);
            }
        }
Beispiel #13
0
 public MessageCacheEntry(DirectMessage message)
 {
     Data      = JsonConvert.SerializeObject(message);
     Sender    = message.SenderID;
     Recipient = message.RecipientID;
     Id        = message.GetMessageId();
 }
        public void ProcessResults_Replaces_Input_Params_For_SentBy_And_SentTo()
        {
            const ulong SinceID    = 1;
            const ulong MaxID      = 2;
            const int   Page       = 3;
            const int   Count      = 4;
            const ulong ID         = 5;
            const bool  SkipStatus = true;

            var dmReqProc = new DirectMessageRequestProcessor <DirectMessage>
            {
                BaseUrl    = "https://api.twitter.com/1/",
                Type       = DirectMessageType.SentBy,
                SinceID    = SinceID,
                MaxID      = MaxID,
                Page       = Page,
                Count      = Count,
                ID         = ID,
                SkipStatus = SkipStatus
            };

            List <DirectMessage> dms = dmReqProc.ProcessResults(TestQueryResponse);

            DirectMessage dm = dms.First();

            Assert.AreEqual(SinceID, dm.SinceID);
            Assert.AreEqual(MaxID, dm.MaxID);
            Assert.AreEqual(Page, dm.Page);
            Assert.AreEqual(Count, dm.Count);
            Assert.AreEqual(ID, dm.ID);
            Assert.AreEqual(SkipStatus, SkipStatus);
        }
Beispiel #15
0
        public async Task <Message> SendToFriendAsync(Guid friendshipId, string message)
        {
            var senderId   = identityService.GetCurrentUserId();
            var friendship = await context.Friendships
                             .Include(x => x.User1)
                             .Include(x => x.User2)
                             .CustomSingleAsync(f => f.Id == friendshipId);

            if (friendship.User1Id != senderId && friendship.User2Id != senderId)
            {
                throw new UnauthorizedAccessException("You are not a member of this friendship.");
            }

            var directMessage = new DirectMessage
            {
                Id         = Guid.NewGuid(),
                Sender     = senderId == friendship.User1Id ? friendship.User1 : friendship.User2,
                Friendship = friendship,
                Text       = message,
                Timestamp  = DateTime.UtcNow
            };

            context.DirectMessages.Add(directMessage);
            await context.SaveChangesAsync();

            var sentMessage = mapper.Map <Message>(directMessage);
            await notificationService.NotifyAsync(friendship.User1Id == senderId?friendship.User2.UserName : friendship.User1.UserName,
                                                  client => client.ReceiveDirectMessage(friendship.Id, sentMessage));

            return(sentMessage);
        }
Beispiel #16
0
 public TweetEventArgs(DirectMessage directMessage, long userId, List <string> parameter, bool streaming = false)
 {
     Type          = TypeEnum.DirectMessage;
     DirectMessage = directMessage;
     UserId        = userId;
     Parameter     = parameter;
     Streaming     = streaming;
 }
Beispiel #17
0
 public DirectMessageModel(DirectMessage directMessage)
 {
     this.Id         = directMessage.Id;
     this.Message    = directMessage.Message;
     this.SenderId   = directMessage.SenderId;
     this.ReceiverId = directMessage.ReceiverId;
     this.IsDeleted  = directMessage.IsDeleted;
 }
 public void Insert(DirectMessage message)
 {
     using (IDbConnection dbConnection = this.OpenConnection())
     {
         dbConnection.Execute("INSERT INTO DirectMessage (Message, SenderId, ReceiverId, IsDeleted) VALUES(@Message, @SenderId, @ReceiverId, @IsDeleted)", message);
         message.Id = dbConnection.ExecuteScalar <int>("SELECT last_insert_rowid()");
     }
 }
Beispiel #19
0
 private void messagesDirectMessageMenuItem_Click(object sender, EventArgs e)
 {
     if (messageTwitterListView.SelectedIndices.Count > 0 &&
         messageTwitterListView.Items[messageTwitterListView.SelectedIndices[0]].Tag is DirectMessage)
     {
         DirectMessage message = (DirectMessage)messageTwitterListView.Items[messageTwitterListView.SelectedIndices[0]].Tag;
         doingTextBox.Text = string.Format("D {0} {1}", message.SenderScreenName, doingTextBox.Text);
     }
 }
Beispiel #20
0
        public async Task DestroyDirectMessageAsync_Returns_Deleted_DM()
        {
            const ulong Id  = 1;
            var         ctx = InitializeTwitterContext();

            DirectMessage actual = await ctx.DestroyDirectMessageAsync(Id, true);

            Assert.AreEqual(189086715040903168ul, actual.IDResponse);
        }
Beispiel #21
0
        public void DestroyDirectMessage_Returns_Deleted_DM()
        {
            const string Id  = "1";
            var          ctx = InitializeTwitterContext();

            DirectMessage actual = ctx.DestroyDirectMessage(Id, true);

            Assert.Equal(189086715040903168ul, actual.IDResponse);
        }
        // test helpers

        private void AssertSingleDirectMessage(DirectMessage message)
        {
            Assert.AreEqual(23456, message.ID);
            Assert.AreEqual("Back at ya", message.Text);
            Assert.AreEqual(14718006, message.Sender.ID);
            Assert.AreEqual("kdonald", message.Sender.ScreenName);
            Assert.AreEqual(255126476, message.Recipient.ID);
            Assert.AreEqual("Rclarkson", message.Recipient.ScreenName);
        }
Beispiel #23
0
        public void NewDirectMessage_Returns_Created_DM()
        {
            const string UserID = "1";
            const string Text   = "Hi";
            var          ctx    = InitializeTwitterContext();

            DirectMessage actual = ctx.NewDirectMessage(UserID, Text);

            Assert.Equal(189086715040903168ul, actual.IDResponse);
        }
        public void DirectMessage_Can_Serialize()
        {
            var dm            = new DirectMessage();
            var stringBuilder = new StringBuilder();

            var writer        = XmlWriter.Create(stringBuilder);
            var xmlSerializer = new XmlSerializer(typeof(DirectMessage));

            xmlSerializer.Serialize(writer, dm);
        }
Beispiel #25
0
        public async Task NewDirectMessageAsync_WithScreenName_ReturnsCreated_DM()
        {
            const string ScreenName = "JoeMayo";
            const string Text       = "Hi";
            var          ctx        = InitializeTwitterContext();

            DirectMessage actual = await ctx.NewDirectMessageAsync(ScreenName, Text);

            Assert.AreEqual(189086715040903168ul, actual.IDResponse);
        }
Beispiel #26
0
        public async Task NewDirectMessageAsync_Returns_Created_DM()
        {
            const string UserID = "1";
            const string Text   = "Hi";
            var          ctx    = InitializeTwitterContext();

            DirectMessage actual = await ctx.NewDirectMessageAsync(UserID, Text);

            Assert.AreEqual(189086715040903168ul, actual.IDResponse);
        }
 /// <summary>
 /// Creates a new instance of the <see cref="DirectMessageViewModel"/> class from a direct message entity.
 /// </summary>
 /// <param name="entity">The direct message entity.</param>
 /// <returns>The view model.</returns>
 public static DirectMessageViewModel FromEntity(DirectMessage entity)
 {
     return(new DirectMessageViewModel
     {
         Id = entity.Id,
         From = ApplicationUserViewModel.FromEntity(entity.From),
         To = ApplicationUserViewModel.FromEntity(entity.To),
         Read = entity.Read,
         Text = entity.Text
     });
 }
        public IActionResult PostNotification([FromBody] DirectMessageViewModel directMessageInfo)
        {
            List <BL.Models.ErrorInfo> errorList = new List <BL.Models.ErrorInfo>();
            Guid directMessageId = Guid.NewGuid();

            var  recipient   = directMessageInfo.Recipient;
            Guid?toContactId = null;

            if (recipient != Guid.Empty)
            {
                Boolean noUsersFound = true;

                toContactId = _faciTechDbContext.Contact.Where(c => c.Id == recipient & c.Inactive == false).Select(c => c.Id).SingleOrDefault();

                if (toContactId == null)
                {
                    errorList.Add(new BL.Models.ErrorInfo
                    {
                        Description = "User not found - " + recipient
                    });
                    return(new ValidationErrorResult(new BL.Models.ApiResponse(BL.Models.ApiStatus.Error, null, errorList)));
                }
                else
                {
                    noUsersFound = false;

                    var directMessage = new DirectMessage()
                    {
                        Id            = directMessageId,
                        FromContactId = base._contactId,
                        ToContactId   = (Guid)toContactId,
                        Created       = DateTime.UtcNow,
                        CreatedBy     = base._userId,
                        Updated       = DateTime.UtcNow,
                        UpdatedBy     = base._userId,
                        Subject       = directMessageInfo.Subject,
                        Body          = directMessageInfo.Body
                    };
                    _faciTechDbContext.DirectMessage.Add(directMessage);

                    _faciTechDbContext.SaveChanges();
                    return(new ObjectCreatedResult("directMessage", directMessageId));
                }
            }
            else
            {
                errorList.Add(new BL.Models.ErrorInfo
                {
                    Code        = "ERR001",
                    Description = "No receipients provided in the notification request.",
                });
                return(new ValidationErrorResult(new BL.Models.ApiResponse(BL.Models.ApiStatus.Error, null, errorList)));
            }
        }
Beispiel #29
0
        public void then_should_contain_tweets_for_direct_messages()
        {
            _tweets.Count.ShouldEqual(_directMessageCount);

            for (int i = 0; i < _tweets.Count; i++)
            {
                DirectMessage message = _directMessages[i];
                Tweet         tweet   = _tweets[i];

                tweet.ShouldEqual(message.ToTweet());
            }
        }
Beispiel #30
0
        protected override void Context()
        {
            _directMessages = new DirectMessageCollection();

            for (int i = 1; i <= _directMessageCount; i++)
            {
                var directMessage = new DirectMessage {
                    Id = i
                };
                _directMessages.Insert(0, directMessage);
            }
        }
		/// <summary>
		/// json 形式の文字列を Status オブジェクトに変換することを試みます。
		/// </summary>
		/// <param name="json">変換する json 形式の文字列。</param>
		/// <param name="status">変換に成功した場合、変換された Status オブジェクトが格納されます。変換に失敗した場合は null が格納されます。</param>
		/// <returns>変換に成功した場合は true、それ以外の場合は false。</returns>
		internal bool TryParse(dynamic json, out DirectMessage status)
		{
			try
			{
				status = this.Parse(json);
			}
			catch (TwitterException ex)
			{
				status = null;
				ex.Write();
			}

			return status != null;
		}
Beispiel #32
0
        private void RequestCallback(RestRequest rrqRequest, RestResponse rrsResponse, object objUserState)
        {
            try
            {
                StreamReader srReader = new StreamReader(rrsResponse.ContentStream, Encoding.UTF8);
                string sCurLine;

                do
                {
                    sCurLine = srReader.ReadLine().Trim();
                } while ((sCurLine == "") && (!srReader.EndOfStream));

                JsonDocument jdFinal = JsonParser.GetParser().ParseString(sCurLine);

                if (jdFinal != null)
                {
                    if (jdFinal.Root.IsNode())
                    {
                        if (jdFinal.Root.ToNode().ContainsKey("friends"))
                        {
                            //this is the friends list that's sent at the beginning of each userstream connection
                            APIReturn.SynchronizeInvoke(Receive, this, jdFinal, ReceiveType.FriendsList);
                        }
                        else if (jdFinal.Root.ToNode().ContainsKey("retweeted"))
                        {
                            Status stNewStatus = new Status(jdFinal.Root.ToNode());

                            if (stNewStatus.IsReply && stNewStatus.ReplyNames.Contains(m_oaCredentials.ClientUsername))
                                APIReturn.SynchronizeInvoke(Receive, this, jdFinal, ReceiveType.Reply);
                            else
                                APIReturn.SynchronizeInvoke(Receive, this, jdFinal, ReceiveType.Tweet);
                        }
                        else if (jdFinal.Root.ToNode().ContainsKey("recipient_id") && jdFinal.Root.ToNode().ContainsKey("sender_id"))
                        {
                            DirectMessage dmNewMessage = new DirectMessage(jdFinal.Root.ToNode());
                            APIReturn.SynchronizeInvoke(Receive, this, jdFinal, ReceiveType.DirectMessage);
                        }

                        //also need to add OnDelete for when a tweet gets deleted
                    }
                }
            }
            catch(Exception e)
            {
                MessageBox.Show("An unknown Twitter API error has occurred (user streams). " + e.Message, "API Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
Beispiel #33
0
        public ActionResult Send()
        {
            string displayname = Request.Form["displayname"];
            string msg = Request.Form["message"];

            ua = new UserAccount(displayname);
            mu = Membership.GetUser();

            if (string.IsNullOrEmpty(msg) ||
                BootBaronLib.AppSpec.DasKlub.BOL.
                BlockedUser.IsBlockedUser(ua.UserAccountID, Convert.ToInt32(mu.ProviderUserKey))
                )
            {
                return RedirectToAction("Reply", new { @userName = displayname });
            }

            DirectMessage dm = new DirectMessage();

            //dm.GetMostRecentSentMessage(Convert.ToInt32(mu.ProviderUserKey));

            //DateTime dbtime = Utilities.GetDataBaseTime();

            //TimeSpan tsLastPst = dbtime.Subtract(dm.CreateDate);

            //if (tsLastPst.TotalSeconds < 5 && tsLastPst.TotalSeconds > 0)
            //{
            //    return RedirectToAction("Reply", new { @userName = displayname });
            //}

            dm = new DirectMessage();
            dm.IsRead = false;
            dm.FromUserAccountID = Convert.ToInt32(mu.ProviderUserKey);
            dm.ToUserAccountID = ua.UserAccountID;
            dm.Message = msg;
            dm.CreatedByUserID = Convert.ToInt32(mu.ProviderUserKey);

            dm.Create();

            string language = Utilities.GetCurrentLanguageCode();
            // change language for message to

            uad = new UserAccountDetail();
            uad.GetUserAccountDeailForUser(ua.UserAccountID);

            Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(uad.DefaultLanguage);
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(uad.DefaultLanguage);

            StringBuilder sb = new StringBuilder();

            sb.Append(BootBaronLib.Resources.Messages.Hello);
            sb.Append(",");
            sb.AppendLine(Environment.NewLine);
            sb.AppendLine(Environment.NewLine);
            sb.AppendFormat("{0}: ", BootBaronLib.Resources.Messages.From);
            sb.Append(BootBaronLib.Configs.GeneralConfigs.SiteDomain);
            sb.Append("/");
            sb.Append(mu.UserName);
            sb.AppendLine(Environment.NewLine);
            sb.AppendFormat("{0}: ", BootBaronLib.Resources.Messages.Message);
            sb.AppendLine(msg);
            sb.AppendLine(Environment.NewLine);
            sb.AppendFormat("{0}: {1}", BootBaronLib.Resources.Messages.SignIn, BootBaronLib.Configs.GeneralConfigs.SiteDomain);
            sb.AppendLine(Environment.NewLine);

            if (uad.EmailMessages)
            {
                Utilities.SendMail(ua.EMail,
                    BootBaronLib.Resources.Messages.From + ": " + mu.UserName, sb.ToString());
            }

            Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(language);
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);

            return RedirectToAction("Reply", new { @userName = displayname });
        }
Beispiel #34
0
        /// <summary>
        /// Gets direct messages for the user
        /// </summary>
        /// <returns>Collection of direct messages</returns>
        public DirectMessageCollection RetrieveMessages(string since)
        {
            DirectMessageCollection messages = new DirectMessageCollection();

            string url = DirectMessagesUrl + Format;

            if (!string.IsNullOrEmpty(since))
            {
                DateTime sinceDate;
                DateTime.TryParse(since, out sinceDate);

                // Go back a minute to compensate for latency.
                sinceDate = sinceDate.AddMinutes(-1);
                string sinceDateString = sinceDate.ToString(twitterSinceDateFormat);
                url += "?since=" + sinceDateString;
            }

            HttpWebRequest request = CreateTwitterRequest(url);

            try
            {
                // Get the Response
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    // Get the response stream
                    StreamReader reader = new StreamReader(response.GetResponseStream());

                    // Load the response data into a XmlDocument
                    XmlDocument doc = new XmlDocument();
                    doc.Load(reader);

                    // Get statuses with XPath
                    XmlNodeList nodes = doc.SelectNodes("/direct-messages/direct_message");

                    foreach (XmlNode node in nodes)
                    {
                        DirectMessage message = new DirectMessage();
                        message.Id = double.Parse(node.SelectSingleNode("id").InnerText);
                        message.Text = HttpUtility.HtmlDecode(node.SelectSingleNode("text").InnerText);

                        string dateString = node.SelectSingleNode("created_at").InnerText;
                        if (!string.IsNullOrEmpty(dateString))
                        {
                            message.DateCreated = DateTime.ParseExact(
                                dateString,
                                twitterCreatedAtDateFormat,
                                CultureInfo.GetCultureInfoByIetfLanguageTag("en-us"), DateTimeStyles.AllowWhiteSpaces);
                        }

                        XmlNode senderNode = node.SelectSingleNode("sender");
                        User sender = CreateUser(senderNode);
                        message.Sender = sender;

                        XmlNode recipientNode = node.SelectSingleNode("recipient");
                        User recipient = CreateUser(recipientNode);
                        message.Recipient = recipient;

                        messages.Add(message);
                    }
                }
            }
            catch (WebException webExcp)
            {
                ParseWebException(webExcp);
            }
            return messages;
        }
        public ActionResult RequestApproval(int contentID)
        {
            var content = new Content(contentID)
            {
                CurrentStatus = Convert.ToChar(SiteEnums.ContentStatus.P.ToString()),
                UpdatedByUserID = Convert.ToInt32(_mu.ProviderUserKey)
            };
            content.Set();

            var dm = new DirectMessage { IsRead = false };
            if (_mu != null) dm.FromUserAccountID = Convert.ToInt32(_mu.ProviderUserKey);
            var admin = new UserAccount(GeneralConfigs.AdminUserName);

            dm.ToUserAccountID = admin.UserAccountID;
            dm.Message = "Content To Approve: " + content.PreviewLink;
            if (_mu != null)
            {
                var currentUserId = Convert.ToInt32(_mu.ProviderUserKey);

                // ignore low quality users
                if (currentUserId == 18136) return RedirectToAction("Articles");

                dm.CreatedByUserID = currentUserId;
                dm.Create();
            }

            var uad = new UserAccountDetail();
            uad.GetUserAccountDeailForUser(admin.UserAccountID);

            if (uad.EmailMessages)
            {
                _mail.SendMail(
                    AmazonCloudConfigs.SendFromEmail,
                    admin.EMail, string.Format("{0}: {1}", Messages.From, _mu.UserName), dm.Message);
            }

            return RedirectToAction("Articles");
        }
        public DirectMessageCollection RetrieveMessages(long? since)
        {
            if (!IsLoggedIn()) return null;
            var messages = new DirectMessageCollection();

            ITwitterDirectMessagesReceived request = CreateRequest().DirectMessages().Received();
            if (since.HasValue)
                request = request.Since(since.Value);
            else
                request = request.Take(50);

            foreach (TwitterDirectMessage msg in request.Request().AsDirectMessages())
            {
                var message = new DirectMessage
                                  {
                                      Id = msg.Id,
                                      Text = msg.Text,
                                      DateCreated = msg.CreatedDate
                                  };
                User sender = CreateUser(msg.Sender);
                message.Sender = sender;
                User recipient = CurrentlyLoggedInUser;
                message.Recipient = recipient;

                messages.Add(message);
            }
            ;

            return messages;
        }
		private DirectMessage ParseCore(StatusId id, dynamic djson, List<Action> after)
		{
			#region DEBUG build only
#if DEBUG
			after.Add(() => JsonMonitor.DirectMessages.Data.Add(djson.ToString()));
#endif
			#endregion

			// ============================================================================================
			// || このメソッド内での一切のロック操作 (またはロック操作を行うメソッドの呼び出し) を禁止します。 ||
			// ============================================================================================

			var result = new DirectMessage
			{
				Id = id,
				Text = djson.text,
				CreatedAt = Helper.ToDateTime(djson.created_at),
			};

			// ユーザー情報なし版の json に対応する? めんどうだから後だ!!
			result.Recipient = TwitterClient.Current.Users.Parse(djson.recipient);
			result.Sender = TwitterClient.Current.Users.Parse(djson.sender);

			if (djson.IsDefined("entities"))
			{
				result.Entities = Entities.ParseCore(djson.entities);
			}

			this.statuses.Add(result.Id, result);

			after.Add(() => this.RaiseAdded(result));

			return result;
		}
Beispiel #38
0
        public ActionResult Send()
        {
            string displayname = Request.Form["displayname"];
            string msg = Request.Form["message"];

            _ua = new UserAccount(displayname);

            if (_mu != null && (string.IsNullOrEmpty(msg) ||
                                Lib.BOL.BlockedUser.IsBlockedUser(_ua.UserAccountID,
                                    Convert.ToInt32(
                                        _mu.ProviderUserKey)))
                )
            {
                return RedirectToAction("Reply", new {@userName = displayname});
            }

            var dm = new DirectMessage {IsRead = false};
            if (_mu != null) dm.FromUserAccountID = Convert.ToInt32(_mu.ProviderUserKey);
            dm.ToUserAccountID = _ua.UserAccountID;
            dm.Message = msg;
            if (_mu != null) dm.CreatedByUserID = Convert.ToInt32(_mu.ProviderUserKey);

            dm.Create();

            var language = Utilities.GetCurrentLanguageCode();

            _uad = new UserAccountDetail();
            _uad.GetUserAccountDeailForUser(_ua.UserAccountID);

            Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(_uad.DefaultLanguage);
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(_uad.DefaultLanguage);

            var sb = new StringBuilder();

            sb.Append(Messages.Hello);
            sb.Append(",");
            sb.AppendLine(Environment.NewLine);
            sb.AppendLine(Environment.NewLine);
            sb.AppendFormat("{0}: ", Messages.From);
            sb.Append(GeneralConfigs.SiteDomain);
            sb.Append("/");
            if (_mu != null) sb.Append(_mu.UserName);
            sb.AppendLine(Environment.NewLine);
            sb.AppendFormat("{0}: ", Messages.Message);
            sb.AppendFormat(GeneralConfigs.SiteDomain + "/account/inbox");
            sb.AppendLine(Environment.NewLine);
            sb.AppendFormat("{0}: {1}", Messages.SignIn, GeneralConfigs.SiteDomain);
            sb.AppendLine(Environment.NewLine);

            if (_uad.EmailMessages)
            {
                if (_mu != null)
                    _mail.SendMail(
                        AmazonCloudConfigs.SendFromEmail,
                        _ua.EMail, string.Format("{0}: {1}", Messages.From, _mu.UserName), sb.ToString());
            }

            Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(language);
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);

            return RedirectToAction("Reply", new {@userName = displayname});
        }
Beispiel #39
0
        public ActionResult Register(RegisterModel model)
        {
            if (Utilities.IsSpamIP(Request.UserHostAddress))
            {
                ModelState.AddModelError("", Messages.Invalid + @": " + Messages.Account);
                return View(model);
            }

            if
                (
                Request.Browser.Type == "IE3" ||
                Request.Browser.Type == "IE4" ||
                Request.Browser.Type == "IE5" ||
                Request.Browser.Type == "IE6" ||
                Request.Browser.Type == "IE7" ||
                BlackIPs.IsIPBlocked(Request.UserHostAddress)
                )
            {
                Response.Redirect("http://browsehappy.com/");
                return View();
            }

            if (!GeneralConfigs.EnableSameIP && UserAccount.IsAccountIPTaken(Request.UserHostAddress) &&
                string.IsNullOrEmpty(model.RefUser))
            {
                ModelState.AddModelError("", Messages.Invalid + @": " + Messages.Account);
                return View(model);
            }

            TryUpdateModel(model);

            if (!ModelState.IsValid) return View(model);

            if (!Utilities.IsEmail(model.Email))
            {
                ModelState.AddModelError("", Messages.IncorrectFormat + @": " + Messages.EMail);
                return View();
            }
            if (
                model.UserName.Trim().Contains(" ") ||
                model.UserName.Trim().Contains("?") ||
                model.UserName.Trim().Contains("*") ||
                model.UserName.Trim().Contains(":") ||
                model.UserName.Trim().Contains("/") ||
                model.UserName.Trim().Contains(@"\"))
            {
                ModelState.AddModelError("", Messages.Invalid + @": " + Messages.UserName);
                return View();
            }
            if (model.YouAreID == null)
            {
                ModelState.AddModelError("", Messages.Invalid + @": " + Messages.YouAre);
                return View();
            }

            DateTime dt;

            if (!DateTime.TryParse(model.Year
                                   + "-" + model.Month + "-" + model.Day, out dt))
            {
                ModelState.AddModelError("", Messages.Invalid + @": " + Messages.BirthDate);
                return View();
            }
            if (DateTime.TryParse(model.Year
                                  + "-" + model.Month + "-" + model.Day, out dt))
            {
                if (Utilities.CalculateAge(dt) < GeneralConfigs.MinimumAge)
                {
                    ModelState.AddModelError("", Messages.Invalid + @": " + Messages.BirthDate);
                    return View();
                }
            }

            model.UserName = model.UserName.Replace(":", string.Empty);
            model.UserName = model.UserName.Replace(" ", string.Empty);
            model.UserName = model.UserName.Replace(".", string.Empty);

            MembershipCreateStatus createStatus;

            Membership.CreateUser(model.UserName, model.NewPassword, model.Email, "Q", "A", true, out createStatus);

            if (createStatus == MembershipCreateStatus.Success)
            {
                FormsAuthentication.RedirectFromLoginPage(model.UserName, true);

                var ua = new UserAccount(model.UserName);
                _uad = new UserAccountDetail
                {
                    UserAccountID = ua.UserAccountID,
                    BirthDate = dt,
                    YouAreID = model.YouAreID,
                    DisplayAge = true,
                    DefaultLanguage = Utilities.GetCurrentLanguageCode()
                };

                if (!string.IsNullOrEmpty(model.RefUser))
                {
                    var refUser = new UserAccount(model.RefUser);
                    _uad.ReferringUserID = refUser.UserAccountID;
                }

                _uad.Set();

                var sb = new StringBuilder(100);

                sb.Append(Messages.Hello);
                sb.Append(Environment.NewLine);
                sb.Append(Messages.YourNewAccountIsReadyForUse);
                sb.Append(Environment.NewLine);
                sb.Append(Environment.NewLine);
                sb.AppendFormat("{0}: ", Messages.UserName);
                sb.Append(ua.UserName);
                sb.Append(Environment.NewLine);
                sb.Append(GeneralConfigs.SiteDomain);

                _mail.SendMail(AmazonCloudConfigs.SendFromEmail, ua.EMail, Messages.YourNewAccountIsReadyForUse,
                    sb.ToString());

                // see if this is the 1st user
                var recentUsers = new UserAccounts();
                recentUsers.GetNewestUsers();

                if (recentUsers.Count == 1)
                {
                    var adminRole = new Role(SiteEnums.RoleTypes.admin.ToString());

                    UserAccountRole.AddUserToRole(ua.UserAccountID, adminRole.RoleID);
                }

                var dm = new DirectMessage {IsRead = false};
                var communityManager = new UserAccount(SiteDomain.GetSiteDomainValue(
                                                SiteEnums.SiteBrandType.GRTUR,
                                                Utilities.GetCurrentLanguageCode())
                                            .Trim());

                dm.FromUserAccountID = communityManager.UserAccountID;
                dm.ToUserAccountID = ua.UserAccountID;

                sb = new StringBuilder(100);

                sb.Append(SiteDomain.GetSiteDomainValue(
                    SiteEnums.SiteBrandType.GREET,
                    Utilities.GetCurrentLanguageCode()));

                dm.Message = sb.ToString();

                if (communityManager.UserAccountID != 0)
                {
                    dm.CreatedByUserID = communityManager.UserAccountID;
                }

                dm.Create();

                return RedirectToAction("Home", "Account");
            }
            ModelState.AddModelError(string.Empty, AccountValidation.ErrorCodeToString(createStatus));

            return View(model);
        }
        // test helpers
        	    
        private void AssertSingleDirectMessage(DirectMessage message) 
        {
		    Assert.AreEqual(23456, message.ID);
		    Assert.AreEqual("Back at ya", message.Text);
		    Assert.AreEqual(14718006, message.Sender.ID);
		    Assert.AreEqual("kdonald", message.Sender.ScreenName);
            Assert.AreEqual(255126476, message.Recipient.ID);
		    Assert.AreEqual("Rclarkson", message.Recipient.ScreenName);
	    }
		internal DirectMessageAddedEventArgs(DirectMessage dm)
		{
			this.DirectMessage = dm;
		}
Beispiel #42
0
        protected override void Context()
        {
            _directMessages = new DirectMessageCollection();

            for (int i = 1; i <= _directMessageCount; i++)
            {
                var directMessage = new DirectMessage { Id = i };
                _directMessages.Insert(0, directMessage);
            }
        }
		private void RaiseAdded(DirectMessage dm)
		{
			if (this.Added != null) this.Added(this, new DirectMessageAddedEventArgs(dm));
		}
Beispiel #44
0
    private bool SendClientMessage(long clientId, string messageContent)
    {
      Debug.Log("Sending to ClientId={0} message='{1}'.", clientId, messageContent);
      DirectMessage clientDirectMessage = new DirectMessage();
      clientDirectMessage.Content = messageContent;

      return this.m_localClient.SendMessage(clientId, MessageType.DirectMessage, clientDirectMessage);
    }