public async Task RoundTrip_Success() { var logger = new Mock <ILogger <AssetResponseStore> >(); var env = new Mock <IWebHostEnvironment>().SetupAllProperties(); env.Setup(e => e.ContentRootPath).Returns(Environment.CurrentDirectory); string path = Path.Combine(Environment.CurrentDirectory, "WebOptimizerTest"); string filePath = Path.Combine(path, "bucket__cachekey.cache"); var woo = new Mock <IConfigureOptions <WebOptimizerOptions> >(); woo.Setup(o => o.Configure(It.IsAny <WebOptimizerOptions>())) .Callback <WebOptimizerOptions>(o => o.CacheDirectory = path); byte[] body = "*{color:red}".AsByteArray(); var before = new AssetResponse(body, "cachekey"); //var outJson1 = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes<AssetResponse>(before); //var outJson2 = System.Text.Json.JsonSerializer.Serialize<AssetResponse>(before); IAssetResponseStore ars = new AssetResponseStore(logger.Object, env.Object, woo.Object); await ars.AddAsync("bucket", "cachekey", before).ConfigureAwait(false); Assert.True(File.Exists(filePath)); Assert.True(ars.TryGet("bucket", "cachekey", out var after)); Assert.Equal(before.CacheKey, after.CacheKey); Assert.Equal(before.Body, after.Body); await ars.RemoveAsync("bucket", "cachekey").ConfigureAwait(false); Assert.False(File.Exists(filePath)); }
public override async Task <AssetResponse> GetAsset(AssetRequest request, ServerCallContext context) { var validationResult = await _validationService.ValidateAssetAsync(request.AssetId); if (validationResult != null) { return(new AssetResponse { Error = new Error { Code = (int)validationResult.Code, Message = validationResult.Message } }); } var asset = await _assetsService.GetAssetByIdAsync(request.AssetId); var result = new AssetResponse { Payload = _mapper.Map <Asset>(asset) }; return(result); }
public AssetsController(IReloadingManager <AppSettings> settings) { var assetConfig = settings.CurrentValue.ServiceSettings.Asset; if (assetConfig == null) { throw new ArgumentException("Asset property must be set."); } if (assetConfig.Precision < 0) { throw new ArgumentException("Asset precision must be greater than zero."); } if (string.IsNullOrWhiteSpace(assetConfig.AssetId)) { throw new ArgumentException("Asset id cannot be null."); } if (string.IsNullOrWhiteSpace(assetConfig.Name)) { throw new ArgumentException("Asset name cannot be null."); } _assetResponse = new AssetResponse { Accuracy = assetConfig.Precision, AssetId = assetConfig.AssetId, Name = assetConfig.Name }; }
public async Task AssetMiddleware_Cache() { var cssContent = "*{color:red}".AsByteArray(); var pipeline = new AssetPipeline(); var options = new WebOptimizerOptions() { EnableCaching = false }; var asset = new Mock <IAsset>().SetupAllProperties(); asset.SetupGet(a => a.ContentType).Returns("text/css"); asset.SetupGet(a => a.Route).Returns("/file.css"); asset.Setup(a => a.ExecuteAsync(It.IsAny <HttpContext>(), options)) .Returns(Task.FromResult(cssContent)); StringValues values; var response = new Mock <HttpResponse>().SetupAllProperties(); var context = new Mock <HttpContext>().SetupAllProperties(); context.Setup(s => s.Request.Headers.TryGetValue("Accept-Encoding", out values)) .Returns(false); context.Setup(c => c.Response) .Returns(response.Object); context.Setup(c => c.Request.Path).Returns("/file.css"); context.Setup(c => c.Features.Get <IHttpsCompressionFeature>()).Returns((IHttpsCompressionFeature)null); var next = new Mock <RequestDelegate>(); var env = new HostingEnvironment(); var cache = new Mock <IMemoryCache>(); var mcr = new AssetResponse(cssContent, null); object bytes = mcr; cache.Setup(c => c.TryGetValue(It.IsAny <string>(), out bytes)) .Returns(true); pipeline._assets = new ConcurrentDictionary <string, IAsset>(); pipeline._assets.TryAdd(asset.Object.Route, asset.Object); var amo = new Mock <IOptionsSnapshot <WebOptimizerOptions> >(); amo.SetupGet(a => a.Value).Returns(options); var logger = new Mock <ILogger <AssetMiddleware> >(); var builder = new Mock <IAssetBuilder>(); builder.Setup(b => b.BuildAsync(It.IsAny <IAsset>(), context.Object, options)).Returns(Task.FromResult <IAssetResponse>(mcr)); var middleware = new AssetMiddleware(next.Object, pipeline, logger.Object, builder.Object); var stream = new MemoryStream(); response.Setup(r => r.Body).Returns(stream); await middleware.InvokeAsync(context.Object, amo.Object); Assert.Equal("text/css", context.Object.Response.ContentType); Assert.Equal(cssContent, await stream.AsBytesAsync()); Assert.Equal(0, response.Object.StatusCode); }
public async Task AssetMiddleware_NoCache() { string cssContent = "*{color:red}"; var pipeline = new AssetPipeline(); var options = new WebOptimizerOptions() { EnableCaching = false }; var asset = new Mock <IAsset>().SetupAllProperties(); asset.SetupGet(a => a.ContentType).Returns("text/css"); asset.SetupGet(a => a.Route).Returns("/file.css"); asset.Setup(a => a.ExecuteAsync(It.IsAny <HttpContext>(), options)) .Returns(Task.FromResult(cssContent.AsByteArray())); StringValues values; var response = new Mock <HttpResponse>().SetupAllProperties(); var context = new Mock <HttpContext>().SetupAllProperties(); context.Setup(s => s.Request.Headers.TryGetValue("Accept-Encoding", out values)) .Returns(false); context.Setup(c => c.Response) .Returns(response.Object); context.Setup(c => c.Request.Path).Returns("/file.css"); response.SetupGet(c => c.Headers) .Returns(new HeaderDictionary()); var next = new Mock <RequestDelegate>(); var env = new HostingEnvironment(); var cache = new Mock <IMemoryCache>(); var member = pipeline.GetType().GetField("_assets", BindingFlags.NonPublic | BindingFlags.Instance); member.SetValue(pipeline, new List <IAsset> { asset.Object }); var amo = new Mock <IOptionsSnapshot <WebOptimizerOptions> >(); amo.SetupGet(a => a.Value).Returns(options); var mcr = new AssetResponse(cssContent.AsByteArray(), null); var logger = new Mock <ILogger <AssetMiddleware> >(); var builder = new Mock <IAssetBuilder>(); builder.Setup(b => b.BuildAsync(It.IsAny <IAsset>(), context.Object, options)).Returns(Task.FromResult <IAssetResponse>(mcr)); var middleware = new AssetMiddleware(next.Object, pipeline, logger.Object, builder.Object); var stream = new MemoryStream(); response.Setup(r => r.Body).Returns(stream); await middleware.InvokeAsync(context.Object, amo.Object); Assert.Equal("text/css", context.Object.Response.ContentType); Assert.Equal(cssContent.AsByteArray(), await stream.AsBytesAsync()); Assert.Equal(0, response.Object.StatusCode); }
protected override IGameState[] HandleAssetResponse(GameInfo gameInfo, AssetResponse assetResponse) { if (assetResponse == AssetResponse.HasPartnerAlready) { return CreateAlreadyMarriedWindow(gameInfo); } gameInfo.Content.Load<SoundEffect>("Sounds/wedding").Play(); return base.HandleAssetResponse(gameInfo, assetResponse); }
protected override IGameState[] HandleAssetResponse(GameInfo gameInfo, AssetResponse assetResponse) { if (assetResponse == AssetResponse.HasNoPartner) { return CreateNoPartnerWindow(gameInfo); } return base.HandleAssetResponse(gameInfo, assetResponse); }
protected override IGameState[] HandleAssetResponse(GameInfo gameInfo, AssetResponse assetResponse) { if (assetResponse == AssetResponse.HasNoPartner) { return(CreateNoPartnerWindow(gameInfo)); } return(base.HandleAssetResponse(gameInfo, assetResponse)); }
protected override IGameState[] HandleAssetResponse(GameInfo gameInfo, AssetResponse assetResponse) { if (assetResponse == AssetResponse.HasPartnerAlready) { return(CreateAlreadyMarriedWindow(gameInfo)); } gameInfo.Content.Load <SoundEffect>("Sounds/wedding").Play(); return(base.HandleAssetResponse(gameInfo, assetResponse)); }
private NFTInfo ResponseToNFTInfo(AssetResponse response) { NFTInfo ret = NFTInfo.defaultNFTInfo; ret.marketInfo = openSeaMarketInfo; ret.name = response.name; ret.description = response.description; ret.thumbnailUrl = response.image_thumbnail_url; ret.previewImageUrl = response.image_preview_url; ret.originalImageUrl = response.image_original_url; ret.assetLink = response.external_link; ret.marketLink = response.permalink; if (!string.IsNullOrEmpty(response.owner?.address)) { ret.owner = response.owner.address; } if (response.num_sales != null) { ret.numSales = response.num_sales.Value; } if (response.last_sale != null) { ret.lastSaleDate = response.last_sale.event_timestamp; if (response.last_sale.payment_token != null) { ret.lastSaleAmount = PriceToFloatingPointString(response.last_sale); ret.lastSaleToken = new NFT.PaymentTokenInfo() { symbol = response.last_sale.payment_token.symbol }; } } UnityEngine.Color backgroundColor; if (UnityEngine.ColorUtility.TryParseHtmlString("#" + response.background_color, out backgroundColor)) { ret.backgroundColor = backgroundColor; } OrderInfo sellOrder = GetSellOrder(response.sell_orders, response.owner.address); if (sellOrder != null) { ret.currentPrice = PriceToFloatingPointString(sellOrder.current_price, sellOrder.payment_token_contract); ret.currentPriceToken = new NFT.PaymentTokenInfo() { symbol = sellOrder.payment_token_contract.symbol }; } return(ret); }
private static JObject GetFile(AssetAggregate asset) { if (asset == null) { throw new ArgumentNullException(nameof(asset)); } return(AssetResponse.Create(asset.Name, asset.Hash, Constants.VolumeId + "_", asset.Children.Any(), asset.ResourceParentHash, asset.MimeType, asset.ResourceId, asset.AuthPolicyIds, new AssetSecurity(asset.CanRead, asset.CanWrite, asset.IsLocked)).GetJson()); }
public IActionResult Get([Required, FromQuery] int take, [FromQuery] string continuation) { if (take <= 0) { return(BadRequest()); } var assets = new AssetResponse[] { Asset.Dynamic.ToAssetResponse() }; return(Ok(PaginationResponse.From("", assets))); }
protected virtual IGameState[] HandleAssetResponse(GameInfo gameInfo, AssetResponse assetResponse) { switch (assetResponse) { case AssetResponse.AddedSuccessfully: return CreateSuccessWindow(gameInfo); case AssetResponse.CarFull: return CreateCarFullWindow(gameInfo); } throw new NotImplementedException("AssetResponse is not handled correctly."); }
public static JsonElement GetValueOfColumnSecurities(string column, AssetResponse data) { var index = data.securities.columns.IndexOf(column); if (index != -1 && data.securities.data.Count > 0) { return(data.securities.data[0][index]); } return(new JsonElement()); }
public void Setup() { var mockHttp = new MockHttpMessageHandler(); var client = mockHttp.ToHttpClient(); var stockMarketAPI = new StockMarketAPI(client); var stockMarketData = new StockMarketData(stockMarketAPI); TestHelpers.MockStockData(mockHttp); _data = stockMarketData.GetStockData("YNDX").Result; }
static AssetsController() { AssetResponse = new AssetResponse { Accuracy = Constants.EtcAsset.Accuracy, AssetId = Constants.EtcAsset.AssetId, Name = Constants.EtcAsset.Name }; AssetsResponse = new[] { AssetResponse } .ToImmutableList(); }
public void Should_Serialize_Deserialize_AssetResponse_With_Headers() { string cacheKey = "cachekey"; string body = "*{color:red}"; AssetResponse arBase = new AssetResponse(body.AsByteArray(), cacheKey); string key1 = "api-version"; string value1 = "3.0"; arBase.Headers.Add(key1, value1); string key2 = "content-type"; string value2 = "application/json"; arBase.Headers.Add(key2, value2); //string json = "{\"Headers\":{\"api-version\":\"3.0\",\"content-type\":\"application/json\"},\"Body\":\"Kntjb2xvcjpyZWR9\",\"CacheKey\":\"cachekey\"}"; var logger = new Mock <ILogger <AssetResponseStore> >(); var env = new Mock <IWebHostEnvironment>().SetupAllProperties(); string path = Path.Combine(Environment.CurrentDirectory, "WebOptimizerTest"); string filePath = Path.Combine(path, "bucket__cachekey.cache"); var woo = new Mock <IConfigureOptions <WebOptimizerOptions> >(); woo.Setup(o => o.Configure(It.IsAny <WebOptimizerOptions>())) .Callback <WebOptimizerOptions>(o => o.CacheDirectory = path); AssetResponse ar = new AssetResponseStore(logger.Object, env.Object, woo.Object).ParseJson(JsonSerializer.Serialize(arBase)); //using (JsonDocument document = JsonDocument.Parse(JsonSerializer.Serialize(arBase))) //{ // var ck = document.RootElement.GetProperty("CacheKey").GetString(); // var b = document.RootElement.GetProperty("Body").GetString(); // var bytes = JsonSerializer.Deserialize<byte[]>("\"" + b + "\""); // ar = new AssetResponse(bytes,ck); // var headersString = document.RootElement.GetProperty("Headers").GetRawText(); // if (!string.IsNullOrEmpty(headersString)) // { // var headers = JsonSerializer.Deserialize<Dictionary<string, string>>(headersString); // foreach (var d in headers) // { // ar.Headers.Add(d.Key, d.Value); // } // } //} Assert.Equal(cacheKey, ar.CacheKey); Assert.Equal(body.AsByteArray(), ar.Body); Assert.Equal(body, Encoding.ASCII.GetString(ar.Body)); Assert.Equal(arBase.Headers.Count, ar.Headers.Count); Assert.True(ar.Headers.ContainsKey(key1)); Assert.Equal(arBase.Headers[key1], ar.Headers[key1]); Assert.True(ar.Headers.ContainsKey(key2)); Assert.Equal(arBase.Headers[key2], ar.Headers[key2]); }
protected virtual IGameState[] HandleAssetResponse(GameInfo gameInfo, AssetResponse assetResponse) { switch (assetResponse) { case AssetResponse.AddedSuccessfully: return(CreateSuccessWindow(gameInfo)); case AssetResponse.CarFull: return(CreateCarFullWindow(gameInfo)); } throw new NotImplementedException("AssetResponse is not handled correctly."); }
public IActionResult Get([Required, FromQuery] string take, [FromQuery] string continuation) { if (!int.TryParse(take, out var takeInt)) { ModelState.AddModelError(nameof(take), "Should be integer."); return(BadRequest(ModelState)); } var assets = new AssetResponse[] { Asset.Dash.ToAssetResponse() }; return(Ok(PaginationResponse.From("", assets))); }
public AssetResponse ListAssetBaseData(int assetId) { AssetResponse assetResponse = null; List <Report> reports = null; Parallel.Invoke(() => assetResponse = ListAssetResult(assetId).FirstOrDefault(), () => reports = ReportBusiness.List(new int[] { assetId })); if (assetResponse != null) { assetResponse.ReportRecommendationDistribution = ReportBusiness.GetReportRecommendationDistribution(reports); } return(assetResponse); }
public AssetResponse GetAssetData(int assetId) { AssetResponse asset = null; int totalFollowers = 0; Parallel.Invoke(() => asset = ListAssetResult(assetId).FirstOrDefault(), () => totalFollowers = FollowAssetBusiness.GetTotalFollowers(assetId)); if (asset != null) { asset.NumberOfFollowers = totalFollowers; } return(asset); }
/// <summary> /// Gets the specified type. /// </summary> /// <param name="page">The page.</param> /// <param name="type">The type.</param> /// <returns></returns> public AssetResponse Get(int page, string type) { using (var session = _store.OpenSession()) { var response = new AssetResponse(); RavenQueryStatistics stats; switch (type) { case "image": response.Assets = session.Query <Image>() .Statistics(out stats) .OrderByDescending(x => x.DateUploaded) .Skip(page * PageSize) .Take(PageSize).ToArray(); break; case "video": response.Assets = session.Query <Video>() .Statistics(out stats) .OrderByDescending(x => x.DateUploaded) .Skip(page * PageSize) .Take(PageSize).ToArray(); break; case "audio": response.Assets = session.Query <Audio>() .Statistics(out stats) .OrderByDescending(x => x.DateUploaded) .Skip(page * PageSize) .Take(PageSize).ToArray(); break; case "document": response.Assets = session.Query <Document>() .Statistics(out stats) .OrderByDescending(x => x.DateUploaded) .Skip(page * PageSize) .Take(PageSize).ToArray(); break; default: return(Get(0)); } response.SkippedResults = stats.SkippedResults; response.TotalResults = stats.TotalResults; return(response); } }
public IActionResult Get([Required, FromQuery] int take, [FromQuery] string continuation) { if (take < 1) { return(BadRequest(ErrorResponse.Create("Invalid parameter").AddModelError("take", "Must be positive non zero integer"))); } if (!string.IsNullOrEmpty(continuation)) { return(BadRequest(ErrorResponse.Create("Invalid parameter").AddModelError("continuation", "Must be valid continuation token"))); } var assets = new AssetResponse[] { Asset.Stellar.ToAssetResponse() }; return(Ok(PaginationResponse.From("", assets))); }
static AssetsController() { AssetResponse = new AssetResponse { Accuracy = Constants.AssetAccuracy, AssetId = Constants.AssetId, Name = Constants.AssetId }; AssetsResponse = new PaginationResponse <AssetContract> { Continuation = null, Items = new [] { AssetResponse } }; }
public override async Task GetAssets(IAsyncStreamReader <AssetRequest> requestStream, IServerStreamWriter <AssetResponse> responseStream, ServerCallContext context) { while (await requestStream.MoveNext()) { var currentRequest = requestStream.Current; prevRequests.Add(currentRequest); var response = new AssetResponse() { AssetId = currentRequest.Id, Content = Google.Protobuf.ByteString.CopyFrom(FileManager.Assets[currentRequest.Id]) }; await responseStream.WriteAsync(response); } }
public AssetResponse Get(int page) { using (var session = _store.OpenSession()) { var response = new AssetResponse(); RavenQueryStatistics stats; response.Assets = session.Query <Asset, AllAssets>() .Statistics(out stats) .OrderByDescending(x => x.DateUploaded) .Skip(page * PageSize) .Take(PageSize).ToArray(); response.SkippedResults = stats.SkippedResults; response.TotalResults = stats.TotalResults; return(response); } }
public async Task <bool> isProductOnBlockchain(string insuranceProductName) { insuranceProductName = MUtilityClass.removeSpaces(insuranceProductName); var assets = await client.ListAssetsAsync(); assets.AssertOk(); AssetResponse singleAssetResponse = null; foreach (var asset in assets.Result) { singleAssetResponse = asset; if (singleAssetResponse.Name.Equals(insuranceProductName)) { return(true); } } return(false); }
public AssetResponse Get(int page) { var session = StructureMap.ObjectFactory.GetInstance<IDocumentSession>(); var response = new AssetResponse(); RavenQueryStatistics stats; response.Assets = session.Query<Asset, AllAssets>() .Statistics(out stats) .OrderByDescending(x => x.DateUploaded) .Skip(page * PageSize) .Take(PageSize).ToArray(); response.SkippedResults = stats.SkippedResults; response.TotalResults = stats.TotalResults; return response; }
public AssetResponse Get(int page) { using (var session = _store.OpenSession()) { var response = new AssetResponse(); RavenQueryStatistics stats; response.Assets = session.Query<Asset, AllAssets>() .Statistics(out stats) .OrderByDescending(x => x.DateUploaded) .Skip(page * PageSize) .Take(PageSize).ToArray(); response.SkippedResults = stats.SkippedResults; response.TotalResults = stats.TotalResults; return response; } }
IEnumerator INFTMarket.FetchNFTInfo(string assetContractAddress, string tokenId, Action <NFTInfo> onSuccess, Action <string> onError) { string url = string.Format(API_URL_SINGLE_ASSET, assetContractAddress, tokenId); using (UnityWebRequest request = UnityWebRequest.Get(url)) { yield return(request.SendWebRequest()); if (!request.isNetworkError && !request.isHttpError) { AssetResponse response = Utils.FromJsonWithNulls <AssetResponse>(request.downloadHandler.text); onSuccess?.Invoke(ResponseToNFTInfo(response)); } else { onError?.Invoke($"{openSeaMarketInfo.name} error fetching {assetContractAddress}/{tokenId} {request.error}"); } } }
public void Should_Serialize_Deserialize_AssetResponse_Without_Headers() { string cacheKey = "cachekey"; string body = "*{color:red}"; AssetResponse arBase = new AssetResponse(body.AsByteArray(), cacheKey); var logger = new Mock <ILogger <AssetResponseStore> >(); var env = new Mock <IWebHostEnvironment>().SetupAllProperties(); string path = Path.Combine(Environment.CurrentDirectory, "WebOptimizerTest"); string filePath = Path.Combine(path, "bucket__cachekey.cache"); var woo = new Mock <IConfigureOptions <WebOptimizerOptions> >(); woo.Setup(o => o.Configure(It.IsAny <WebOptimizerOptions>())) .Callback <WebOptimizerOptions>(o => o.CacheDirectory = path); AssetResponse ar = new AssetResponseStore(logger.Object, env.Object, woo.Object).ParseJson(JsonSerializer.Serialize(arBase)); Assert.Equal(cacheKey, ar.CacheKey); Assert.Equal(body.AsByteArray(), ar.Body); Assert.Equal(body, Encoding.ASCII.GetString(ar.Body)); Assert.Equal(arBase.Headers.Count, ar.Headers.Count); }
private async Task <string> ResolveUrl(AssetResponse asset, string accessToken, string idToken) { var permissionResponse = await _identityServerUmaClientFactory.GetPermissionClient() .AddByResolution(new PostPermission { ResourceSetId = asset.ResourceId, Scopes = new[] { "read" }, }, _resourceManagerResolverOptions.Authorization.AuthorizationWellKnownConfiguration, accessToken); var umaGrantedToken = await _identityServerClientFactory.CreateAuthSelector() .UseClientSecretPostAuth(_resourceManagerResolverOptions.Authorization.ClientId, _resourceManagerResolverOptions.Authorization.ClientSecret) .UseTicketId(permissionResponse.Content.TicketId, idToken) .ResolveAsync(_resourceManagerResolverOptions.Authorization.AuthorizationWellKnownConfiguration); if (umaGrantedToken.ContainsError) { return(null); } return(asset.Path); }
/// <summary> /// Gets the specified type. /// </summary> /// <param name="page">The page.</param> /// <param name="type">The type.</param> /// <returns></returns> public AssetResponse Get(int page, string type) { var session = StructureMap.ObjectFactory.GetInstance<IDocumentSession>(); var response = new AssetResponse(); RavenQueryStatistics stats; switch (type) { case "image": response.Assets = session.Query<Image>() .Statistics(out stats) .OrderByDescending(x => x.DateUploaded) .Skip(page * PageSize) .Take(PageSize).ToArray(); break; case "video": response.Assets = session.Query<Video>() .Statistics(out stats) .OrderByDescending(x => x.DateUploaded) .Skip(page * PageSize) .Take(PageSize).ToArray(); break; case "audio": response.Assets = session.Query<Audio>() .Statistics(out stats) .OrderByDescending(x => x.DateUploaded) .Skip(page * PageSize) .Take(PageSize).ToArray(); break; case "document": response.Assets = session.Query<Document>() .Statistics(out stats) .OrderByDescending(x => x.DateUploaded) .Skip(page * PageSize) .Take(PageSize).ToArray(); break; default: return Get(0); } response.SkippedResults = stats.SkippedResults; response.TotalResults = stats.TotalResults; return response; }
//internal async Task DoMagic() //{ // // connect to the client... // var client = new MultiChainClient("192.168.40.130", 50001, false, "rpc_username", "rpc_password", "the_chain_name"); // // get some info back... // var info = await client.GetInfoAsync(); // Console.WriteLine("Chain: {0}, difficulty: {1}", info.Result.ChainName, info.Result.Difficulty); //} internal async Task RunAsync() { var client = new MultiChainClient("192.168.40.130", 50001, false, "multichainrpc", "J1Bs45oEms6LRCcUw7CykoZ9ccUCTJbuwfdktk4N7M1Q", "chain_b82037073985329be60ae98e30"); // var client = new MultiChainClient("localhost", 8911, null, null, "chain_2fb1bbf830bf49f6722abc6aae", "493bacb6e18601794a7b99bc2c444decd4e343ef9af8eabddca6d0f64bffd3b3"); //var client = new MultiChainClient("rpc.pbjcloud.com", 443, true, null, null, "chain_4662dcf2e58c1daf3a5a2cf0e0", "23da5aecda55b1dd0613018265a35a0673f73398c571f5e295f9dd2a6ec64fd2"); // get server info... Console.WriteLine("*** getinfo ***"); var info = await client.GetInfoAsync(); info.AssertOk(); Console.WriteLine("Chain: {0}, difficulty: {1}", info.Result.ChainName, info.Result.Difficulty); Console.WriteLine(); // help... Console.WriteLine("*** help ***"); var help = await client.HelpAsync(); help.AssertOk(); Console.WriteLine(help.Result); Console.WriteLine(); // help... Console.WriteLine("*** help ***"); var helpDetail = await client.HelpAsync("getrawmempool"); helpDetail.AssertOk(); Console.WriteLine(helpDetail.Result); Console.WriteLine(); // getgenerate... Console.WriteLine("*** getgenerate ***"); var getGenerate = await client.GetGenerateAsync(); getGenerate.AssertOk(); Console.WriteLine(getGenerate.Result); Console.WriteLine(); // gethashespersec... Console.WriteLine("*** gethashespersec ***"); var getHashesPerSec = await client.GetHashesPerSecAsync(); getHashesPerSec.AssertOk(); Console.WriteLine(getHashesPerSec.Result); Console.WriteLine(); // getmininginfo... Console.WriteLine("*** getmininginfo ***"); var getMiningInfo = await client.GetMiningInfoAsync(); getMiningInfo.AssertOk(); Console.WriteLine(getMiningInfo.Result.Blocks + ", difficulty: " + getMiningInfo.Result.Difficulty); Console.WriteLine(); // getbestblockhash... Console.WriteLine("*** getbestblockhash ***"); var getBestBlockHash = await client.GetBestBlockHashAsync(); getBestBlockHash.AssertOk(); Console.WriteLine(getBestBlockHash.Result); Console.WriteLine(); // getblockcount... Console.WriteLine("*** getblockcount ***"); var getBlockCount = await client.GetBlockCountAsync(); getBlockCount.AssertOk(); Console.WriteLine(getBlockCount.Result); Console.WriteLine(); // getblockcount... Console.WriteLine("*** getblockchaininfo ***"); var getBlockchainInfo = await client.GetBlockchainInfoAsync(); getBlockchainInfo.AssertOk(); Console.WriteLine(getBlockchainInfo.RawJson); Console.WriteLine(); // get peer info... Console.WriteLine("*** getpeerinfo ***"); var peers = await client.GetPeerInfoAsync(); peers.AssertOk(); foreach (var peer in peers.Result) { Console.WriteLine("{0} ({1})", peer.Addr, peer.Handshake); } Console.WriteLine(); // get the address that can issue assets... // create an asset... Console.WriteLine("*** issue ***"); var assetName = "asset_" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, 24); Console.WriteLine("Asset name: " + assetName); var issueAddress = await CreateAddressAsync(client, BlockchainPermissions.Issue | BlockchainPermissions.Receive | BlockchainPermissions.Send); var asset = await client.IssueAsync(issueAddress, assetName, 1000000, 0.1M); asset.AssertOk(); Console.WriteLine("Issue transaction ID: " + asset.Result); Console.WriteLine(); // list the assets... while (true) { Console.WriteLine("*** listassets ***"); var assets = await client.ListAssetsAsync(); assets.AssertOk(); AssetResponse found = null; foreach (var walk in assets.Result) { Console.WriteLine("Name: {0}, ref: {1}", walk.Name, walk.AssetRef); if (walk.Name == assetName) { found = walk; } } Console.WriteLine(); // have we found it? if (string.IsNullOrEmpty(found.AssetRef)) { Console.WriteLine("Asset is not ready - waiting (this can take 30 seconds or more)..."); Thread.Sleep(10000); } else { break; } } // create an address... var recipient = await this.CreateAddressAsync(client, BlockchainPermissions.Send | BlockchainPermissions.Receive); // send with metadata... Console.WriteLine("*** sendwithmetadata ***"); var bs = Encoding.UTF8.GetBytes("Hello, world."); var sendResult = await client.SendWithMetadataAsync(recipient, assetName, 1, bs); sendResult.AssertOk(); Console.WriteLine("Send transaction ID: " + sendResult.Result); Console.WriteLine(); // get it... Console.WriteLine("*** getrawtransaction ***"); var retrieved = await client.GetRawTransactionVerboseAsync(sendResult.Result); retrieved.AssertOk(); Console.WriteLine("ID: {0}", retrieved.Result.TxId); for (var index = 0; index < retrieved.Result.Data.Count; index++) { Console.WriteLine("Data: " + retrieved.Result.Data[index]); var retrievedBs = retrieved.Result.GetDataAsBytes(index); Console.WriteLine("--> " + Encoding.UTF8.GetString(retrievedBs)); } }
internal async Task RunAsync() { var client = new MultiChainClient("192.168.40.130", 50001, false, "multichainrpc", "J1Bs45oEms6LRCcUw7CykoZ9ccUCTJbuwfdktk4N7M1Q", "chain_b82037073985329be60ae98e30"); //var client = new MultiChainClient("localhost", 8911, false, null, null, "chain_600bf49a419e7fb3fa0530de6e", "7ae614be3a222c8ef0f337504d046b46805baaa7f787381db33cb2e1f4b562e6"); //var client = new MultiChainClient("rpc.pbjcloud.com", 443, true, null, null, "chain_4662dcf2e58c1daf3a5a2cf0e0", "23da5aecda55b1dd0613018265a35a0673f73398c571f5e295f9dd2a6ec64fd2"); var isPbj = true; // get info... Console.WriteLine("*** getinfo ***"); var info = await client.GetInfoAsync(); info.AssertOk(); Console.WriteLine("Chain: {0}, difficulty: {1}", info.Result.ChainName, info.Result.Difficulty); Console.WriteLine(); // get server info... if (isPbj) { Console.WriteLine("*** getserverinfo ***"); var serverInfo = await client.GetServerInfoAsync(); serverInfo.AssertOk(); Console.WriteLine("Version: {0}", serverInfo.Result.Version); Console.WriteLine(); } // get info... Console.WriteLine("*** ping ***"); var ping = await client.PingAsync(); ping.AssertOk(); Console.WriteLine(ping.RawJson); Console.WriteLine(); // help... Console.WriteLine("*** help ***"); var help = await client.HelpAsync(); help.AssertOk(); Console.WriteLine(help.Result); Console.WriteLine(); // help... Console.WriteLine("*** help ***"); var helpDetail = await client.HelpAsync("getrawmempool"); helpDetail.AssertOk(); Console.WriteLine(helpDetail.Result); Console.WriteLine(); // getgenerate... Console.WriteLine("*** getgenerate ***"); var getGenerate = await client.GetGenerateAsync(); getGenerate.AssertOk(); Console.WriteLine(getGenerate.Result); Console.WriteLine(); // gethashespersec... Console.WriteLine("*** gethashespersec ***"); var getHashesPerSec = await client.GetHashesPerSecAsync(); getHashesPerSec.AssertOk(); Console.WriteLine(getHashesPerSec.Result); Console.WriteLine(); // getmininginfo... Console.WriteLine("*** getmininginfo ***"); var getMiningInfo = await client.GetMiningInfoAsync(); getMiningInfo.AssertOk(); Console.WriteLine(getMiningInfo.Result.Blocks + ", difficulty: " + getMiningInfo.Result.Difficulty); Console.WriteLine(); // getnetworkhashps... Console.WriteLine("*** getnetworkhashps ***"); var getNetworkHashPs = await client.GetNetworkHashPsAsync(); getNetworkHashPs.AssertOk(); Console.WriteLine(getNetworkHashPs.Result); Console.WriteLine(); //// getblocktemplate... //Console.WriteLine("*** getblocktemplate ***"); //var getBlockTemplate = await client.GetBlockTemplateAsync(); //getBlockTemplate.AssertOk(); //Console.WriteLine(getBlockTemplate.Result); //Console.WriteLine(); // getbestblockhash... Console.WriteLine("*** getbestblockhash ***"); var getBestBlockHash = await client.GetBestBlockHashAsync(); getBestBlockHash.AssertOk(); Console.WriteLine(getBestBlockHash.Result); Console.WriteLine(); // getblockcount... Console.WriteLine("*** getblockcount ***"); var getBlockCount = await client.GetBlockCountAsync(); getBlockCount.AssertOk(); Console.WriteLine(getBlockCount.Result); Console.WriteLine(); // getblockcount... Console.WriteLine("*** getblockchaininfo ***"); var getBlockchainInfo = await client.GetBlockchainInfoAsync(); getBlockchainInfo.AssertOk(); Console.WriteLine(getBlockchainInfo.Result.Description + ", best: " + getBlockchainInfo.Result.BestBlockHash); Console.WriteLine(); // getdifficulty... Console.WriteLine("*** getdifficulty ***"); var getDifficulty = await client.GetDifficultyAsync(); getDifficulty.AssertOk(); Console.WriteLine(getDifficulty.Result); Console.WriteLine(); // get chain tips... Console.WriteLine("*** getchaintips ***"); var getChainTips = await client.GetChainTipsAsync(); getChainTips.AssertOk(); foreach (var tip in getChainTips.Result) { Console.WriteLine("{0}, {1}, {2}", tip.Height, tip.Hash, tip.Status); } Console.WriteLine(); // get mempool info... Console.WriteLine("*** getmempoolinfo ***"); var getMempoolInfo = await client.GetMempoolInfoAsync(); getMempoolInfo.AssertOk(); Console.WriteLine(getMempoolInfo.Result.Size + ", bytes: " + getMempoolInfo.Result.Bytes); Console.WriteLine(); // get block hash... Console.WriteLine("*** getblockhash ***"); var getBlockHash = await client.GetBlockHashAsync(1); getBlockHash.AssertOk(); Console.WriteLine(getBlockHash.Result); Console.WriteLine(); // getblock... Console.WriteLine("*** getblock ***"); var getBlock = await client.GetBlockAsync(getBlockHash.Result); getBlock.AssertOk(); Console.WriteLine(getBlock.Result); Console.WriteLine(); // getblock... Console.WriteLine("*** getblock (verbose) ***"); var getBlockVerbose = await client.GetBlockVerboseAsync(getBlockHash.Result); getBlockVerbose.AssertOk(); Console.WriteLine(getBlockVerbose.Result.Hash + ", nonce: " + getBlockVerbose.Result.Nonce); Console.WriteLine(); // getrawmempool... Console.WriteLine("*** getrawmempool ***"); var getRawMemPool = await client.GetRawMempoolAsync(); getRawMemPool.AssertOk(); Console.WriteLine(getRawMemPool.Result); Console.WriteLine(); // getrawmempool... Console.WriteLine("*** getrawmempool (verbose) ***"); var getRawMemPoolVerbose = await client.GetRawMempoolVerboseAsync(); getRawMemPoolVerbose.AssertOk(); Console.WriteLine(getRawMemPoolVerbose.Result); Console.WriteLine(); // getblockchainpararms... Console.WriteLine("*** getblockchainparams ***"); var getBlockchainParams = await client.GetBlockchainParamsAsync(); getBlockchainParams.AssertOk(); foreach (var key in getBlockchainParams.Result.Keys) { Console.WriteLine("{0}: {1}", key, getBlockchainParams.Result[key]); } Console.WriteLine(); //// getblockchainpararms... //Console.WriteLine("*** getblockchainpararms (displayNames) ***"); //var getBlockchainParams2 = await client.GetBlockchainParamsAsync(new List<string>() { "chain-protocol" }); //getBlockchainParams2.AssertOk(); //foreach (var key in getBlockchainParams2.Result.Keys) // Console.WriteLine("{0}: {1}", key, getBlockchainParams2.Result[key]); //Console.WriteLine(); // get connection count... Console.WriteLine("*** getconnectioncount ***"); var getConnectionCount = await client.GetConnectionCountAsync(); getConnectionCount.AssertOk(); Console.WriteLine(getConnectionCount.Result); Console.WriteLine(); // get network info... Console.WriteLine("*** getnetworkinfo ***"); var getNetworkInfo = await client.GetNetworkInfoAsync(); getNetworkInfo.AssertOk(); Console.WriteLine(getNetworkInfo.Result.Version + ", subversion: " + getNetworkInfo.Result.Subversion); foreach (var network in getNetworkInfo.Result.Networks) { Console.WriteLine(network.Name); } Console.WriteLine(); // get net totals... Console.WriteLine("*** getnettotals ***"); var getNetTotals = await client.GetNetTotalsAsync(); getNetTotals.AssertOk(); Console.WriteLine("Received: {0}, sent: {1}:, time: {2}", getNetTotals.Result.TotalsBytesRecv, getNetTotals.Result.TotalsBytesSent, getNetTotals.Result.TimeMillis); Console.WriteLine(); // get peer info... Console.WriteLine("*** getunconfirmedbalance ***"); var getUnconfirmedBalance = await client.GetUnconfirmedBalanceAsync(); getUnconfirmedBalance.AssertOk(); Console.WriteLine(getUnconfirmedBalance.Result); Console.WriteLine(); // keypool refill... Console.WriteLine("*** keypoolrefill ***"); var keypoolRefill = await client.KeypoolRefillAsync(); keypoolRefill.AssertOk(); Console.WriteLine(keypoolRefill.RawJson); Console.WriteLine(); // get wallet info... Console.WriteLine("*** getwalletinfo ***"); var getWalletInfo = await client.GetWalletInfoAsync(); getWalletInfo.AssertOk(); Console.WriteLine(getWalletInfo.Result.WalletVersion + ", balance: " + getWalletInfo.Result.Balance); Console.WriteLine(); // get added node info... Console.WriteLine("*** getaddednodeinfo ***"); var getAddedNodeInfo = await client.GetAddedNodeInfoAsync(); getAddedNodeInfo.AssertOk(); Console.WriteLine(getAddedNodeInfo.RawJson); Console.WriteLine(); // get raw change address... Console.WriteLine("*** getrawchangeaddress ***"); var getRawChangeAddress = await client.GetRawChangeAddressAsync(); getRawChangeAddress.AssertOk(); Console.WriteLine(getRawChangeAddress.Result); Console.WriteLine(); // get addresses... Console.WriteLine("*** getaddresses ***"); var getAddresses = await client.GetAddressesAsync(); getAddresses.AssertOk(); foreach (var address in getAddresses.Result) { Console.WriteLine(address); } Console.WriteLine(); // get addresses verbose... Console.WriteLine("*** getaddresses (verbose) ***"); var getAddressesVerbose = await client.GetAddressesVerboseAsync(); getAddressesVerbose.AssertOk(); foreach (var address in getAddressesVerbose.Result) { Console.WriteLine("{0}, mine: {1}", address.Address, address.IsMine); } Console.WriteLine(); // get peer info... Console.WriteLine("*** getpeerinfo ***"); var peers = await client.GetPeerInfoAsync(); peers.AssertOk(); foreach (var peer in peers.Result) { Console.WriteLine("{0} ({1})", peer.Addr, peer.Handshake); } Console.WriteLine(); // backup wallet... Console.WriteLine("*** backupwallet ***"); var path = Path.GetTempFileName(); Console.WriteLine(path); var backup = await client.BackupWalletAsync(path); backup.AssertOk(); Console.WriteLine(backup.RawJson); Console.WriteLine(); // backup wallet... Console.WriteLine("*** dumpwallet ***"); path = Path.GetTempFileName(); Console.WriteLine(path); var dumpWallet = await client.DumpWalletAsync(path); dumpWallet.AssertOk(); Console.WriteLine(dumpWallet.RawJson); Console.WriteLine(); // estimate fee... Console.WriteLine("*** estimatefee ***"); var estimateFee = await client.EstimateFeeAsync(10); estimateFee.AssertOk(); Console.WriteLine(estimateFee.Result); Console.WriteLine(); // estimate priority... Console.WriteLine("*** estimatepriority ***"); var estimatePriority = await client.EstimatePriorityAsync(10); estimatePriority.AssertOk(); Console.WriteLine(estimatePriority.Result); Console.WriteLine(); // get new address... Console.WriteLine("*** getnewaddress ***"); var getNewAddress = await client.GetNewAddressAsync(); getNewAddress.AssertOk(); Console.WriteLine(getNewAddress.Result); Console.WriteLine(); // validate address... Console.WriteLine("*** validateaddress ***"); var validateAddress = await client.ValidateAddressAsync(getNewAddress.Result); validateAddress.AssertOk(); Console.WriteLine(validateAddress.Result.Address + ", pubkey: " + validateAddress.Result.PubKey); Console.WriteLine(); // get balance... Console.WriteLine("*** getbalance ***"); var getBalance = await client.GetBalanceAsync(); getBalance.AssertOk(); Console.WriteLine(getBalance.Result); Console.WriteLine(); // get balance... Console.WriteLine("*** gettotalbalances ***"); var getTotalBalances = await client.GetTotalBalancesAsync(); getTotalBalances.AssertOk(); foreach (var balance in getTotalBalances.Result) { Console.WriteLine("{0}, ref: {1}, qty: {2}", balance.Name, balance.AssetRef, balance.Qty); } Console.WriteLine(); // list accounts... Console.WriteLine("*** listaccounts ***"); var listAccounts = await client.ListAccountsAsync(); listAccounts.AssertOk(); foreach (var key in listAccounts.Result.Keys) { Console.WriteLine("{0}, balance: {1}", key, listAccounts.Result[key]); } Console.WriteLine(); // get account... Console.WriteLine("*** getaddressesbyaccount ***"); var getAddressesByAccount = await client.GetAddressesByAccountAsync(null); getAddressesByAccount.AssertOk(); foreach (var address in getAddressesByAccount.Result) { Console.WriteLine(address); } Console.WriteLine(); // get account address... Console.WriteLine("*** getaccountaddress ***"); var getAccountAddress = await client.GetAccountAddressAsync(null); getAccountAddress.AssertOk(); Console.WriteLine(getAccountAddress.Result); Console.WriteLine(); // get account... Console.WriteLine("*** getaccount ***"); var getAccount = await client.GetAccountAsync(getAddressesByAccount.Result.First()); getAccount.AssertOk(); Console.WriteLine(getAccount.Result); Console.WriteLine(); // get address balances... Console.WriteLine("*** getaddressbalances ***"); var getAddressBalances = await client.GetAddressBalancesAsync(getAddressesByAccount.Result.First()); getAddressBalances.AssertOk(); foreach (var balance in getAddressBalances.Result) { Console.WriteLine(balance); } Console.WriteLine(); // list address groupings... Console.WriteLine("*** listaddressgroupings ***"); var listAddressGroupings = await client.ListAddressGroupingsAsync(); listAddressGroupings.AssertOk(); Console.Write(listAddressGroupings.RawJson); Console.WriteLine(); // list unspent... Console.WriteLine("*** listunspent ***"); var listUnspent = await client.ListUnspentAsync(); listUnspent.AssertOk(); foreach (var unspent in listUnspent.Result) { Console.WriteLine("{0}, tx: {1}", unspent.Address, unspent.TxId); } Console.WriteLine(); // list lock unspent... Console.WriteLine("*** listlockunspent ***"); var listLockUnspent = await client.ListLockUnspentAsync(); listLockUnspent.AssertOk(); foreach (var unspent in listLockUnspent.Result) { Console.WriteLine(unspent); } Console.WriteLine(); // list since block... Console.WriteLine("*** listsinceblock ***"); var listSinceBlock = await client.ListSinceBlockAsync(getBlockHash.Result); listSinceBlock.AssertOk(); foreach (var tx in listSinceBlock.Result.Transactions) { Console.WriteLine(tx.Address + ", hash: " + tx.BlockHash); } Console.WriteLine(); //// import address... //Console.WriteLine("*** importaddress ***"); //var importAddress = await client.ImportAddressAsync("1RytCj4dMZvt3pR8SysvBo5ntXMxUu1gTWN9j8"); //importAddress.AssertOk(); //Console.WriteLine(importAddress.RawJson); //Console.WriteLine(); // get received by account... Console.WriteLine("*** getreceivedbyaccount ***"); var getReceivedByAccount = await client.GetReceivedByAccountAsync(); getReceivedByAccount.AssertOk(); Console.WriteLine(getReceivedByAccount.Result); Console.WriteLine(); // list transactions... Console.WriteLine("*** listtransactions ***"); var listTransactions = await client.ListTransactionsAsync(); listTransactions.AssertOk(); foreach (var tx in listTransactions.Result) { Console.WriteLine("{0}, tx: {1}", tx.Address, tx.TxId); } Console.WriteLine(); // capture... var txId = listTransactions.Result.Last().TxId; // list transactions... Console.WriteLine("*** gettransaction ***"); var getTransaction = await client.GetTransactionAsync(txId); getTransaction.AssertOk(); Console.WriteLine("{0}, block time: {1}", getTransaction.Result.BlockHash, getTransaction.Result.BlockTime); foreach (var details in getTransaction.Result.Details) { Console.WriteLine(details.Address + ", amount: " + details.Amount); } Console.WriteLine(); // get tx out... Console.WriteLine("*** gettxout ***"); var getTxOut = await client.GetTxOutAsync(txId); getTxOut.AssertOk(); Console.WriteLine("{0}, asm: {1}", getTxOut.Result.BestBlock, getTxOut.Result.ScriptPubKey.Asm); foreach (var walk in getTxOut.Result.Assets) { Console.WriteLine("{0}, ref: {1}", walk.Name, walk.AssetRef); } Console.WriteLine(); // get raw transaction... Console.WriteLine("*** getrawtransaction ***"); var getRawTransaction = await client.GetRawTransactionAsync(txId); getRawTransaction.AssertOk(); Console.WriteLine(getRawTransaction.Result); Console.WriteLine(); // decode raw transaction... Console.WriteLine("*** decoderawstransaction ***"); var decodeRawTransaction = await client.DecodeRawTransactionAsync(getRawTransaction.Result); decodeRawTransaction.AssertOk(); foreach (var walk in decodeRawTransaction.Result.Vin) { Console.WriteLine(walk.TxId); } foreach (var walk in decodeRawTransaction.Result.Vout) { Console.WriteLine(walk.Value); } Console.WriteLine(); // get raw transaction... Console.WriteLine("*** getrawtransaction (verbose) ***"); var getRawTransactionVerbose = await client.GetRawTransactionVerboseAsync(txId); getRawTransactionVerbose.AssertOk(); foreach (var walk in getRawTransactionVerbose.Result.Data) { Console.WriteLine(walk); } Console.WriteLine(); // get tx out set info... Console.WriteLine("*** gettxoutsetinfo ***"); var getTxOutSetInfo = await client.GetTxOutSetInfoAsync(); getTxOutSetInfo.AssertOk(); Console.WriteLine("{0}, best: {1}", getTxOutSetInfo.Result.Height, getTxOutSetInfo.Result.BestBlock); Console.WriteLine(); // prioritise transaction... Console.WriteLine("*** prioritisetransaction ***"); var prioritiseTransaction = await client.PrioritiseTransactionAsync(txId, 10, 1); prioritiseTransaction.AssertOk(); Console.WriteLine(prioritiseTransaction.RawJson); Console.WriteLine(); // get asset balances... Console.WriteLine("*** getassetbalances ***"); var getAssetBalances = await client.GetAssetBalancesAsync(); getAssetBalances.AssertOk(); foreach (var walk in getAssetBalances.Result) { Console.WriteLine("{0}, ref: {1}, balance: {2}", walk.Name, walk.AssetRef, walk.Qty); } Console.WriteLine(); // list received by address... Console.WriteLine("*** listreceivedbyaddress ***"); var listReceivedByAddress = await client.ListReceivedByAddressAsync(); listReceivedByAddress.AssertOk(); foreach (var walk in listReceivedByAddress.Result) { Console.WriteLine("{0}, confirmations: {1}", walk.Address, walk.Confirmations); } Console.WriteLine(); // list received by account... Console.WriteLine("*** listreceivedbyaccount ***"); var listReceivedByAccount = await client.ListReceivedByAccountAsync(); listReceivedByAccount.AssertOk(); foreach (var walk in listReceivedByAccount.Result) { Console.WriteLine("{0}, confirmations: {1}", walk.Account, walk.Confirmations); } Console.WriteLine(); // list permissions... Console.WriteLine("*** listpermissions ***"); var listPermissions = await client.ListPermissions(BlockchainPermissions.Admin); listPermissions.AssertOk(); foreach (var walk in listPermissions.Result) { Console.WriteLine(walk.Address + ", " + walk.Type); } Console.WriteLine(); // one, two... var one = await CreateAddressAsync(client, BlockchainPermissions.Issue | BlockchainPermissions.Send | BlockchainPermissions.Receive); var two = await CreateAddressAsync(client, BlockchainPermissions.Send | BlockchainPermissions.Receive); var three = await CreateAddressAsync(client, BlockchainPermissions.Send | BlockchainPermissions.Receive); var four = await CreateAddressAsync(client, BlockchainPermissions.Send | BlockchainPermissions.Receive); // revoke... Console.WriteLine("*** revoke ***"); var revoke = await client.RevokeAsync(new List <string>() { three }, BlockchainPermissions.Send); revoke.AssertOk(); Console.WriteLine(revoke.Result); Console.WriteLine(); // revoke... Console.WriteLine("*** revokefrom ***"); var revokeFrom = await client.RevokeFromAsync(listPermissions.Result.First().Address, new List <string>() { three }, BlockchainPermissions.Receive); revokeFrom.AssertOk(); Console.WriteLine(revokeFrom.Result); Console.WriteLine(); // grant from... Console.WriteLine("*** grantfrom ***"); var grantFrom = await client.GrantFromAsync(listPermissions.Result.First().Address, new List <string>() { two }, BlockchainPermissions.Send | BlockchainPermissions.Receive); grantFrom.AssertOk(); Console.WriteLine(grantFrom.Result); Console.WriteLine(); // set account... Console.WriteLine("*** setaccount ***"); var setAccount = await client.SetAccountAsync(four, this.GetRandomName("account")); setAccount.AssertOk(); Console.WriteLine(setAccount.Result); Console.WriteLine(); // get received by address... Console.WriteLine("*** getreceivedbyaddress ***"); var getReceivedByAddress = await client.GetReceivedByAddressAsync(one); getReceivedByAddress.AssertOk(); Console.WriteLine(getReceivedByAddress.Result); Console.WriteLine(); // dump priv key... Console.WriteLine("*** dumpprivkey ***"); var dumpPrivKey = await client.DumpPrivKeyAsync(one); dumpPrivKey.AssertOk(); Console.WriteLine(dumpWallet.Result); Console.WriteLine(); // create multisig... var toUse = new List <string>(); foreach (var address in getAddresses.Result) { toUse.Add(address); if (toUse.Count == 5) { break; } } while (toUse.Count < 5) { toUse.Add(await this.CreateAddressAsync(client, BlockchainPermissions.Receive)); } Console.WriteLine("*** createmultisig ***"); var createMultiSig = await client.CreateMultiSigAsync(5, toUse); createMultiSig.AssertOk(); Console.WriteLine("{0}, redeemScript: {1}", createMultiSig.Result.Address, createMultiSig.Result.RedeemScript); Console.WriteLine(); Console.WriteLine("*** decodescript ***"); var decodeScript = await client.DecodeScriptAsync(createMultiSig.Result.RedeemScript); decodeScript.AssertOk(); foreach (var walk in decodeScript.Result.Addresses) { Console.WriteLine(walk); } Console.WriteLine(); Console.WriteLine("*** addmultisigaddress ***"); var addMultiSigAddress = await client.AddMultiSigAddressAsync(5, toUse); addMultiSigAddress.AssertOk(); Console.WriteLine(addMultiSigAddress.Result); Console.WriteLine(); // issue... Console.WriteLine("*** issue ***"); var assetName = this.GetRandomName("asset"); var issue = await client.IssueAsync(one, assetName, 1000000, 0.1M); Console.WriteLine(issue.Result); Console.WriteLine(); // issue... Console.WriteLine("*** issuefrom ***"); assetName = "asset_" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, 24); var issueFrom = await client.IssueFromAsync(one, two, assetName, 1000000, 0.1M); Console.WriteLine(issueFrom.Result); Console.WriteLine(); // list the assets... while (true) { Console.WriteLine("*** listassets ***"); var assets = await client.ListAssetsAsync(); assets.AssertOk(); AssetResponse found = null; foreach (var walk in assets.Result) { if (walk.Name == assetName) { found = walk; } } Console.WriteLine(); // have we found it? if (string.IsNullOrEmpty(found.AssetRef)) { Console.WriteLine("Asset is not ready - waiting (this can take 30 seconds or more)..."); Thread.Sleep(2500); } else { break; } } // send with meta data... Console.WriteLine("*** sendwithmetadata ***"); var bs = Encoding.UTF8.GetBytes("Hello, world."); var sendWithMetaData = await client.SendWithMetadataAsync(two, assetName, 1, bs); sendWithMetaData.AssertOk(); Console.WriteLine("Send transaction ID: " + sendWithMetaData.Result); Console.WriteLine(); // send with meta data... Console.WriteLine("*** sendwithmetadataform ***"); var sendWithMetaDataFrom = await client.SendWithMetadataFromAsync(two, one, assetName, 1, bs); sendWithMetaDataFrom.AssertOk(); Console.WriteLine("Send transaction ID: " + sendWithMetaDataFrom.Result); Console.WriteLine(); // send asset to address... Console.WriteLine("*** sendassettoaddress ***"); var sendAssetToAddress = await client.SendAssetToAddressAsync(two, assetName, 1); sendAssetToAddress.AssertOk(); Console.WriteLine("Send transaction ID: " + sendAssetToAddress.Result); Console.WriteLine(); // send to address... Console.WriteLine("*** sendtoaddress ***"); var sendToAddress = await client.SendToAddressAsync(two, assetName, 1); sendToAddress.AssertOk(); Console.WriteLine("Send transaction ID: " + sendToAddress.Result); Console.WriteLine(); // send asset from... Console.WriteLine("*** sendassetfrom ***"); var sendAssetFrom = await client.SendAssetFromAsync(two, one, assetName, 1); sendAssetFrom.AssertOk(); Console.WriteLine("Send transaction ID: " + sendAssetFrom.Result); Console.WriteLine(); // send from... Console.WriteLine("*** sendfrom ***"); var sendFrom = await client.SendFromAsync("", two, 1); sendFrom.AssertOk(); Console.WriteLine(sendFrom.Result); /* // get the address that can issue assets... * * // create an asset... * Console.WriteLine("*** issue ***"); * var assetName = "asset_" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, 24); * Console.WriteLine("Asset name: " + assetName); * var issueAddress = await CreateAddressAsync(client, BlockchainPermissions.Issue | BlockchainPermissions.Receive | BlockchainPermissions.Send); * var asset = await client.IssueAsync(issueAddress, assetName, 1000000, 0.1M); * asset.AssertOk(); * Console.WriteLine("Issue transaction ID: " + asset.Result); * Console.WriteLine(); * * // list the assets... * while (true) * { * Console.WriteLine("*** listassets ***"); * var assets = await client.ListAssetsAsync(); * assets.AssertOk(); * AssetResponse found = null; * foreach (var walk in assets.Result) * { * Console.WriteLine("Name: {0}, ref: {1}", walk.Name, walk.AssetRef); * * if (walk.Name == assetName) * found = walk; * } * Console.WriteLine(); * * // have we found it? * if (string.IsNullOrEmpty(found.AssetRef)) * { * Console.WriteLine("Asset is not ready - waiting (this can take 30 seconds or more)..."); * Thread.Sleep(10000); * } * else * break; * } * * // create an address... * var recipient = await this.CreateAddressAsync(client, BlockchainPermissions.Send | BlockchainPermissions.Receive); * * // send with metadata... * Console.WriteLine("*** sendwithmetadata ***"); * var bs = Encoding.UTF8.GetBytes("Hello, world."); * var sendResult = await client.SendWithMetadataAsync(recipient, assetName, 1, bs); * sendResult.AssertOk(); * Console.WriteLine("Send transaction ID: " + sendResult.Result); * Console.WriteLine(); * * // get it... * Console.WriteLine("*** getrawtransaction ***"); * var retrieved = await client.GetRawTransaction(sendResult.Result); * retrieved.AssertOk(); * Console.WriteLine("ID: {0}", retrieved.Result.TxId); * for(var index = 0; index < retrieved.Result.Data.Count; index++) * { * Console.WriteLine("Data: " + retrieved.Result.Data[index]); * * var retrievedBs = retrieved.Result.GetDataAsBytes(index); * Console.WriteLine("--> " + Encoding.UTF8.GetString(retrievedBs)); * }*/ // check blocks... Console.WriteLine("*** verifychain ***"); var verifyChain = await client.VerifyChainAsync(CheckBlockType.ReadFromDisk); verifyChain.AssertOk(); Console.WriteLine(verifyChain.Result); Console.WriteLine(); }
public PaginationResponse <AssetResponse> Get([Required, FromQuery] int take, [FromQuery] string continuation) { var assets = new AssetResponse[] { Asset.Dynamic.ToAssetResponse() }; return(PaginationResponse.From("", assets)); }