using Aspose.Imaging.Cloud.Sdk.Api;
using Aspose.Imaging.Cloud.Sdk.Model.Requests;
using Aspose.Imaging.Cloud.Sdk.Model;
using System;
using System.IO;

namespace Kb_Aspose.KB
{
    public class GifToBmpConverter
    {
        public void GifToBmp()
        {
            var clientID = "Client ID";
            var clientSecret = "Client Secret";
            var apiBaseUrl = "https://api.aspose.cloud";
            var localPath = "C:/Words/";

            var gifToBmpImageApi = new ImagingApi(clientSecret, clientID, apiBaseUrl);

            // Source and output file names
            var inputFileName = "Source.gif";
            var outputFileName = "GiftoBmp.bmp";

            var outputFormat = "bmp";
            var remoteFolder = null; // Input file is saved at the root of the storage
            var remoteStorage = null; // remote cloud Storage name

            try
            {
                // Upload the local image to Cloud Storage
                var inpuFileStream = File.Open(localPath + '/' + inputFileName, FileMode.Open);
                inpuFileStream.Position = 0;

                var uploadGifFileRequest = new UploadFileRequest(inputFileName, inpuFileStream, null);
                gifToBmpImageApi.UploadFile(uploadGifFileRequest);

                var convertGifToBmpRequest = new ConvertImageRequest(inputFileName, outputFormat, 
                                                                     remoteFolder, remoteStorage);
                var gifDataStream = gifToBmpImageApi.ConvertImage(convertGifToBmpRequest);

                gifDataStream.Position = 0;

                using (var fileStream = File.Create(localPath + outputFileName + "." + outputFormat))
                {
                    gifDataStream.Seek(0, SeekOrigin.Begin);
                    gifDataStream.CopyTo(fileStream);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}