public TokenHandler(IHttpHelpers httpHelpers, IOptions <Config> config, IStorage tokenStorage, IUserService userService)
 {
     this.httpHelpers  = httpHelpers;
     this.config       = config;
     this.tokenStorage = tokenStorage;
     this.userService  = userService;
 }
        public HttpResponseMessageWrapper(IHttpHelpers httpHelpers, 
            HttpResponseMessage response)
        {
            Ensure.Argument.IsNotNull(httpHelpers, nameof(httpHelpers));
            Ensure.Argument.IsNotNull(response, nameof(response));

            this.httpHelpers = httpHelpers;
            this.response = response;
        }
Example #3
0
        public HttpResponse(
            IHttpHelpers httpHelpers,
            Native.HttpResponseMessage response)
        {
            Ensure.Argument.IsNotNull(httpHelpers, nameof(httpHelpers));
            Ensure.Argument.IsNotNull(response, nameof(response));

            this.httpHelpers = httpHelpers;
            this.response    = response;
        }
Example #4
0
        public HttpClientFactory(
            IJsonHelpers jsonHelpers, 
            IHttpHelpers httpHelpers)
        {
            Ensure.Argument.IsNotNull(jsonHelpers, nameof(jsonHelpers));
            Ensure.Argument.IsNotNull(httpHelpers, nameof(httpHelpers));

            this.jsonHelpers = jsonHelpers;
            this.httpHelpers = httpHelpers;
        }
Example #5
0
        public Http(
            IJsonHelpers jsonHelpers,
            IHttpHelpers httpHelpers)
        {
            Ensure.Argument.IsNotNull(jsonHelpers, nameof(jsonHelpers));
            Ensure.Argument.IsNotNull(httpHelpers, nameof(httpHelpers));

            this.jsonHelpers = jsonHelpers;
            this.httpHelpers = httpHelpers;
        }
Example #6
0
        public PeersController(
            IDataService dataService,
            IHttpContextHelpers httpContextHelpers,
            IHttpHelpers httpHelpers)
        {
            this.dataService = dataService;

            this.httpContextHelpers = httpContextHelpers;

            this.httpHelpers = httpHelpers;
        }
Example #7
0
        public HttpClient(
            IJsonHelpers jsonHelpers,
            IHttpHelpers httpHelpers)
        {
            Ensure.Argument.IsNotNull(jsonHelpers, nameof(jsonHelpers));
            Ensure.Argument.IsNotNull(httpHelpers, nameof(httpHelpers));

            this.jsonHelpers = jsonHelpers;
            this.httpHelpers = httpHelpers;

            // Create the underlying HttpClient.
            this.client = new Native.HttpClient();
        }
Example #8
0
 public NodeService(
     IDataService dataService,
     IAddressService addressService,
     ICryptographyHelpers cryptographyHelpers,
     IDateTimeHelpers dateTimeHelpers,
     IHttpHelpers httpHelpers,
     ILogger <NodeService> logger)
 {
     this.dataService         = dataService;
     this.addressService      = addressService;
     this.cryptographyHelpers = cryptographyHelpers;
     this.dateTimeHelpers     = dateTimeHelpers;
     this.httpHelpers         = httpHelpers;
     this.logger = logger;
 }
Example #9
0
        public HttpRequest(
            IJsonHelpers jsonHelpers,
            IHttpHelpers httpHelpers,
            Native.HttpClient client,
            Native.HttpMethod method,
            Uri target)
        {
            Ensure.Argument.IsNotNull(jsonHelpers, nameof(jsonHelpers));
            Ensure.Argument.IsNotNull(httpHelpers, nameof(httpHelpers));
            Ensure.Argument.IsNotNull(client, nameof(client));
            Ensure.Argument.IsNotNull(target, nameof(target));

            this.jsonHelpers = jsonHelpers;
            this.httpHelpers = httpHelpers;
            this.client      = client;
            this.request     = new Native.HttpRequestMessage(method, target);
        }
Example #10
0
 public CustomerService(IHttpHelpers httpHelpers, IConfigurationService configurationService)
 {
     this.httpHelpers          = httpHelpers;
     this.configurationService = configurationService;
 }
Example #11
0
 public AccountService(IHttpHelpers httpHelpers, IOptions <Config> config, IStorage tokenStorage)
 {
     this.httpHelpers  = httpHelpers;
     this.config       = config;
     this.tokenStorage = tokenStorage;
 }
