public void CalculateNextNumber(CalculateNextNumberRequestModel model, [FromUri] Guid calculationId)
        {
            var currentNumber = model.CurrentNumber;

            var tempFilePath = GetFilePathByCalculationId(calculationId);

            var previousNumber = GetPreviousNumberFromFile(tempFilePath);

            long nextNumber;

            try
            {
                nextNumber = checked (previousNumber + currentNumber);
            }
            catch (OverflowException)
            {
                SendResultToQueue(PredefinedCalculationEndValue, calculationId);

                return;
            }

            WriteNumberToFile(tempFilePath, nextNumber);

            SendResultToQueue(nextNumber, calculationId);
        }
        private void SendNumber(long number, Guid calculationId)
        {
            using (var apiClient = new ApiClient(_apiUrl))
            {
                var requestModel = new  CalculateNextNumberRequestModel
                {
                    CurrentNumber = number
                };

                apiClient.CalculateNextNumber(requestModel, calculationId).Wait();
            }
        }
예제 #3
0
파일: ApiClient.cs 프로젝트: OVME/TestTask
 public async Task CalculateNextNumber(CalculateNextNumberRequestModel calculateNextNumberRequest, Guid calculationId)
 {
     var message = GetHttpMessage(calculateNextNumberRequest, $"fibonacciCalculation/{calculationId}/calculateNextNumber", HttpMethod.Post);
     await _httpClient.SendAsync(message);
 }