diff --git a/ShareX.UploadersLib/FileUploaders/Seafile.cs b/ShareX.UploadersLib/FileUploaders/Seafile.cs index dde5fccef..dfc2cafc8 100644 --- a/ShareX.UploadersLib/FileUploaders/Seafile.cs +++ b/ShareX.UploadersLib/FileUploaders/Seafile.cs @@ -58,6 +58,7 @@ public override GenericUploader CreateUploader(UploadersConfig config, TaskRefer ShareDaysToExpire = config.SeafileShareDaysToExpire, SharePassword = config.SeafileSharePassword, CreateShareableURL = config.SeafileCreateShareableURL, + CreateShareableURLDirect = config.SeafileCreateShareableURLDirect, IgnoreInvalidCert = config.SeafileIgnoreInvalidCert }; } @@ -76,6 +77,7 @@ public sealed class Seafile : FileUploader public int ShareDaysToExpire { get; set; } public string SharePassword { get; set; } public bool CreateShareableURL { get; set; } + public bool CreateShareableURLDirect { get; set; } public bool IgnoreInvalidCert { get; set; } public Seafile(string apiurl, string authtoken, string repoid) @@ -450,6 +452,15 @@ public override UploadResult Upload(Stream stream, string fileName) { AllowReportProgress = false; result.URL = ShareFile(Path + fileName); + + if (CreateShareableURLDirect) + { + var uriBuilder = new UriBuilder(result.URL); + var query = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query); + query["raw"] = "1"; + uriBuilder.Query = query.ToString(); + result.URL = $"{uriBuilder.Scheme}://{uriBuilder.Host}{uriBuilder.Path}{uriBuilder.Query}"; + } } else { diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.Designer.cs b/ShareX.UploadersLib/Forms/UploadersConfigForm.Designer.cs index 984f8b310..6fc20375a 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.Designer.cs +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.Designer.cs @@ -425,6 +425,7 @@ private void InitializeComponent() this.lblSeafilePassword = new System.Windows.Forms.Label(); this.cbSeafileIgnoreInvalidCert = new System.Windows.Forms.CheckBox(); this.cbSeafileCreateShareableURL = new System.Windows.Forms.CheckBox(); + this.cbSeafileCreateShareableURLDirect = new System.Windows.Forms.CheckBox(); this.txtSeafileAuthToken = new System.Windows.Forms.TextBox(); this.lblSeafileAuthToken = new System.Windows.Forms.Label(); this.lblSeafileAPIURL = new System.Windows.Forms.Label(); @@ -3177,6 +3178,7 @@ private void InitializeComponent() this.tpSeafile.Controls.Add(this.grpSeafileObtainAuthToken); this.tpSeafile.Controls.Add(this.cbSeafileIgnoreInvalidCert); this.tpSeafile.Controls.Add(this.cbSeafileCreateShareableURL); + this.tpSeafile.Controls.Add(this.cbSeafileCreateShareableURLDirect); this.tpSeafile.Controls.Add(this.txtSeafileAuthToken); this.tpSeafile.Controls.Add(this.lblSeafileAuthToken); this.tpSeafile.Controls.Add(this.lblSeafileAPIURL); @@ -3427,6 +3429,13 @@ private void InitializeComponent() this.cbSeafileCreateShareableURL.UseVisualStyleBackColor = true; this.cbSeafileCreateShareableURL.CheckedChanged += new System.EventHandler(this.cbSeafileCreateShareableURL_CheckedChanged); // + // cbSeafileCreateShareableURLDirect + // + resources.ApplyResources(this.cbSeafileCreateShareableURLDirect, "cbSeafileCreateShareableURLDirect"); + this.cbSeafileCreateShareableURLDirect.Name = "cbSeafileCreateShareableURLDirect"; + this.cbSeafileCreateShareableURLDirect.UseVisualStyleBackColor = true; + this.cbSeafileCreateShareableURLDirect.CheckedChanged += new System.EventHandler(this.cbSeafileCreateShareableURLDirect_CheckedChanged); + // // txtSeafileAuthToken // resources.ApplyResources(this.txtSeafileAuthToken, "txtSeafileAuthToken"); @@ -5309,6 +5318,7 @@ private void InitializeComponent() private System.Windows.Forms.Label lblSeafilePassword; private System.Windows.Forms.CheckBox cbSeafileIgnoreInvalidCert; private System.Windows.Forms.CheckBox cbSeafileCreateShareableURL; + private System.Windows.Forms.CheckBox cbSeafileCreateShareableURLDirect; private System.Windows.Forms.TextBox txtSeafileAuthToken; private System.Windows.Forms.Label lblSeafileAuthToken; private System.Windows.Forms.Label lblSeafileAPIURL; diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs index 642d903fe..24c88b0d5 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs @@ -639,6 +639,8 @@ private void LoadFileUploaderSettings() txtSeafileLibraryPassword.ReadOnly = Config.SeafileIsLibraryEncrypted; btnSeafileLibraryPasswordValidate.Enabled = !Config.SeafileIsLibraryEncrypted; cbSeafileCreateShareableURL.Checked = Config.SeafileCreateShareableURL; + cbSeafileCreateShareableURLDirect.Checked = Config.SeafileCreateShareableURLDirect; + cbSeafileCreateShareableURLDirect.Enabled = cbSeafileCreateShareableURL.Checked; cbSeafileIgnoreInvalidCert.Checked = Config.SeafileIgnoreInvalidCert; nudSeafileExpireDays.SetValue(Config.SeafileShareDaysToExpire); txtSeafileSharePassword.Text = Config.SeafileSharePassword; @@ -2596,6 +2598,12 @@ private void btnSeafileGetAuthToken_Click(object sender, EventArgs e) private void cbSeafileCreateShareableURL_CheckedChanged(object sender, EventArgs e) { Config.SeafileCreateShareableURL = cbSeafileCreateShareableURL.Checked; + cbSeafileCreateShareableURLDirect.Enabled = cbSeafileCreateShareableURL.Checked; + } + + private void cbSeafileCreateShareableURLDirect_CheckedChanged(object sender, EventArgs e) + { + Config.SeafileCreateShareableURLDirect = cbSeafileCreateShareableURLDirect.Checked; } private void cbSeafileIgnoreInvalidCert_CheckedChanged(object sender, EventArgs e) diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.resx b/ShareX.UploadersLib/Forms/UploadersConfigForm.resx index 1e8f43240..1ce902a27 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.resx +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.resx @@ -13085,6 +13085,18 @@ when you made the application key. 17 + + cbSeafileCreateShareableURLDirect + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tpSeafile + + + 17 + txtSeafileAuthToken @@ -14169,6 +14181,36 @@ Using an encrypted library disables sharing. 17 + + True + + + NoControl + + + 160, 103 + + + 131, 17 + + + 8 + + + Direct URL + + + cbSeafileCreateShareableURLDirect + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tpSeafile + + + 17 + 16, 77 diff --git a/ShareX.UploadersLib/UploadersConfig.cs b/ShareX.UploadersLib/UploadersConfig.cs index ba73fe8b0..ce97e386d 100644 --- a/ShareX.UploadersLib/UploadersConfig.cs +++ b/ShareX.UploadersLib/UploadersConfig.cs @@ -359,6 +359,7 @@ public class UploadersConfig : SettingsBase public bool SeafileIsLibraryEncrypted = false; public string SeafileEncryptedLibraryPassword = ""; public bool SeafileCreateShareableURL = true; + public bool SeafileCreateShareableURLDirect = false; public bool SeafileIgnoreInvalidCert = false; public int SeafileShareDaysToExpire = 0; public string SeafileSharePassword = "";