Korero – Rev 1

Subversion Repositories:
Rev:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Korero.Properties;

namespace Korero.Communication
{
    public static class Utilities
    {
        #region Public Methods

        public static async Task<Image> DownloadImage(Guid imageId, MqttCommunication mqttCommunication,
                                                      CancellationToken cancellationToken)
        {
            var data = new Dictionary<string, string>
            {
                {"command", "download"},
                {"group", Settings.Default.Group},
                {"password", Settings.Default.Password},
                {"type", "Texture"},
                {"format", "Bmp"},
                {"timeout", $"{Settings.Default.ImageDownloadTimeout}"},
                {"item", $"{imageId}"}
            };

            var callback = await mqttCommunication.SendCommand(new Command(data), cancellationToken);

            if (callback == null || !callback.Success)
            {
                return null;
            }

            var imageBase64 = callback.Data.FirstOrDefault();

            if (string.IsNullOrEmpty(imageBase64))
            {
                return null;
            }

            var imageBytes = Convert.FromBase64String(imageBase64);

            if (imageBytes.Length == 0)
            {
                return null;
            }

            using (var memoryStream = new MemoryStream(imageBytes))
            {
                var image = Image.FromStream(memoryStream);

                return image;
            }
        }

        #endregion
    }
}

Generated by GNU Enscript 1.6.5.90.