public static Buddy MapToBuddyModel(this BuddyRequest request)
 {
     return(new Buddy
     {
         MainUserId = request.MainUserId,
         BuddyUserId = request.BuddyUserId
     });
 }
示例#2
0
        public async Task EditBuddyRequestAsync(int receivingGeneralUserId, int requestingGeneralUserId, BuddyRequestState state)
        {
            BuddyRequest buddyRequest = _databaseContext.BuddyRequests
                                        .Where(buddy =>
                                               buddy.ReceivingGeneralUserId == receivingGeneralUserId &&
                                               buddy.RequestingGeneralUserId == requestingGeneralUserId)
                                        .FirstOrDefault() ?? throw new ArgumentException($"No buddy request from user {requestingGeneralUserId}.");

            buddyRequest.RequestState = state;
            await _databaseContext.SaveChangesAsync();
        }
        /// <summary>
        /// Initiate "I'm not your buddy guy" banter
        /// </summary>
        /// <param name="duration">Duration in miliseconds on how long the banter should last</param>
        /// <returns></returns>
        public async Task StartBuddyGuy(long duration)
        {
            using (var call = buddyGuyClient.ImNotYour())
            {
                Stopwatch stopwatch = Stopwatch.StartNew();
                Console.WriteLine($"Enjoy {duration/1000} seconds of banter :)");

                BuddyRequest request = new BuddyRequest {
                    Message = "friend"
                };

                Console.WriteLine($"Client: You'll regret this day {request.Message}");

                // Initiate stream with first request
                await call.RequestStream.WriteAsync(request);

                // Define what to do when response is received
                var responseReaderTask = Task.Run(async() =>
                {
                    while (await call.ResponseStream.MoveNext())
                    {
                        // Receive answer from server
                        Console.WriteLine($"Server: I'm not your {request.Message} {call.ResponseStream.Current.Message}");

                        await Task.Delay(1000);

                        if (stopwatch.ElapsedMilliseconds < duration)
                        {
                            // Prepare new request
                            request = new BuddyRequest {
                                Message = BuddyGuyDictionary[call.ResponseStream.Current.Message]
                            };
                            Console.WriteLine($"Client: I'm not your {call.ResponseStream.Current.Message} {request.Message}");

                            await call.RequestStream.WriteAsync(request);
                        }
                        else
                        {
                            Console.WriteLine($"{duration/1000} seconds have passed .. stopping the banter");

                            // Close request stream to notify server that there are no more requests
                            await call.RequestStream.CompleteAsync();
                        }
                    }
                });

                // Start listening for responses
                await responseReaderTask;
            }

            Console.WriteLine("\r\nPress ENTER to return to main menu");
            Console.ReadLine();
        }
示例#4
0
        public bool IsExistingBuddyRequest(int generalUserId1, int generalUserId2)
        {
            // TODO: See if rejected requests can be requested again
            BuddyRequest existingBuddyRequest = _databaseContext.BuddyRequests
                                                .Where(buddy =>
                                                       (buddy.ReceivingGeneralUserId == generalUserId1 && buddy.RequestingGeneralUserId == generalUserId2) ||
                                                       (buddy.ReceivingGeneralUserId == generalUserId2 && buddy.RequestingGeneralUserId == generalUserId1) &&
                                                       (buddy.RequestState != BuddyRequestState.Rejected)
                                                       )
                                                .FirstOrDefault();

            return(existingBuddyRequest != default);
        }
示例#5
0
        private void ReceiveMessageHandler()
        {
            while (true)
            {
                try
                {
                    var result = _messManager.FetchLongNotification(_seq + 1);
                    //logger.Info("Send long Notification request");
                    //if (_debug) logger.Info("Request seq: " + (_seq + 1));

                    JObject o = JObject.Parse(result.Trim());
                    JArray  a = JArray.Parse(o["responses"].ToString());
                    for (int i = 0; i < a.Count; i++)
                    {
                        try // message
                        {
                            o = JObject.Parse(a[i].ToString());
                            var message = JObject.Parse(o["message"].ToString());
                            var mNewSeq = int.Parse(message["sequence"].ToString());

                            if (mNewSeq > _seq)
                            {
                                _seq = mNewSeq;
                            }
                            Message messObj = new Message(message["sender"].ToString(), message["receiver"].ToString(),
                                                          message["msg"].ToString(), mNewSeq);
                            //logger.Info("============================================");
                            //logger.Info("Received an message from " + messObj.Sender + ": " + messObj.Msg);
                            //logger.Info("============================================");
                            ProcessRequest(messObj);
                        }
                        catch (Exception e) { }

                        try
                        {
                            //requestBuddy
                            var requestBuddy = JObject.Parse(o["buddyAuthorize"].ToString());
                            var rbNewSeq     = int.Parse(requestBuddy["sequence"].ToString());
                            if (rbNewSeq > _seq)
                            {
                                _seq = rbNewSeq;
                            }
                            BuddyRequest buddyReq =
                                new BuddyRequest(_fetchData, _signManager, rbNewSeq, requestBuddy["sender"].ToString(),
                                                 requestBuddy["receiver"].ToString());
                            buddyReq.ResponseContact(true, "");
                            //logger.Info("============================================");
                            //logger.Info("Received add friend request from " + buddyReq.Sender);
                            //logger.Info("============================================");
                        }
                        catch (Exception e) { }
                    }
                }
                catch (Exception e)
                {
                    if (_debug)
                    {
                        //logger.Info(e.Message);
                    }
                    if (e.Message.Contains("(403)"))
                    {
                        if (_debug)
                        {
                            //logger.Info("============================================");
                            //logger.Info("Re-LogOn");
                            //logger.Info("============================================");
                        }
                        LogOn();
                        return;
                    }
                }
                Thread.Sleep(5000);
            }
        }
示例#6
0
 public HttpResponseMessage Create(BuddyRequest request)
 {
     _unitOfWork.BuddyRepository.Insert(request.MapToBuddyModel());
     _unitOfWork.Save();
     return(new HttpResponseMessage(HttpStatusCode.OK));
 }