mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-02 18:26:27 +13:00
Add option to remove file extensions on Amazon S3 uploads
This commit is contained in:
parent
a4849a7c10
commit
051870383b
4 changed files with 76 additions and 8 deletions
|
@ -118,16 +118,25 @@ public override UploadResult Upload(Stream stream, string fileName)
|
||||||
string credential = URLHelpers.CombineURL(Settings.AccessKeyID, scope);
|
string credential = URLHelpers.CombineURL(Settings.AccessKeyID, scope);
|
||||||
string timeStamp = DateTime.UtcNow.ToString("yyyyMMddTHHmmssZ", CultureInfo.InvariantCulture);
|
string timeStamp = DateTime.UtcNow.ToString("yyyyMMddTHHmmssZ", CultureInfo.InvariantCulture);
|
||||||
string contentType = Helpers.GetMimeType(fileName);
|
string contentType = Helpers.GetMimeType(fileName);
|
||||||
string uploadPath = GetUploadPath(fileName);
|
|
||||||
string hashedPayload = "UNSIGNED-PAYLOAD";
|
string hashedPayload = "UNSIGNED-PAYLOAD";
|
||||||
|
|
||||||
NameValueCollection headers = new NameValueCollection();
|
if ((Settings.RemoveExtensionImage && Helpers.IsImageFile(fileName)) ||
|
||||||
headers["Host"] = host;
|
(Settings.RemoveExtensionText && Helpers.IsTextFile(fileName)) ||
|
||||||
headers["Content-Length"] = stream.Length.ToString();
|
(Settings.RemoveExtensionVideo && Helpers.IsVideoFile(fileName)))
|
||||||
headers["Content-Type"] = contentType;
|
{
|
||||||
headers["x-amz-date"] = timeStamp;
|
fileName = Path.GetFileNameWithoutExtension(fileName);
|
||||||
headers["x-amz-content-sha256"] = hashedPayload;
|
}
|
||||||
headers["x-amz-storage-class"] = Settings.StorageClass.ToString();
|
string uploadPath = GetUploadPath(fileName);
|
||||||
|
|
||||||
|
NameValueCollection headers = new NameValueCollection
|
||||||
|
{
|
||||||
|
["Host"] = host,
|
||||||
|
["Content-Length"] = stream.Length.ToString(),
|
||||||
|
["Content-Type"] = contentType,
|
||||||
|
["x-amz-date"] = timeStamp,
|
||||||
|
["x-amz-content-sha256"] = hashedPayload,
|
||||||
|
["x-amz-storage-class"] = Settings.StorageClass.ToString()
|
||||||
|
};
|
||||||
if (Settings.SetPublicACL) headers["x-amz-acl"] = "public-read";
|
if (Settings.SetPublicACL) headers["x-amz-acl"] = "public-read";
|
||||||
|
|
||||||
string canonicalURI = uploadPath;
|
string canonicalURI = uploadPath;
|
||||||
|
|
|
@ -38,5 +38,8 @@ public class AmazonS3Settings
|
||||||
public string CustomDomain { get; set; }
|
public string CustomDomain { get; set; }
|
||||||
public bool SetPublicACL { get; set; } = true;
|
public bool SetPublicACL { get; set; } = true;
|
||||||
public AmazonS3StorageClass StorageClass { get; set; }
|
public AmazonS3StorageClass StorageClass { get; set; }
|
||||||
|
public bool RemoveExtensionImage { get; set; } = false;
|
||||||
|
public bool RemoveExtensionVideo { get; set; } = false;
|
||||||
|
public bool RemoveExtensionText { get; set; } = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -625,6 +625,10 @@ private void InitializeComponent()
|
||||||
this.lblWidthHint = new System.Windows.Forms.Label();
|
this.lblWidthHint = new System.Windows.Forms.Label();
|
||||||
this.ttlvMain = new ShareX.HelpersLib.TabToListView();
|
this.ttlvMain = new ShareX.HelpersLib.TabToListView();
|
||||||
this.actRapidShareAccountType = new ShareX.UploadersLib.AccountTypeControl();
|
this.actRapidShareAccountType = new ShareX.UploadersLib.AccountTypeControl();
|
||||||
|
this.cbAmazonS3StripExtensionImage = new System.Windows.Forms.CheckBox();
|
||||||
|
this.cbAmazonS3StripExtensionVideo = new System.Windows.Forms.CheckBox();
|
||||||
|
this.cbAmazonS3StripExtensionText = new System.Windows.Forms.CheckBox();
|
||||||
|
this.lblAmazonS3StripExtension = new System.Windows.Forms.Label();
|
||||||
this.tpOtherUploaders.SuspendLayout();
|
this.tpOtherUploaders.SuspendLayout();
|
||||||
this.tcOtherUploaders.SuspendLayout();
|
this.tcOtherUploaders.SuspendLayout();
|
||||||
this.tpTwitter.SuspendLayout();
|
this.tpTwitter.SuspendLayout();
|
||||||
|
@ -2560,8 +2564,12 @@ private void InitializeComponent()
|
||||||
//
|
//
|
||||||
// gbAmazonS3Advanced
|
// gbAmazonS3Advanced
|
||||||
//
|
//
|
||||||
|
this.gbAmazonS3Advanced.Controls.Add(this.lblAmazonS3StripExtension);
|
||||||
|
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3StripExtensionText);
|
||||||
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3StorageClass);
|
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3StorageClass);
|
||||||
|
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3StripExtensionVideo);
|
||||||
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3PublicACL);
|
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3PublicACL);
|
||||||
|
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3StripExtensionImage);
|
||||||
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3UsePathStyle);
|
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3UsePathStyle);
|
||||||
this.gbAmazonS3Advanced.Controls.Add(this.btnAmazonS3StorageClassHelp);
|
this.gbAmazonS3Advanced.Controls.Add(this.btnAmazonS3StorageClassHelp);
|
||||||
this.gbAmazonS3Advanced.Controls.Add(this.lblAmazonS3StorageClass);
|
this.gbAmazonS3Advanced.Controls.Add(this.lblAmazonS3StorageClass);
|
||||||
|
@ -5092,6 +5100,32 @@ private void InitializeComponent()
|
||||||
this.actRapidShareAccountType.Name = "actRapidShareAccountType";
|
this.actRapidShareAccountType.Name = "actRapidShareAccountType";
|
||||||
this.actRapidShareAccountType.SelectedAccountType = ShareX.UploadersLib.AccountType.Anonymous;
|
this.actRapidShareAccountType.SelectedAccountType = ShareX.UploadersLib.AccountType.Anonymous;
|
||||||
//
|
//
|
||||||
|
// cbAmazonS3StripExtensionImage
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.cbAmazonS3StripExtensionImage, "cbAmazonS3StripExtensionImage");
|
||||||
|
this.cbAmazonS3StripExtensionImage.Name = "cbAmazonS3StripExtensionImage";
|
||||||
|
this.cbAmazonS3StripExtensionImage.UseVisualStyleBackColor = true;
|
||||||
|
this.cbAmazonS3StripExtensionImage.CheckedChanged += new System.EventHandler(this.cbAmazonS3StripExtensionImage_CheckedChanged);
|
||||||
|
//
|
||||||
|
// cbAmazonS3StripExtensionVideo
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.cbAmazonS3StripExtensionVideo, "cbAmazonS3StripExtensionVideo");
|
||||||
|
this.cbAmazonS3StripExtensionVideo.Name = "cbAmazonS3StripExtensionVideo";
|
||||||
|
this.cbAmazonS3StripExtensionVideo.UseVisualStyleBackColor = true;
|
||||||
|
this.cbAmazonS3StripExtensionVideo.CheckedChanged += new System.EventHandler(this.cbAmazonS3StripExtensionVideo_CheckedChanged);
|
||||||
|
//
|
||||||
|
// cbAmazonS3StripExtensionText
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.cbAmazonS3StripExtensionText, "cbAmazonS3StripExtensionText");
|
||||||
|
this.cbAmazonS3StripExtensionText.Name = "cbAmazonS3StripExtensionText";
|
||||||
|
this.cbAmazonS3StripExtensionText.UseVisualStyleBackColor = true;
|
||||||
|
this.cbAmazonS3StripExtensionText.CheckedChanged += new System.EventHandler(this.cbAmazonS3StripExtensionText_CheckedChanged);
|
||||||
|
//
|
||||||
|
// lblAmazonS3StripExtension
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.lblAmazonS3StripExtension, "lblAmazonS3StripExtension");
|
||||||
|
this.lblAmazonS3StripExtension.Name = "lblAmazonS3StripExtension";
|
||||||
|
//
|
||||||
// UploadersConfigForm
|
// UploadersConfigForm
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
|
@ -5862,5 +5896,9 @@ private void InitializeComponent()
|
||||||
private System.Windows.Forms.Label lblLithiioEmail;
|
private System.Windows.Forms.Label lblLithiioEmail;
|
||||||
private System.Windows.Forms.CheckBox cbAmazonS3PublicACL;
|
private System.Windows.Forms.CheckBox cbAmazonS3PublicACL;
|
||||||
private System.Windows.Forms.GroupBox gbAmazonS3Advanced;
|
private System.Windows.Forms.GroupBox gbAmazonS3Advanced;
|
||||||
|
private System.Windows.Forms.Label lblAmazonS3StripExtension;
|
||||||
|
private System.Windows.Forms.CheckBox cbAmazonS3StripExtensionText;
|
||||||
|
private System.Windows.Forms.CheckBox cbAmazonS3StripExtensionVideo;
|
||||||
|
private System.Windows.Forms.CheckBox cbAmazonS3StripExtensionImage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -588,6 +588,9 @@ public void LoadSettings()
|
||||||
cbAmazonS3StorageClass.Items.AddRange(Helpers.GetLocalizedEnumDescriptions<AmazonS3StorageClass>());
|
cbAmazonS3StorageClass.Items.AddRange(Helpers.GetLocalizedEnumDescriptions<AmazonS3StorageClass>());
|
||||||
cbAmazonS3StorageClass.SelectedIndex = (int)Config.AmazonS3Settings.StorageClass;
|
cbAmazonS3StorageClass.SelectedIndex = (int)Config.AmazonS3Settings.StorageClass;
|
||||||
cbAmazonS3PublicACL.Checked = Config.AmazonS3Settings.SetPublicACL;
|
cbAmazonS3PublicACL.Checked = Config.AmazonS3Settings.SetPublicACL;
|
||||||
|
cbAmazonS3StripExtensionImage.Checked = Config.AmazonS3Settings.RemoveExtensionImage;
|
||||||
|
cbAmazonS3StripExtensionVideo.Checked = Config.AmazonS3Settings.RemoveExtensionVideo;
|
||||||
|
cbAmazonS3StripExtensionText.Checked = Config.AmazonS3Settings.RemoveExtensionText;
|
||||||
UpdateAmazonS3Status();
|
UpdateAmazonS3Status();
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -2271,6 +2274,21 @@ private void cbAmazonS3PublicACL_CheckedChanged(object sender, EventArgs e)
|
||||||
Config.AmazonS3Settings.SetPublicACL = cbAmazonS3PublicACL.Checked;
|
Config.AmazonS3Settings.SetPublicACL = cbAmazonS3PublicACL.Checked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void cbAmazonS3StripExtensionImage_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Config.AmazonS3Settings.RemoveExtensionImage = cbAmazonS3StripExtensionImage.Checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cbAmazonS3StripExtensionVideo_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Config.AmazonS3Settings.RemoveExtensionVideo = cbAmazonS3StripExtensionVideo.Checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cbAmazonS3StripExtensionText_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Config.AmazonS3Settings.RemoveExtensionText = cbAmazonS3StripExtensionText.Checked;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion Amazon S3
|
#endregion Amazon S3
|
||||||
|
|
||||||
#region ownCloud / Nextcloud
|
#region ownCloud / Nextcloud
|
||||||
|
|
Loading…
Reference in a new issue