Merge pull request #3335 from sylveon/master

Add option to replace non-unreserved characters by underscores
This commit is contained in:
Jaex 2018-04-25 04:03:28 +03:00 committed by GitHub
commit 8add798de0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 74 additions and 16 deletions

View file

@ -241,6 +241,7 @@ private void InitializeComponent()
this.pgTaskSettings = new System.Windows.Forms.PropertyGrid();
this.chkOverrideAdvancedSettings = new System.Windows.Forms.CheckBox();
this.tttvMain = new ShareX.HelpersLib.TabToTreeView();
this.cbFileUploadReplaceProblematicCharacters = new System.Windows.Forms.CheckBox();
this.tcTaskSettings.SuspendLayout();
this.tpTask.SuspendLayout();
this.cmsDestinations.SuspendLayout();
@ -1630,6 +1631,7 @@ private void InitializeComponent()
// tpFileNaming
//
this.tpFileNaming.BackColor = System.Drawing.SystemColors.Window;
this.tpFileNaming.Controls.Add(this.cbFileUploadReplaceProblematicCharacters);
this.tpFileNaming.Controls.Add(this.lblAutoIncrementNumber);
this.tpFileNaming.Controls.Add(this.cbRegionCaptureUseWindowPattern);
this.tpFileNaming.Controls.Add(this.cbNameFormatCustomTimeZone);
@ -2067,6 +2069,13 @@ private void InitializeComponent()
this.tttvMain.TreeViewSize = 190;
this.tttvMain.TabChanged += new ShareX.HelpersLib.TabToTreeView.TabChangedEventHandler(this.tttvMain_TabChanged);
//
// cbFileUploadReplaceProblematicCharacters
//
resources.ApplyResources(this.cbFileUploadReplaceProblematicCharacters, "cbFileUploadReplaceProblematicCharacters");
this.cbFileUploadReplaceProblematicCharacters.Name = "cbFileUploadReplaceProblematicCharacters";
this.cbFileUploadReplaceProblematicCharacters.UseVisualStyleBackColor = true;
this.cbFileUploadReplaceProblematicCharacters.CheckedChanged += new System.EventHandler(this.cbFileUploadReplaceProblematicCharacters_CheckedChanged);
//
// TaskSettingsForm
//
resources.ApplyResources(this, "$this");
@ -2367,5 +2376,6 @@ private void InitializeComponent()
private System.Windows.Forms.Label lblImagePNGBitDepth;
private System.Windows.Forms.Button btnWatchFolderEdit;
private System.Windows.Forms.CheckBox cbScreenRecorderConfirmAbort;
private System.Windows.Forms.CheckBox cbFileUploadReplaceProblematicCharacters;
}
}

View file

@ -309,6 +309,7 @@ public TaskSettingsForm(TaskSettings hotkeySetting, bool isDefault = false)
CodeMenu.Create<CodeMenuEntryFilename>(txtNameFormatPatternActiveWindow, CodeMenuEntryFilename.n);
cbRegionCaptureUseWindowPattern.Checked = TaskSettings.UploadSettings.RegionCaptureUseWindowPattern;
cbFileUploadUseNamePattern.Checked = TaskSettings.UploadSettings.FileUploadUseNamePattern;
cbFileUploadReplaceProblematicCharacters.Checked = TaskSettings.UploadSettings.FileUploadReplaceProblematicCharacters;
UpdateNameFormatPreviews();
cbNameFormatCustomTimeZone.Checked = cbNameFormatTimeZone.Enabled = TaskSettings.UploadSettings.UseCustomTimeZone;
cbNameFormatTimeZone.Items.AddRange(TimeZoneInfo.GetSystemTimeZones().ToArray());
@ -1520,6 +1521,11 @@ private void txtToolsScreenColorPickerFormat_TextChanged(object sender, EventArg
TaskSettings.ToolsSettings.ScreenColorPickerFormat = txtToolsScreenColorPickerFormat.Text;
}
private void cbFileUploadReplaceProblematicCharacters_CheckedChanged(object sender, EventArgs e)
{
TaskSettings.UploadSettings.FileUploadReplaceProblematicCharacters = cbFileUploadReplaceProblematicCharacters.Checked;
}
#endregion Tools
#region Advanced

View file

