diff --git a/ShareX.UploadersLib/Enums.cs b/ShareX.UploadersLib/Enums.cs index c1ebab1ea..556c8cfd8 100644 --- a/ShareX.UploadersLib/Enums.cs +++ b/ShareX.UploadersLib/Enums.cs @@ -353,4 +353,14 @@ public enum YouTubeVideoPrivacy // Localized Unlisted, Private } + + public enum BoxShareAccessLevel + { + [Description("Public - People with the link")] + Open, + [Description("Company - People in your company")] + Company, + [Description("Collaborators - Invited people only")] + Collaborators + } } \ No newline at end of file diff --git a/ShareX.UploadersLib/FileUploaders/Box.cs b/ShareX.UploadersLib/FileUploaders/Box.cs index dfa0c1db9..a266d5947 100644 --- a/ShareX.UploadersLib/FileUploaders/Box.cs +++ b/ShareX.UploadersLib/FileUploaders/Box.cs @@ -50,7 +50,8 @@ public override GenericUploader CreateUploader(UploadersConfig config, TaskRefer return new Box(config.BoxOAuth2Info) { FolderID = config.BoxSelectedFolder.id, - Share = config.BoxShare + Share = config.BoxShare, + ShareAccessLevel = config.BoxShareAccessLevel }; } @@ -69,12 +70,14 @@ public sealed class Box : FileUploader, IOAuth2 public OAuth2Info AuthInfo { get; set; } public string FolderID { get; set; } public bool Share { get; set; } + public BoxShareAccessLevel ShareAccessLevel { get; set; } public Box(OAuth2Info oauth) { AuthInfo = oauth; FolderID = "0"; Share = true; + ShareAccessLevel = BoxShareAccessLevel.Open; } public string GetAuthorizationURL() @@ -189,9 +192,9 @@ public BoxFileInfo GetFiles(string id) return null; } - public string CreateSharedLink(string id) + public string CreateSharedLink(string id, BoxShareAccessLevel accessLevel) { - string response = SendRequest(HttpMethod.PUT, "https://api.box.com/2.0/files/" + id, "{\"shared_link\": {\"access\": \"open\"}}", headers: GetAuthHeaders()); + string response = SendRequest(HttpMethod.PUT, "https://api.box.com/2.0/files/" + id, "{\"shared_link\": {\"access\": \"" + accessLevel.ToString().ToLower() +"\"}}", headers: GetAuthHeaders()); if (!string.IsNullOrEmpty(response)) { @@ -234,7 +237,7 @@ public override UploadResult Upload(Stream stream, string fileName) if (Share) { AllowReportProgress = false; - result.URL = CreateSharedLink(fileEntry.id); + result.URL = CreateSharedLink(fileEntry.id, ShareAccessLevel); } else { diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.Designer.cs b/ShareX.UploadersLib/Forms/UploadersConfigForm.Designer.cs index a43e34f6d..18927756c 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.Designer.cs +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.Designer.cs @@ -206,6 +206,8 @@ private void InitializeComponent() this.tpBox = new System.Windows.Forms.TabPage(); this.lblBoxFolderTip = new System.Windows.Forms.Label(); this.cbBoxShare = new System.Windows.Forms.CheckBox(); + this.cbBoxShareAccessLevel = new System.Windows.Forms.ComboBox(); + this.lblBoxShareAccessLevel = new System.Windows.Forms.Label(); this.lvBoxFolders = new ShareX.HelpersLib.MyListView(); this.chBoxFoldersName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.lblBoxFolderID = new System.Windows.Forms.Label(); @@ -1822,6 +1824,8 @@ private void InitializeComponent() this.tpBox.BackColor = System.Drawing.SystemColors.Window; this.tpBox.Controls.Add(this.lblBoxFolderTip); this.tpBox.Controls.Add(this.cbBoxShare); + this.tpBox.Controls.Add(this.cbBoxShareAccessLevel); + this.tpBox.Controls.Add(this.lblBoxShareAccessLevel); this.tpBox.Controls.Add(this.lvBoxFolders); this.tpBox.Controls.Add(this.lblBoxFolderID); this.tpBox.Controls.Add(this.btnBoxRefreshFolders); @@ -1841,6 +1845,19 @@ private void InitializeComponent() this.cbBoxShare.UseVisualStyleBackColor = true; this.cbBoxShare.CheckedChanged += new System.EventHandler(this.cbBoxShare_CheckedChanged); // + // cbBoxShareAccessLevel + // + this.cbBoxShareAccessLevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbBoxShareAccessLevel.FormattingEnabled = true; + resources.ApplyResources(this.cbBoxShareAccessLevel, "cbBoxShareAccessLevel"); + this.cbBoxShareAccessLevel.Name = "cbBoxShareAccessLevel"; + this.cbBoxShareAccessLevel.SelectedIndexChanged += new System.EventHandler(this.cbBoxShareAccessLevel_SelectedIndexChanged); + // + // lblBoxShareAccessLevel + // + resources.ApplyResources(this.lblBoxShareAccessLevel, "lblBoxShareAccessLevel"); + this.lblBoxShareAccessLevel.Name = "lblBoxShareAccessLevel"; + // // lvBoxFolders // this.lvBoxFolders.AutoFillColumn = true; @@ -5126,6 +5143,8 @@ private void InitializeComponent() private OAuthControl oauth2GoogleDrive; private System.Windows.Forms.Label lblBoxFolderTip; private System.Windows.Forms.CheckBox cbBoxShare; + private System.Windows.Forms.ComboBox cbBoxShareAccessLevel; + private System.Windows.Forms.Label lblBoxShareAccessLevel; private ShareX.HelpersLib.MyListView lvBoxFolders; private System.Windows.Forms.ColumnHeader chBoxFoldersName; private System.Windows.Forms.Label lblBoxFolderID; diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs index b45dd63c1..5ebcc4c61 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs @@ -415,6 +415,11 @@ private void LoadFileUploaderSettings() } cbBoxShare.Checked = Config.BoxShare; + cbBoxShareAccessLevel.Items.Clear(); + cbBoxShareAccessLevel.Items.AddRange(Helpers.GetEnumDescriptions()); + cbBoxShareAccessLevel.SelectedIndex = (int)Config.BoxShareAccessLevel; + cbBoxShareAccessLevel.Enabled = Config.BoxShare; + lblBoxShareAccessLevel.Enabled = Config.BoxShare; lblBoxFolderID.Text = Resources.UploadersConfigForm_LoadSettings_Selected_folder_ + " " + Config.BoxSelectedFolder.name; #endregion Box @@ -1857,6 +1862,13 @@ private void oauth2Box_ClearButtonClicked() private void cbBoxShare_CheckedChanged(object sender, EventArgs e) { Config.BoxShare = cbBoxShare.Checked; + cbBoxShareAccessLevel.Enabled = Config.BoxShare; + lblBoxShareAccessLevel.Enabled = Config.BoxShare; + } + + private void cbBoxShareAccessLevel_SelectedIndexChanged(object sender, EventArgs e) + { + Config.BoxShareAccessLevel = (BoxShareAccessLevel)cbBoxShareAccessLevel.SelectedIndex; } private void btnBoxRefreshFolders_Click(object sender, EventArgs e) diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.resx b/ShareX.UploadersLib/Forms/UploadersConfigForm.resx index e6e609102..13ce82626 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.resx +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.resx @@ -4121,6 +4121,57 @@ when you made the application key. 1 + + 21, 308 + + + 5, 5, 5, 5 + + + 250, 24 + + + 7 + + + cbBoxShareAccessLevel + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tpBox + + + 2 + + + 18, 290 + + + 4, 0, 4, 0 + + + 167, 19 + + + 8 + + + Shared link access level: + + + lblBoxShareAccessLevel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tpBox + + + 3 + Folder name diff --git a/ShareX.UploadersLib/UploadersConfig.cs b/ShareX.UploadersLib/UploadersConfig.cs index d2cc73540..36fdb3e4f 100644 --- a/ShareX.UploadersLib/UploadersConfig.cs +++ b/ShareX.UploadersLib/UploadersConfig.cs @@ -217,6 +217,7 @@ public class UploadersConfig : SettingsBase public OAuth2Info BoxOAuth2Info = null; public BoxFileEntry BoxSelectedFolder = Box.RootFolder; public bool BoxShare = true; + public BoxShareAccessLevel BoxShareAccessLevel = BoxShareAccessLevel.Open; #endregion Box