private async Task SetNetworkSettings(PeerApi initialPeer) { var responseAutoConfigure = await initialPeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.GET, ArkStaticStrings.ArkApiPaths.Loader.GET_AUTO_CONFIGURE); var responseFees = await initialPeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.GET, ArkStaticStrings.ArkApiPaths.Block.GET_FEES); var responsePeer = await initialPeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.GET, string.Format(ArkStaticStrings.ArkApiPaths.Peer.GET, initialPeer.ip, initialPeer.port)); var autoConfig = JsonConvert.DeserializeObject <ArkLoaderNetworkResponse>(responseAutoConfigure); var fees = JsonConvert.DeserializeObject <Fees>(JObject.Parse(responseFees)["fees"].ToString()); var peer = JsonConvert.DeserializeObject <ArkPeerResponse>(responsePeer); NetworkSettings = new ArkNetworkSettings() { Port = initialPeer.port, BytePrefix = (byte)autoConfig.Network.Version, Version = peer.Peer.Version, NetHash = autoConfig.Network.NetHash, MaxNumOfBroadcasts = 5, Fee = fees, PeerSeedList = new List <string> { string.Format("{0}:{1}", initialPeer.ip, initialPeer.port) } }; }
/// <summary> /// Fetch the the NetworkSettings, and set the NetworkSettings variable, /// which is used for every subsequent request after the initial ones. /// </summary> /// <param name="initialPeer">Initial Peer <inheritdoc cref="PeerApi"/> from which the settings are fetched.</param> /// <returns>Instiate a <inheritdoc cref="PeerApi"/> based on the initial peer provided.</returns> private async Task SetNetworkSettings(PeerApi initialPeer) { // Request the NetworkSettings, Fees, and more peer address from the peers it connects to. var responseAutoConfigure = await initialPeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.GET, ArkStaticStrings.ArkApiPaths.Loader.GET_AUTO_CONFIGURE).ConfigureAwait(false); var responseFees = await initialPeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.GET, ArkStaticStrings.ArkApiPaths.Block.GET_FEES).ConfigureAwait(false); var responsePeer = await initialPeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.GET, string.Format(ArkStaticStrings.ArkApiPaths.Peer.GET, initialPeer.Ip, initialPeer.Port)).ConfigureAwait(false); // Auto-configures what has been fetched previously var autoConfig = JsonConvert.DeserializeObject <ArkLoaderNetworkResponse>(responseAutoConfigure); var fees = JsonConvert.DeserializeObject <Fees>(JObject.Parse(responseFees)["fees"].ToString()); var peer = JsonConvert.DeserializeObject <ArkPeerResponse>(responsePeer); // Fill the NetworkSettings with what has been fetched / auto-configured previously. NetworkApi.NetworkSettings = new ArkNetworkSettings() { Port = initialPeer.Port, BytePrefix = (byte)autoConfig.Network.Version, Version = peer.Peer.Version, NetHash = autoConfig.Network.NetHash, Fee = fees }; await NetworkApi.WarmUp(new PeerApi(NetworkApi, initialPeer.Ip, initialPeer.Port)).ConfigureAwait(false); }
/// <summary> /// Asynchronously creates a request to the peer to create a transaction. /// </summary> /// /// <param name="transaction">A reference to a <see cref="TransactionApi"/> type.</param> /// /// <param name="peer">The peer to create the request to.</param> /// /// <returns>Returns an <see cref="Task{ArkTransactionPostResponse}"/> type.</returns> /// public async Task <ArkTransactionPostResponse> PostTransactionAsync(TransactionApi transaction, PeerApi peer = null) { try { string body = "{transactions: [" + transaction.ToObject(true) + "]} "; _logger.Info(string.Format("Send transaction <<{0}>>", body)); var response = string.Empty; if (peer == null) { response = await _networkApi.ActivePeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.POST, ArkStaticStrings.ArkApiPaths.Transaction.POST, body).ConfigureAwait(false); } else { response = await peer.MakeRequest(ArkStaticStrings.ArkHttpMethods.POST, ArkStaticStrings.ArkApiPaths.Transaction.POST, body).ConfigureAwait(false); } return(JsonConvert.DeserializeObject <ArkTransactionPostResponse>(response)); } catch (Exception e) { _logger.Error(e.ToString()); throw e; } }
/// <summary> /// Fetch the the NetworkSettings, and set the NetworkSettings variable, /// which is used for every subsequent request after the initial ones. /// </summary> /// <param name="initialPeer">Initial Peer <inheritdoc cref="PeerApi"/> from which the settings are fetched.</param> /// <returns>Instiate a <inheritdoc cref="PeerApi"/> based on the initial peer provided.</returns> private async Task SetNetworkSettings(PeerApi initialPeer) { try { // Request the NetworkSettings, Fees, and more peer address from the peers it connects to. var responseAutoConfigure = await initialPeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.GET, ArkStaticStrings.ArkApiPaths.Loader.GET_AUTO_CONFIGURE).ConfigureAwait(false); var responseFees = await initialPeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.GET, ArkStaticStrings.ArkApiPaths.Block.GET_FEES).ConfigureAwait(false); var responsePeer = await initialPeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.GET, string.Format(ArkStaticStrings.ArkApiPaths.Peer.GET, initialPeer.Ip, initialPeer.Port)).ConfigureAwait(false); // Auto-configures what has been fetched previously var autoConfig = JsonConvert.DeserializeObject <ArkLoaderNetworkResponse>(responseAutoConfigure); var fees = JsonConvert.DeserializeObject <Fees>(JObject.Parse(responseFees)["fees"].ToString()); var peer = JsonConvert.DeserializeObject <ArkPeerResponse>(responsePeer); // Fill the NetworkSettings with what has been fetched / auto-configured previously. NetworkApi.NetworkSettings = new ArkNetworkSettings() { Port = initialPeer.Port, BytePrefix = (byte)autoConfig.Network.Version, Version = peer.Peer.Version, NetHash = autoConfig.Network.NetHash, Fee = fees, Token = autoConfig.Network.Token, Symbol = autoConfig.Network.Symbol, Explorer = autoConfig.Network.Explorer }; LoggingApi.Info(string.Format("Set network settings to <<{0}>>", JsonConvert.SerializeObject(NetworkApi.NetworkSettings))); await NetworkApi.WarmUp(new PeerApi(this, initialPeer.Ip, initialPeer.Port)).ConfigureAwait(false); } catch (Exception e) { LoggingApi.Error(e.ToString()); throw e; } }
private async Task SetNetworkSettings(PeerApi initialPeer) { var responseAutoConfigure = await initialPeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.GET, ArkStaticStrings.ArkApiPaths.Loader.GET_AUTO_CONFIGURE); var responseFees = await initialPeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.GET, ArkStaticStrings.ArkApiPaths.Block.GET_FEES); var responsePeer = await initialPeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.GET, string.Format(ArkStaticStrings.ArkApiPaths.Peer.GET, initialPeer.Ip, initialPeer.Port)); var autoConfig = JsonConvert.DeserializeObject <ArkLoaderNetworkResponse>(responseAutoConfigure); var fees = JsonConvert.DeserializeObject <Fees>(JObject.Parse(responseFees)["fees"].ToString()); var peer = JsonConvert.DeserializeObject <ArkPeerResponse>(responsePeer); NetworkSettings = new ArkNetworkSettings() { Port = initialPeer.Port, BytePrefix = (byte)autoConfig.Network.Version, Version = peer.Peer.Version, NetHash = autoConfig.Network.NetHash, Fee = fees }; await NetworkApi.Instance.WarmUp(new PeerApi(initialPeer.Ip, initialPeer.Port)); }
public async static Task <ArkTransactionPostResponse> PostTransactionAsync(TransactionApi transaction, PeerApi peer = null) { string body = "{transactions: [" + transaction.ToObject(true) + "]} "; var response = string.Empty; if (peer == null) { response = await NetworkApi.Instance.ActivePeer.MakeRequest(ArkStaticStrings.ArkHttpMethods.POST, ArkStaticStrings.ArkApiPaths.Transaction.POST, body); } else { response = await peer.MakeRequest(ArkStaticStrings.ArkHttpMethods.POST, ArkStaticStrings.ArkApiPaths.Transaction.POST, body); } return(JsonConvert.DeserializeObject <ArkTransactionPostResponse>(response)); }