public UploadResult UploadImage(Stream stream, string fileName)
        {
            ImageUploader imageUploader = null;

            switch (UploadManager.ImageUploader)
            {
            case ImageDestination.ImageShack:
                imageUploader = new ImageShackUploader(ZKeys.ImageShackKey, Program.UploadersConfig.ImageShackAccountType,
                                                       Program.UploadersConfig.ImageShackRegistrationCode)
                {
                    IsPublic = Program.UploadersConfig.ImageShackShowImagesInPublic
                };
                break;

            case ImageDestination.TinyPic:
                imageUploader = new TinyPicUploader(ZKeys.TinyPicID, ZKeys.TinyPicKey, Program.UploadersConfig.TinyPicAccountType,
                                                    Program.UploadersConfig.TinyPicRegistrationCode);
                break;

            case ImageDestination.Imgur:
                imageUploader = new Imgur(Program.UploadersConfig.ImgurAccountType, ZKeys.ImgurAnonymousKey, Program.UploadersConfig.ImgurOAuthInfo)
                {
                    ThumbnailType = Program.UploadersConfig.ImgurThumbnailType
                };
                break;

            case ImageDestination.Flickr:
                imageUploader = new FlickrUploader(ZKeys.FlickrKey, ZKeys.FlickrSecret, Program.UploadersConfig.FlickrAuthInfo, Program.UploadersConfig.FlickrSettings);
                break;

            case ImageDestination.Photobucket:
                imageUploader = new Photobucket(Program.UploadersConfig.PhotobucketOAuthInfo, Program.UploadersConfig.PhotobucketAccountInfo);
                break;

            case ImageDestination.UploadScreenshot:
                imageUploader = new UploadScreenshot(ZKeys.UploadScreenshotKey);
                break;

            case ImageDestination.Twitpic:
                TwitPicOptions twitPicOptions = new TwitPicOptions();
                twitPicOptions.Username             = Program.UploadersConfig.TwitPicUsername;
                twitPicOptions.Password             = Program.UploadersConfig.TwitPicPassword;
                twitPicOptions.TwitPicThumbnailMode = Program.UploadersConfig.TwitPicThumbnailMode;
                twitPicOptions.ShowFull             = Program.UploadersConfig.TwitPicShowFull;
                imageUploader = new TwitPicUploader(twitPicOptions);
                break;

            case ImageDestination.Twitsnaps:
                int index = Program.UploadersConfig.TwitterSelectedAccount;

                if (Program.UploadersConfig.TwitterOAuthInfoList.HasValidIndex(index))
                {
                    imageUploader = new TwitSnapsUploader(ZKeys.TwitsnapsKey, Program.UploadersConfig.TwitterOAuthInfoList[index]);
                }
                break;

            case ImageDestination.yFrog:
                YfrogOptions yFrogOptions = new YfrogOptions(ZKeys.ImageShackKey);
                yFrogOptions.Username = Program.UploadersConfig.YFrogUsername;
                yFrogOptions.Password = Program.UploadersConfig.YFrogPassword;
                yFrogOptions.Source   = Application.ProductName;
                imageUploader         = new YfrogUploader(yFrogOptions);
                break;
            }

            if (imageUploader != null)
            {
                PrepareUploader(imageUploader);
                return(imageUploader.Upload(stream, fileName));
            }

            return(null);
        }
        public UploadResult UploadImage(Stream stream, string fileName)
        {
            ImageUploader imageUploader = null;

            switch (Info.TaskSettings.ImageDestination)
            {
            case ImageDestination.ImageShack:
                imageUploader = new ImageShackUploader(ApiKeys.ImageShackKey, Program.UploadersConfig.ImageShackAccountType,
                                                       Program.UploadersConfig.ImageShackRegistrationCode)
                {
                    IsPublic = Program.UploadersConfig.ImageShackShowImagesInPublic
                };
                break;

            case ImageDestination.TinyPic:
                imageUploader = new TinyPicUploader(ApiKeys.TinyPicID, ApiKeys.TinyPicKey, Program.UploadersConfig.TinyPicAccountType,
                                                    Program.UploadersConfig.TinyPicRegistrationCode);
                break;

            case ImageDestination.Imgur:
                if (Program.UploadersConfig.ImgurOAuth2Info == null)
                {
                    Program.UploadersConfig.ImgurOAuth2Info = new OAuth2Info(ApiKeys.ImgurClientID, ApiKeys.ImgurClientSecret);
                }

                imageUploader = new Imgur_v3(Program.UploadersConfig.ImgurOAuth2Info)
                {
                    UploadMethod  = Program.UploadersConfig.ImgurAccountType,
                    ThumbnailType = Program.UploadersConfig.ImgurThumbnailType,
                    UploadAlbumID = Program.UploadersConfig.ImgurAlbumID
                };
                break;

            case ImageDestination.Flickr:
                imageUploader = new FlickrUploader(ApiKeys.FlickrKey, ApiKeys.FlickrSecret, Program.UploadersConfig.FlickrAuthInfo, Program.UploadersConfig.FlickrSettings);
                break;

            case ImageDestination.Photobucket:
                imageUploader = new Photobucket(Program.UploadersConfig.PhotobucketOAuthInfo, Program.UploadersConfig.PhotobucketAccountInfo);
                break;

            case ImageDestination.Picasa:
                imageUploader = new Picasa(Program.UploadersConfig.PicasaOAuth2Info)
                {
                    AlbumID = Program.UploadersConfig.PicasaAlbumID
                };
                break;

            case ImageDestination.UploadScreenshot:
                imageUploader = new UploadScreenshot(ApiKeys.UploadScreenshotKey);
                break;

            case ImageDestination.Twitpic:
                int indexTwitpic = Program.UploadersConfig.TwitterSelectedAccount;

                if (Program.UploadersConfig.TwitterOAuthInfoList != null && Program.UploadersConfig.TwitterOAuthInfoList.IsValidIndex(indexTwitpic))
                {
                    imageUploader = new TwitPicUploader(ApiKeys.TwitPicKey, Program.UploadersConfig.TwitterOAuthInfoList[indexTwitpic])
                    {
                        TwitPicThumbnailMode = Program.UploadersConfig.TwitPicThumbnailMode,
                        ShowFull             = Program.UploadersConfig.TwitPicShowFull
                    };
                }
                break;

            case ImageDestination.Twitsnaps:
                int indexTwitsnaps = Program.UploadersConfig.TwitterSelectedAccount;

                if (Program.UploadersConfig.TwitterOAuthInfoList.IsValidIndex(indexTwitsnaps))
                {
                    imageUploader = new TwitSnapsUploader(ApiKeys.TwitsnapsKey, Program.UploadersConfig.TwitterOAuthInfoList[indexTwitsnaps]);
                }
                break;

            case ImageDestination.yFrog:
                YfrogOptions yFrogOptions = new YfrogOptions(ApiKeys.ImageShackKey);
                yFrogOptions.Username = Program.UploadersConfig.YFrogUsername;
                yFrogOptions.Password = Program.UploadersConfig.YFrogPassword;
                yFrogOptions.Source   = Application.ProductName;
                imageUploader         = new YfrogUploader(yFrogOptions);
                break;

            case ImageDestination.Immio:
                imageUploader = new ImmioUploader();
                break;

            case ImageDestination.CustomImageUploader:
                if (Program.UploadersConfig.CustomUploadersList.IsValidIndex(Program.UploadersConfig.CustomImageUploaderSelected))
                {
                    imageUploader = new CustomImageUploader(Program.UploadersConfig.CustomUploadersList[Program.UploadersConfig.CustomImageUploaderSelected]);
                }
                break;
            }

            if (imageUploader != null)
            {
                PrepareUploader(imageUploader);
                return(imageUploader.Upload(stream, fileName));
            }

            return(null);
        }