Пример #1
0
        public static void Test()
        {
            #region Image Uploaders

            foreach (ImageDestType uploader in Enum.GetValues(typeof(UploadersLib.ImageDestType)))
            {
                Console.WriteLine("Starting: " + uploader.GetDescription());
                WorkerTask task = new WorkerTask(WorkerTask.Jobs.UPLOAD_IMAGE);
                task.MyImageUploader = uploader;
                task.UpdateLocalFilePath(Tester.TestFile);
                if (uploader != ImageDestType.TWITSNAPS)
                {
                    new TaskManager(ref task).UploadImage();
                }
            }

            #endregion

            #region Text Uploaders
            /*
            foreach (TextDestType uploader in Enum.GetValues(typeof(UploadersLib.TextDestType)))
            {
                WorkerTask task = new WorkerTask(WorkerTask.Jobs.UploadFromClipboard);

                task.MyText = TextInfo.FromString(uploader);
                task.MakeTinyURL = false; // preventing Error: TinyURL redirects to a TinyURL.
                task.MyTextUploader = uploader;
                task.RunWorker();
            }
            */
            #endregion

            #region File Uploaders

            #endregion

            #region URL Shorteners

            #endregion
        }
Пример #2
0
        /// <summary>
        /// Function to return the file path of a captured image. ImageFormat is based on length of the image.
        /// </summary>
        /// <param name="img">The actual image</param>
        /// <param name="filePath">The path to where the image will be saved</param>
        /// <returns>Returns the file path to a screenshot</returns>
        public static string SaveImage(ref WorkerTask task)
        {
            Image img = task.MyImage;
            string filePath = task.LocalFilePath;

            if (!string.IsNullOrEmpty(filePath))
            {
                img = ImageEffects.ApplySizeChanges(img);
                img = ImageEffects.ApplyScreenshotEffects(img);
                if (task.Job != WorkerTask.Jobs.UploadFromClipboard || !Engine.conf.WatermarkExcludeClipboardUpload)
                {
                    img = ImageEffects.ApplyWatermark(img);
                }

                long size = (long)Engine.conf.SwitchAfter * 1024;

                MemoryStream ms = null;

                GraphicsMgr.SaveImageToMemoryStreamOptions opt = new GraphicsMgr.SaveImageToMemoryStreamOptions(img, Engine.zImageFileFormat);
                opt.GIFQuality = Engine.conf.GIFQuality;
                opt.JpgQuality = Engine.conf.JpgQuality;
                opt.MakeJPGBackgroundWhite = Engine.conf.MakeJPGBackgroundWhite;

                try
                {
                    ms = GraphicsMgr.SaveImageToMemoryStream(opt);

                    if (ms.Length > size && size != 0)
                    {
                        opt.MyImageFileFormat = Engine.zImageFileFormatSwitch;
                        ms = GraphicsMgr.SaveImageToMemoryStream(opt);
                        filePath = Path.ChangeExtension(filePath, Engine.zImageFileFormatSwitch.Extension);
                    }

                    if (!Directory.Exists(Path.GetDirectoryName(filePath)))
                    {
                        Directory.CreateDirectory(Path.GetDirectoryName(filePath));
                    }

                    int retry = 3;
                    while (retry > 0 && !File.Exists(filePath))
                    {
                        using (FileStream fi = File.Create(filePath))
                        {
                            if (retry < 3) { System.Threading.Thread.Sleep(1000); }
                            FileSystem.AppendDebug(string.Format("Writing image {0}x{1} to {2}", img.Width, img.Height, filePath));
                            ms.WriteTo(fi);
                            retry--;
                        }
                    }
                }
                catch (Exception ex)
                {
                    FileSystem.AppendDebug("Error while saving image", ex);
                }
                finally
                {
                    if (ms != null) ms.Dispose();
                }
            }

            task.UpdateLocalFilePath(filePath);
            return filePath;
        }
Пример #3
0
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker bw = (BackgroundWorker)sender;
            UploaderInfo[] uploaders = (UploaderInfo[])e.Argument;

            foreach (UploaderInfo uploader in uploaders)
            {
                if (this.IsDisposed || !isTesting || uploader == null)
                {
                    break;
                }

                DestConfig dcTester = new DestConfig();
                dcTester.Outputs.Add(OutputEnum.RemoteHost);

                TaskInfo tiTester = new TaskInfo()
                {
                    Job = WorkerTask.JobLevel2.UploadFromClipboard,
                    DestConfig = dcTester
                };
                WorkerTask task = new WorkerTask(new BackgroundWorker() { WorkerReportsProgress = true }, tiTester);

                uploader.Timer = new Stopwatch();
                uploader.Timer.Start();
                uploader.Task = task;
                bw.ReportProgress((int)UploadStatus.Uploading, uploader);

                try
                {
                    switch (uploader.UploaderType)
                    {
                        case UploaderType.ImageUploader:
                            task.WorkflowConfig.DestConfig.ImageUploaders.Add(uploader.ImageUploader);
                            task.UpdateLocalFilePath(TestImageFilePath);
                            task.PublishData();
                            break;
                        case UploaderType.FileUploader:
                            task.WorkflowConfig.DestConfig.ImageUploaders.Add(ImageDestination.FileUploader);
                            task.WorkflowConfig.DestConfig.FileUploaders.Add(uploader.FileUploader);
                            task.UpdateLocalFilePath(TestFilePath);
                            task.PublishData();
                            break;
                        case UploaderType.TextUploader:
                            task.WorkflowConfig.DestConfig.TextUploaders.Add(uploader.TextUploader);
                            task.SetText(TestText);
                            task.PublishData();
                            break;
                        case UploaderType.UrlShortener:
                            task.WorkflowConfig.DestConfig.LinkUploaders.Add(uploader.UrlShortener);
                            task.ShortenURL(TestURL);
                            if (task.UploadResults.Count > 0)
                            {
                                task.UploadResults[0].URL = task.UploadResults[0].ShortenedURL;
                            }
                            break;
                        default:
                            throw new Exception("Unknown uploader.");
                    }
                }
                catch (Exception ex)
                {
                    ConsoleWriteLine(ex.ToString());
                }
                finally
                {
                    uploader.Timer.Stop();
                    uploader.Task = task;
                    bw.ReportProgress((int)UploadStatus.Uploaded, uploader);
                }
            }
        }