public async Task <IActionResult> SearchCoin(Search search) { string sig = search.Signature; search.Signature = null; if (!CoinTools.ECVerify(JsonConvert.SerializeObject(search), sig, search.PublicKey)) { return(NotFound()); } MintDBContext db = new MintDBContext(); List <Guid> mc = await db.MintHolders.Where(x => x.PublicKey == search.PublicKey).Select(x => x.MintCoinId).ToListAsync(); List <MintCoin> mccoins = new List <MintCoin>(); List <Coin> coins = new List <Coin>(); for (int i = 0; i < mc.Count; i++) { mccoins.Add(await db.MintCoins.Where(x => x.Id == mc[i]).Include(x => x.Holders).SingleAsync()); } for (int i = 0; i < mccoins.Count; i++) { Coin coin = new Coin(); coin.CountryCode = mccoins[i].CountryCode; coin.CurrencyCode = mccoins[i].CurrencyCode; coin.PurposeCode = mccoins[i].PurposeCode; coin.HolderHash = mccoins[i].HolderHash; coin.Holders = new List <Holder>(); coin.IssueDate = mccoins[i].IssueDate; coin.IssuingAuthority = mccoins[i].IssuingAuthority; coin.IssuingHash = mccoins[i].IssuingHash; coin.SerialNumber = mccoins[i].SerialNumber; coin.Value = mccoins[i].Value; for (int j = 0; j < mccoins[i].Holders.Count; j++) { Holder holder = new Holder(); holder.PublicKey = mccoins[i].Holders[j].PublicKey; coin.Holders.Add(holder); } coins.Add(coin); } return(Ok(coins)); }
private static async Task <Coin> TransferCoin(Guid serialNumber, string issuingAuthority, List <string> holdersPublicKey) { Transfer transfer = new Transfer(); transfer.SerialNumber = serialNumber; transfer.IssuingAuthority = issuingAuthority; transfer.Timestamp = DateTime.UtcNow; transfer.Holders = new List <Holder>(); for (int i = 0; i < holdersPublicKey.Count; i++) { transfer.Holders.Add(new Holder() { PublicKey = holdersPublicKey[i] }); } transfer.Signature = CoinTools.ECSign(JsonConvert.SerializeObject(transfer), privateECKey); using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://localhost:44341/api/Transfer")) { request.Content = new StringContent(JsonConvert.SerializeObject(transfer)); request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); request.Headers.Add("x-api-key", "86A5DFC6-0EB7-4249-B32A-366F2F8F9A51"); HttpResponseMessage response = null; try { using (HttpClient client = new HttpClient()) response = await client.SendAsync(request); if (response != null) { return(JsonConvert.DeserializeObject <Coin>(await response.Content.ReadAsStringAsync())); } else { throw new Exception(); } } catch (Exception ex) { Console.WriteLine(ex.Message); throw ex; } } }
private static async Task <List <Coin> > SearchCoin(string publicKey) { Search search = new Search(); search.PublicKey = publicKey; search.Timestamp = DateTime.UtcNow; search.Signature = CoinTools.ECSign(JsonConvert.SerializeObject(search), transferPrivateKey); using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://localhost:44341/api/Search")) { request.Content = new StringContent(JsonConvert.SerializeObject(search)); request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); request.Headers.Add("x-api-key", "86A5DFC6-0EB7-4249-B32A-366F2F8F9A51"); HttpResponseMessage response = null; try { using (HttpClient client = new HttpClient()) response = await client.SendAsync(request); if (response != null) { return(JsonConvert.DeserializeObject <List <Coin> >(await response.Content.ReadAsStringAsync())); } else { throw new Exception(); } } catch (Exception ex) { Console.WriteLine(ex.Message); throw ex; } } }