Ejemplo n.º 1
0
        public IActionResult CoinJoin([FromBody] CoinJoinRequest request)
        {
            var          roundId = Global.StateMachine.RoundId;
            TumblerPhase phase   = TumblerPhase.Signing;

            try
            {
                if (Global.StateMachine.Phase != TumblerPhase.Signing || !Global.StateMachine.AcceptRequest)
                {
                    return(new ObjectResult(new FailureResponse {
                        Message = "Wrong phase"
                    }));
                }

                if (string.IsNullOrWhiteSpace(request.UniqueId))
                {
                    return(new BadRequestResult());
                }

                Global.StateMachine.FindAlice(request.UniqueId, throwException: true);
                AssertPhase(roundId, phase);

                return(new ObjectResult(new CoinJoinResponse
                {
                    Transaction = Global.StateMachine.UnsignedCoinJoinHex
                }));
            }
            catch (Exception ex)
            {
                return(new ObjectResult(new FailureResponse {
                    Message = ex.Message
                }));
            }
        }
Ejemplo n.º 2
0
        public async Task <CoinJoinResponse> PostCoinJoinAsync(CoinJoinRequest request, CancellationToken cancel)
        {
            using (await _asyncLock.LockAsync())
            {
                string requestJsonString = JsonConvert.SerializeObject(request);
                var    content           = new StringContent(
                    requestJsonString,
                    Encoding.UTF8,
                    "application/json");

                HttpResponseMessage response = await PostAsync("coinjoin", content, cancel);

                if (!response.IsSuccessStatusCode)
                {
                    throw new HttpRequestException(response.StatusCode.ToString());
                }
                string responseString = await response.Content.ReadAsStringAsync();

                AssertSuccess(responseString);

                return(JsonConvert.DeserializeObject <CoinJoinResponse>(responseString));
            }
        }