Example #12
0
        public static async Task MineAsync(IHttpHelpers httpHelpers, IDateTimeHelpers dateTimeHelpers, Logger log)
        {
            HttpStatusCode statusCode = HttpStatusCode.RequestTimeout;

            Stopwatch sw            = new Stopwatch();
            TimeSpan  maxTaskLength = new TimeSpan(0, 0, 2); // 2 seconds

            while (true)
            {
                sw.Start();

                MiningJob miningJob = null;

                do
                {
                    try
                    {
                        string path = "mining/get-mining-job/{minerAddress}";

                        var parameter = new Parameter()
                        {
                            Name  = "minerAddress",
                            Value = minerAddress,
                            Type  = ParameterType.UrlSegment
                        };

                        log.Information($"Trying to get mining job from node: {nodeUrl}");

                        Response <MiningJob> response = await httpHelpers.DoApiGet <MiningJob>(nodeUrl, path, parameter);

                        miningJob = response.Data;

                        statusCode = response.StatusCode;
                    }
                    catch (WebException e)
                    {
                        Console.WriteLine("WebException raised!");
                        Console.WriteLine("{0}\n", e.Message);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Exception raised!");
                        Console.WriteLine("Source : {0}", e.Source);
                        Console.WriteLine("Message : {0}\n", e.Message);
                    }
                } while (statusCode != HttpStatusCode.OK);

                log.Information($"Successfully received mining job (Block Data Hash: {miningJob.BlockDataHash}) from node!");

                Console.WriteLine("Start New Mining Job:");
                Console.WriteLine("Block Index: {0}", miningJob.BlockIndex);
                Console.WriteLine("Transactions Included: {0}", miningJob.TransactionsIncluded);
                Console.WriteLine("Expected Reward: {0}", miningJob.ExpectedReward);
                Console.WriteLine("Reward Address: {0}", miningJob.RewardAddress);
                Console.WriteLine("Block Data Hash: {0}", miningJob.BlockDataHash);
                Console.WriteLine("Difficulty: {0}", miningJob.Difficulty);

                bool   blockFound = false;
                ulong  nonce      = 0;
                string timestamp  = dateTimeHelpers.ConvertDateTimeToUniversalTimeISO8601String(DateTime.Now);

                string requiredLeadingZeroes = new String('0', miningJob.Difficulty);

                string blockData = miningJob.BlockIndex.ToString() +
                                   miningJob.TransactionsIncluded.ToString() +
                                   miningJob.BlockDataHash;
                string data;
                string blockHash;

                while (!blockFound && nonce < uint.MaxValue)
                {
                    data      = blockData + timestamp + nonce.ToString();
                    blockHash = ByteArrayToHexString(Sha256(Encoding.UTF8.GetBytes(data)));

                    if (blockHash.StartsWith(requiredLeadingZeroes))
                    {
                        Console.WriteLine("Block Mined!");
                        Console.WriteLine($"Block Hash: {blockHash}\n");

                        var minedBlock = new MinedBlockPostModel()
                        {
                            DateCreated   = timestamp,
                            Nonce         = nonce,
                            BlockDataHash = miningJob.BlockDataHash
                        };

                        int retries = 0;
                        do
                        {
                            try
                            {
                                statusCode = HttpStatusCode.RequestTimeout;

                                string path = "mining/submit-mined-block";

                                HttpResponseMessage response = await httpHelpers.DoApiPost(nodeUrl, path, minedBlock);

                                statusCode = response.StatusCode;

                                string statusDescription = response.ReasonPhrase;

                                log.Information($"Sent request to: {nodeUrl} with mined block (hash: {blockHash})!");

                                Console.WriteLine(statusDescription);
                                log.Information($"Received response from {nodeUrl} - status code: {statusCode}, description: {statusDescription}");
                            }
                            catch (WebException e)
                            {
                                Console.WriteLine("WebException raised!");
                                Console.WriteLine("{0}\n", e.Message);
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine("Exception raised!");
                                Console.WriteLine("Source : {0}", e.Source);
                                Console.WriteLine("Message : {0}\n", e.Message);
                            }

                            System.Threading.Thread.Sleep(1000);
                        } while (statusCode != HttpStatusCode.OK && retries++ < 3);

                        blockFound = true;
                        break;
                    }

                    // print intermediate data
                    if (nonce % 1000000 == 0)
                    {
                        Console.WriteLine(timestamp);
                        Console.WriteLine($"Nonce: {nonce}");
                        Console.WriteLine($"Block Hash: {blockHash}\n");
                    }

                    // get new timestamp on every 100000 iterations
                    if (nonce % 100000 == 0)
                    {
                        timestamp = dateTimeHelpers.ConvertDateTimeToUniversalTimeISO8601String(DateTime.Now);
                    }

                    nonce++;

                    if (maxTaskLength < sw.Elapsed)
                    {
                        sw.Reset();
                        break;
                    }
                }
            }
        }