示例#1
0
        public BitPoker.Models.IResponse Get(BitPoker.Models.IRequest request)
        {
            BitPoker.Models.Messages.RPCResponse response = new BitPoker.Models.Messages.RPCResponse()
            {
                Id = request.Id
            };

            switch (request.Method.ToUpper())
            {
            case "GetPlayers":
                response.Result = this.playerRepo.All();
                break;

            case "GetTables":
                response.Result = this.tableRepo.All();
                break;

            default:
                response.Error = new BitPoker.Models.Messages.Code()
                {
                    code    = "-32601",
                    message = "method not found"
                };
                break;
            }

            return(response);
        }
示例#2
0
        public BitPoker.Models.IResponse Post(BitPoker.Models.IRequest model)
        {
            BitPoker.Models.Messages.RPCResponse response = new BitPoker.Models.Messages.RPCResponse()
            {
                Id = model.Id
            };

            if (model.Method == "AddPlayer")
            {
                BitPoker.Models.Messages.AddPlayerRequest request = model.Params as BitPoker.Models.Messages.AddPlayerRequest;

                //need to include timestamp too
                Boolean valid = true; // base.Verify(request.BitcoinAddress, model.Id.ToString(), model.Signature);

                if (valid)
                {
                    _repo.Add(request.Player);
                    return(response);
                }
                else
                {
                    response.Error = "invalid siganture";
                    return(response);
                }
            }
            else
            {
                response.Error = "invalid method";
                return(response);
            }
        }
示例#3
0
 public void DisplayIRequest(BitPoker.Models.IRequest request)
 {
     if (request == null)
     {
         throw new ArgumentNullException("request");
     }
     else
     {
         _displayIMessageDelegate(request);
     }
 }
示例#4
0
        public void Post(BitPoker.Models.IRequest request)
        {
            if (request.Method == "AddTableRequest")
            {
                BitPoker.Models.Messages.AddTableRequest model = request.Params as BitPoker.Models.Messages.AddTableRequest;
                Boolean valid = true; //base.Verify(model.BitcoinAddress, model.ToString(), request.Signature

                if (!valid)
                {
                    throw new Exceptions.SignatureNotValidException();
                }
                else
                {
                    _repo.Add(model.Table);
                }
            }
            else
            {
                throw new NotImplementedException();
            }
        }
示例#5
0
        public BitPoker.Models.IResponse Post(BitPoker.Models.IRequest request)
        {
            BitPoker.Models.Messages.RPCResponse response = new BitPoker.Models.Messages.RPCResponse()
            {
                Id = request.Id
            };

            switch (request.Method.ToUpper())
            {
            case "POST SMALL BLIND":
            case "SMALL BLIND":
            case "SB":
                AddSmallBlind(request.Params as BitPoker.Models.Messages.ActionMessage);
                break;

            case "POST BIG BLIND":
            case "BIG BLIND":
            case "BB":
                //AddBigBlind(request);
                break;
            }

            //NOTE:  THIS IS WHERE THE STUB AI LOGIC SHOULD EXIST.
            //
            //if (MemoryCache.Default.Contains(message.TableId.ToString()))
            //{
            //    Models.Hand.Table table = (Models.Hand.Table)MemoryCache.Default[message.TableId.ToString()];

            //    if (table != null)
            //    {
            //        ////Alice pub key
            //        //String key = "041FA97EFD760F26E93E91E29FDDF3DDDDD3F543841CF9435BDC156FB73854F4BF22557798BA535A3EE89A62238C5AFC7F8BF1FA0985DC4E1A06C25209BAB78BD1";
            //        //Byte[] aliceKeyAsBytes = NBitcoin.DataEncoders.Encoders.Hex.DecodeData(key);
            //        //NBitcoin.PubKey aliceKey = new NBitcoin.PubKey(aliceKeyAsBytes);

            //        //Byte[] userKeyAsBytes = NBitcoin.DataEncoders.Encoders.Hex.DecodeData(buyInRequest.PubKey);
            //        //NBitcoin.PubKey userKey = new NBitcoin.PubKey(userKeyAsBytes);

            //        //var scriptPubKey = NBitcoin.PayToMultiSigTemplate.Instance.GenerateScriptPubKey(2, new[] { aliceKey, userKey });
            //    }
            //}



            //BitcoinPubKeyAddress address = new BitcoinPubKeyAddress(request.BitcoinAddress);
            //bool verified = address.VerifyMessage(request.ToString(), request.Signature);

            //if (verified != true)
            //{
            //    throw new Exceptions.SignatureNotValidException();
            //}
            //else
            //{
            //    //Some API
            //    var hand = this.handRepo.Find(request.HandId);

            //    foreach(BitPoker.Models.Messages.ActionMessage previousAction in hand.History)
            //    {
            //        //verify
            //    }

            //    var lastAction = hand.History.Last();
            //    String[] allowedAction = new String[1];

            //    switch (lastAction.Action.ToUpper())
            //    {
            //        case "POST SMALL BLIND":
            //        case "SMALL BLIND":
            //        case "SB":
            //            allowedAction[0] = "BIG BLIND";
            //            break;

            //        case "POST BIG BLIND":
            //        case "BIG BLIND":
            //        case "BB":
            //            break;
            //    }

            //    switch(request.Action.ToUpper())
            //    {
            //        case "POST SMALL BLIND":
            //        case "SMALL BLIND":
            //        case "SB":

            //            break;
            //        case "POST BIG BLIND":
            //        case "BIG BLIND":
            //        case "BB":
            //            AddBigBlind(request);
            //            break;
            //    }

            //    //Now notify next player for their action:
            //    hand = this.handRepo.Find(request.HandId);
            //    lastAction = hand.History.Last();

            //    String bitcoinAddress = lastAction.BitcoinAddress;
            //    var player = hand.Players[hand.PlayerToAct];
            //}

            return(response);
        }
示例#6
0
        public void SendRequest(BitPoker.Models.IRequest request)
        {
            String json = Newtonsoft.Json.JsonConvert.SerializeObject(request);

            SendMessage(json);
        }