@ -3939,11 +3939,38 @@
<data name="&gt;&gt;tpUploadMain.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="cbFileUploadReplaceProblematicCharacters.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cbFileUploadReplaceProblematicCharacters.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 183</value>
</data>
<data name="cbFileUploadReplaceProblematicCharacters.Size" type="System.Drawing.Size, System.Drawing">
<value>370, 17</value>
</data>
<data name="cbFileUploadReplaceProblematicCharacters.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="cbFileUploadReplaceProblematicCharacters.Text" xml:space="preserve">
<value>Replace characters problematic in URLs by underscores when uploading</value>
</data>
<data name="&gt;&gt;cbFileUploadReplaceProblematicCharacters.Name" xml:space="preserve">
<value>cbFileUploadReplaceProblematicCharacters</value>
</data>
<data name="&gt;&gt;cbFileUploadReplaceProblematicCharacters.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbFileUploadReplaceProblematicCharacters.Parent" xml:space="preserve">
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;cbFileUploadReplaceProblematicCharacters.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="lblAutoIncrementNumber.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblAutoIncrementNumber.Location" type="System.Drawing.Point, System.Drawing">
<value>304, 189</value>
<value>304, 211</value>
</data>
<data name="lblAutoIncrementNumber.Size" type="System.Drawing.Size, System.Drawing">
<value>13, 13</value>
@ -3964,7 +3991,7 @@
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;lblAutoIncrementNumber.ZOrder" xml:space="preserve">
<value>0</value>
<value>1</value>
</data>
<data name="cbRegionCaptureUseWindowPattern.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -3991,7 +4018,7 @@
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;cbRegionCaptureUseWindowPattern.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="cbNameFormatCustomTimeZone.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -4000,7 +4027,7 @@
<value>NoControl</value>
</data>
<data name="cbNameFormatCustomTimeZone.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 216</value>
<value>8, 238</value>
</data>
<data name="cbNameFormatCustomTimeZone.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 17</value>
@ -4021,7 +4048,7 @@
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;cbNameFormatCustomTimeZone.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="lblNameFormatPatternPreview.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -4051,7 +4078,7 @@
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;lblNameFormatPatternPreview.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<data name="lblNameFormatPatternActiveWindow.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -4081,7 +4108,7 @@
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;lblNameFormatPatternActiveWindow.ZOrder" xml:space="preserve">
<value>4</value>
<value>5</value>
</data>
<data name="lblNameFormatPatternPreviewActiveWindow.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -4111,10 +4138,10 @@
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;lblNameFormatPatternPreviewActiveWindow.ZOrder" xml:space="preserve">
<value>5</value>
<value>6</value>
</data>
<data name="cbNameFormatTimeZone.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 240</value>
<value>8, 262</value>
</data>
<data name="cbNameFormatTimeZone.Size" type="System.Drawing.Size, System.Drawing">
<value>288, 21</value>
@ -4132,7 +4159,7 @@
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;cbNameFormatTimeZone.ZOrder" xml:space="preserve">
<value>6</value>
<value>7</value>
</data>
<data name="txtNameFormatPatternActiveWindow.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 88</value>
@ -4153,13 +4180,13 @@
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;txtNameFormatPatternActiveWindow.ZOrder" xml:space="preserve">
<value>7</value>
<value>8</value>
</data>
<data name="btnResetAutoIncrementNumber.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="btnResetAutoIncrementNumber.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 184</value>
<value>8, 206</value>
</data>
<data name="btnResetAutoIncrementNumber.Size" type="System.Drawing.Size, System.Drawing">
<value>288, 23</value>
@ -4180,7 +4207,7 @@
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;btnResetAutoIncrementNumber.ZOrder" xml:space="preserve">
<value>8</value>
<value>9</value>
</data>
<data name="cbFileUploadUseNamePattern.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -4210,7 +4237,7 @@
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;cbFileUploadUseNamePattern.ZOrder" xml:space="preserve">
<value>9</value>
<value>10</value>
</data>
<data name="lblNameFormatPattern.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -4240,7 +4267,7 @@
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;lblNameFormatPattern.ZOrder" xml:space="preserve">
<value>10</value>
<value>11</value>
</data>
<data name="txtNameFormatPattern.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 24</value>
@ -4261,7 +4288,7 @@
<value>tpFileNaming</value>
</data>
<data name="&gt;&gt;txtNameFormatPattern.ZOrder" xml:space="preserve">
<value>11</value>
<value>12</value>
</data>
<data name="tpFileNaming.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>

View file

@ -370,6 +370,7 @@ public class TaskSettingsUpload
public string NameFormatPatternActiveWindow = "%pn_%y-%mo-%d_%h-%mi-%s";
public bool RegionCaptureUseWindowPattern = true;
public bool FileUploadUseNamePattern = false;
public bool FileUploadReplaceProblematicCharacters = true;
#endregion Upload

View file

@ -34,6 +34,7 @@ You should have received a copy of the GNU General Public License
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows.Forms;
@ -854,6 +855,19 @@ public UploadResult UploadData(IGenericUploaderService service, Stream stream, s
uploader.EarlyURLCopyRequested += url => ClipboardHelpers.CopyText(url);
}
if (Info.TaskSettings.UploadSettings.FileUploadReplaceProblematicCharacters)
{
// http://www.ietf.org/rfc/rfc3986.txt
// Section 2.3:
// Characters that are allowed in a URI but do not have a reserved
// purpose are called unreserved. These include uppercase and lowercase
// letters, decimal digits, hyphen, period, underscore, and tilde.
// unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
//
// \w takes care of alpha, digit and _ for us
fileName = Regex.Replace(fileName, @"[^\w-.~]", "_");
}
Info.UploadDuration = Stopwatch.StartNew();
UploadResult result = uploader.Upload(stream, fileName);