public async Task <ConverterResponse> ConvertAsync(string fromAsset, string toAsset, decimal amount)
        {
            try
            {
                var result = await _converterService.ConvertAsync(fromAsset, toAsset, amount);

                return(new ConverterResponse {
                    Amount = result, ErrorCode = ConverterErrorCode.None
                });
            }
            catch (EntityNotFoundException)
            {
                return(new ConverterResponse {
                    ErrorCode = ConverterErrorCode.NoRate
                });
            }
        }
Пример #2
0
        private async Task HandleMessage(string message)
        {
            _logger.LogInformation($"client received {message}");

            var stickerFromClient = JsonConvert.DeserializeObject <StickerRabbitDto>(message);
            var chatId            = stickerFromClient.TelegramChatId;
            var messageId         = stickerFromClient.TelegramMessageId;
            var stickerId         = stickerFromClient.StickerId;
            var uniqueStickerId   = stickerFromClient.StickerUniqueId;

            // Качаем стикер с телеграма
            var fileInfo = await _telegramBotService.DownloadFileAsync(stickerId);

            // Конвертируем из .tgs или .webp в .gif
            var convertedFileInfo = await _converterService.ConvertAsync(fileInfo);

            var fileData = await File.ReadAllBytesAsync(Constants.ConverterPath + convertedFileInfo.Name);

            // Загружаем на Giphy
            var uploadResult = await _giphyService.UploadFileAsync(fileData);

            // Получаем информацию о загруженной Gif
            var getResult = await _giphyService.GetGifAsync(uploadResult.Data.Id);

            // Добавляем запись в кэш
            _cacheService.Create(new Sticker
            {
                GiphyUrl        = getResult.Data.Url,
                UniqueStickerId = uniqueStickerId
            });

            // Отправляем пользователю ссылку
            await _telegramBotService.SendMessageAsync(chatId, messageId, getResult.Data.Url);

            // Удаляем скачанный и сконвертированный файлы
            DeleteTmpFiles();
        }