コード例 #1
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (Id.Length != 0)
            {
                hash ^= Id.GetHashCode();
            }
            if (FirstPlay != false)
            {
                hash ^= FirstPlay.GetHashCode();
            }
            if (FirstRequest != false)
            {
                hash ^= FirstRequest.GetHashCode();
            }
            if (ParentalApproval != false)
            {
                hash ^= ParentalApproval.GetHashCode();
            }
            if (PermissionGranted != false)
            {
                hash ^= PermissionGranted.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
コード例 #2
0
        public async Task HandleMessageA(FirstRequest message)
        {
            var outbound = new FirstRequestOutbound
            {
                SomeIdentifier = message.SomeIdentifier.ToString()
            };

            _logger.Info($"Forwarding request (type: {outbound.GetType().Name})");
            await _httpClient.PostAsJsonAsync("http://localhost:9022/api/messages/a", outbound);
        }
コード例 #3
0
        public void Should_create_a_default_response_based_on_the_conventions()
        {
            var request = new FirstRequest();
            var conventions = MockRepository.GenerateMock<IConventions>();
            conventions.Stub(c => c.GetResponseTypeFor(request)).Return(typeof(FirstResponse));
            IoC.Container = new Container();
            IoC.Container.RegisterInstance(conventions);

            var interceptorBase = new MockRepository().PartialMock<ConventionBasedInterceptor>();
            var response = interceptorBase.CreateDefaultResponseFor(request);
            Assert.IsType<FirstResponse>(response);
        }
コード例 #4
0
        public void Should_create_a_default_response_based_on_the_conventions()
        {
            var request     = new FirstRequest();
            var conventions = MockRepository.GenerateMock <IConventions>();

            conventions.Stub(c => c.GetResponseTypeFor(request)).Return(typeof(FirstResponse));
            IoC.Container = new Container();
            IoC.Container.RegisterInstance(conventions);

            var interceptorBase = new MockRepository().PartialMock <ConventionBasedInterceptor>();
            var response        = interceptorBase.CreateDefaultResponseFor(request);

            Assert.IsType <FirstResponse>(response);
        }
コード例 #5
0
        public ActionResult <ReturnMessage> SendFirstRequest(FirstRequest firstRequest)
        {
            ReturnMessage returnMessage = new ReturnMessage();

            try
            {
                messageService.SendFirstRequest(firstRequest);
            }
            catch (Exception ex)
            {
                returnMessage.Ret = ex.InnerException.Message;
                return(returnMessage);
            }

            returnMessage.Ret = "successfully";
            return(returnMessage);
        }
コード例 #6
0
        /// <summary>
        /// Полный запрос от ВК
        /// http://localhost:50694/?api_url=https://api.vk.com/api.php&api_id=6206497&api_settings=1&viewer_id=46611989&viewer_type=4&sid=83876255d0fa6f12ed3a2f0d9005692df68ca0348dd1dfbe4d0d52c86ae6ecd01d56b92328a89486bf72f&secret=83d669486c&access_token=bd07a6fc28d0d8491e122703b7090996d2c8b7d5ee52fbcef603ae67d5edc5bb4166effc81fa3b840e602&user_id=0&is_app_user=1&auth_key=972a517ae2939e02e9b3834c97da5a50&language=0&parent_language=0&is_secure=1&ads_app_id=6206497_f18e3a738302567922&api_result=%7B%22response%22%3A%5B%7B%22id%22%3A46611989%2C%22first_name%22%3A%22%D0%9C%D0%B8%D1%88%D0%B0%22%2C%22last_name%22%3A%22%D0%A8%D1%82%D0%B0%D0%BD%D1%8C%D0%BA%D0%BE%22%2C%22nickname%22%3A%22BenyKrik%22%2C%22city%22%3A%7B%22id%22%3A2%2C%22title%22%3A%22%D0%A1%D0%B0%D0%BD%D0%BA%D1%82-%D0%9F%D0%B5%D1%82%D0%B5%D1%80%D0%B1%D1%83%D1%80%D0%B3%22%7D%2C%22country%22%3A%7B%22id%22%3A1%2C%22title%22%3A%22%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F%22%7D%2C%22photo_200%22%3A%22https%3A%5C%2F%5C%2Fpp.userapi.com%5C%2Fc639129%5C%2Fv639129989%5C%2F2ba7f%5C%2FLGwnKIkG1pw.jpg%22%2C%22has_mobile%22%3A1%2C%22online%22%3A0%2C%22status%22%3A%22%D0%AD%D0%B9%2C%20%D0%BF%D1%80%D0%BE%D1%81%D0%BD%D0%B8%D1%81%D1%8C%21%20%D0%9D%D1%83%20%D1%82%D1%8B%20%D0%B8%20%D1%81%D0%BE%D0%BD%D1%8F.%20%D0%A2%D0%B5%D0%B1%D1%8F%20%D0%B4%D0%B0%D0%B6%D0%B5%20%D0%B2%D1%87%D0%B5%D1%80%D0%B0%D1%88%D0%BD%D0%B8%D0%B9%20%D1%88%D1%82%D0%BE%D1%80%D0%BC%20%D0%BD%D0%B5%20%D1%80%D0%B0%D0%B7%D0%B1%D1%83%D0%B4%D0%B8%D0%BB.%20%D0%93%D0%BE%D0%B2%D0%BE%D1%80%D1%8F%D1%82%2C%20%D0%BC%D1%8B%20%D1%83%D0%B6%D0%B5%20%D0%BF%D1%80%D0%B8%D0%BF%D0%BB%D1%8B%D0%BB%D0%B8%20%D0%B2%20%D0%9C%D0%BE%D1%80%D1%80%D0%BE%D0%B2%D0%B8%D0%BD%D0%B4.%20%D0%9D%D0%B0%D1%81%20%D0%B2%D1%8B%D0%BF%D1%83%D1%81%D1%82%D1%8F%D1%82%2C%20%D1%8D%D1%82%D0%BE%20%D1%82%D0%BE%D1%87%D0%BD%D0%BE%21%22%7D%5D%7D&referrer=group&lc_name=135b0cdd&sign=c76f449244e9deac48004ec57e83a275eb2c2f8ea159a8c85fb807ca3dc25457&hash
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <IActionResult> Index(FirstRequest request)
        {
            //TODO обработка запроса
            if (Environment.IsDevelopment())
            {
                if (string.IsNullOrEmpty(request.ApiResultJson))
                {
                    request.ApiResultJson = @"{'response':[{'id':46611989,'first_name':'Миша','last_name':'Штанько','nickname':'BenyKrik','city':{'id':2,'title':'Санкт - Петербург'},'country':{'id':1,'title':'Россия'},'photo_200':'https:\/\/ pp.userapi.com\/ c639129\/ v639129989\/ 2ba7f\/ LGwnKIkG1pw.jpg','has_mobile':1,'online':0,'status':'Эй, проснись!Ну ты и соня.Тебя даже вчерашний шторм не разбудил. Говорят, мы уже приплыли в Морровинд.Нас выпустят, это точно!'}]}";
                }
            }

            var userData = request.ApiResult.Value.UserData;
            var user     = await Unit.Get <User>().FindAsync(_x => _x.Id == userData.Id);

            if (user == null)
            {
                user = new User();
                Unit.Get <User>().Create(user);
            }
            user.Id        = userData.Id;
            user.Avatar    = userData.Photo200;
            user.FirstName = userData.Firstname;
            user.LastName  = userData.Lastname;
            user.LastEnter = DateTime.Now;
            CurrentUser.SetUserData(user);
            HttpContext.Session.Set(nameof(User), CurrentUser);
            await Unit.SaveAsync();


            request.CustomData = new CustomData();
            request.CustomData.IsFamiliarWithBot = CurrentUser.IsFamiliarWithBot;
            request.CustomData.Longitude         = CurrentUser.Longitude;
            request.CustomData.Latitude          = CurrentUser.Latitude;
            request.CustomData.IdCity            = CurrentUser.IdCity;



            return(View(request));
        }
コード例 #7
0
        public void SendFirstRequest(FirstRequest firstRequest)
        {
            Message newMessage = new Message();

            newMessage.Applicant    = firstRequest.Applicant;
            newMessage.Recipient    = firstRequest.Recipient;
            newMessage.SupplyId     = firstRequest.SupplyId;
            newMessage.NeedId       = firstRequest.NeedId;
            newMessage.Time         = firstRequest.Time;
            newMessage.MessageType  = "First";
            newMessage.MeaasgeState = "N";
            newMessage.Items        = new List <Item>();
            for (int i = 0; i < firstRequest.Items.Count; i++)
            {
                newMessage.Items.Add(new Item());
            }
            for (int i = 0; i < firstRequest.Items.Count; i++)
            {
                newMessage.Items[i].ItemName  = firstRequest.Items[i].ItemName;
                newMessage.Items[i].ItemCount = firstRequest.Items[i].ItemCount;
            }

            platformContext.Messages.Add(newMessage);
            for (int i = 0; i < firstRequest.Items.Count; i++)
            {
                Exchange exchange = new Exchange();
                exchange.Requestor  = firstRequest.Applicant;
                exchange.Supplicant = firstRequest.Recipient;
                exchange.NeedId     = firstRequest.NeedId;
                exchange.SupplyId   = firstRequest.SupplyId;
                exchange.ItemName   = firstRequest.Items[i].ItemName;
                exchange.ItemCount  = Convert.ToString(firstRequest.Items[i].ItemCount);
                exchange.Type       = "请求";
                exchange.Time       = firstRequest.Time;
                platformContext.Exchanges.Add(exchange);
            }
            platformContext.SaveChanges();
        }
コード例 #8
0
        public async Task <int> GetPlayerCount(CancellationToken token)
        {
            using (var client = new TcpClient())
            {
                client.Connect(ServerAddress, Constants.DefaultPort);

                using (var stream = client.GetStream())
                {
                    var firstRequest = new FirstRequest()
                    {
                        RequestType = RequestType.PlayerCount,
                    };
                    var firstRequestJson = JsonConvert.SerializeObject(firstRequest);
                    Debug.Log($"firstRequestJson sent  '{firstRequestJson}'");
                    var firstRequestData = Encoding.UTF8.GetBytes(firstRequestJson);
                    stream.Write(firstRequestData, 0, firstRequestData.Length);

                    var payerCountRequest = new PlayerCountRequest()
                    {
                        RequestType = RequestType.PlayerCount,
                    };
                    var payerCountRequestJson = JsonConvert.SerializeObject(payerCountRequest);
                    var payerCountRequestData = Encoding.UTF8.GetBytes(payerCountRequestJson);
                    await stream.WriteAsync(payerCountRequestData, 0, payerCountRequestData.Length, token);

                    var  responseSize = Response.GetSize();
                    var  responseData = new byte[responseSize];
                    int  triesCount   = 0;
                    bool success      = false;
                    do
                    {
                        try
                        {
                            await Task.Delay(_timeBetweenTries, token);

                            stream.Read(responseData, 0, responseData.Length);
                            success = true;
                        }
                        catch (Exception ex)
                        {
                            Debug.Log(ex.ToString());
                            triesCount++;
                            success = false;
                        }
                        finally
                        {
                        }
                    }while (!success || triesCount > maxTries);

                    if (!success)
                    {
                        throw new IOException("cannot connect to server");
                    }

                    string responseJson = System.Text.Encoding.UTF8.GetString(responseData);
                    var    response     = JsonConvert.DeserializeObject <Response>(responseJson);

                    return(response.PlayerCount);
                }
            }
        }
コード例 #9
0
ファイル: MarakeshServer.cs プロジェクト: Arsalansul/marakesh
        private void ProcessServerLoop(TcpListener server, CancellationToken token)
        {
            while (!token.IsCancellationRequested)
            {
                Debug.Log("Ожидание подключений... ");

                try
                {
                    using (TcpClient client = server.AcceptTcpClient())
                    {
                        Debug.Log("Подключен клиент. Выполнение запроса...");

                        using (NetworkStream stream = client.GetStream())
                        {
                            var firstRequestSize = FirstRequest.GetSize();
                            var buffer           = new byte[firstRequestSize];
                            Debug.Log($"firstRequestSize {firstRequestSize}");
                            stream.Read(buffer, 0, buffer.Length);
                            string result = System.Text.Encoding.UTF8.GetString(buffer);
                            Debug.Log($"firstRequest string '{result}'");
                            var firstRequest = JsonConvert.DeserializeObject <FirstRequest>(result);

                            var response = new Response();

                            switch (firstRequest.RequestType)
                            {
                            case RequestType.PlayerCount:

                                var playerCountRequestSize = PlayerCountRequest.GetSize();
                                buffer = new byte[playerCountRequestSize];

                                stream.Read(buffer, 0, buffer.Length);
                                result = System.Text.Encoding.UTF8.GetString(buffer);
                                var playerCountRequest = JsonConvert.DeserializeObject <PlayerCountRequest>(result);



                                response.PlayerCount = 4;
                                break;

                            default:
                                Debug.Assert(false);
                                Debug.Break();
                                break;
                            }

                            var responseJson = JsonConvert.SerializeObject(response);
                            var responseData = Encoding.UTF8.GetBytes(responseJson);
                            Debug.Log($"Отправлено сообщение: {responseData}");
                            stream.Write(responseData, 0, responseData.Length);

                            Debug.Log($"Отправлено сообщение: {responseData}");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Debug.Log($"exception on server: {ex}");
                    throw;
                }
                finally
                {
                    //TODO: check that does not block. I know it is not, but check
                    Thread.Sleep(1000);
                }
            }
        }