Merge pull request #4810 from fib25/feature/box-upload-share-link-access-level

Allow "access level" selection for Box shareable link
This commit is contained in:
Jaex 2020-05-16 00:13:32 +03:00 committed by GitHub
commit 269359b736
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 100 additions and 4 deletions

View file

@ -353,4 +353,14 @@ public enum YouTubeVideoPrivacy // Localized
Unlisted, Unlisted,
Private Private
} }
public enum BoxShareAccessLevel
{
[Description("Public - People with the link")]
Open,
[Description("Company - People in your company")]
Company,
[Description("Collaborators - Invited people only")]
Collaborators
}
} }

View file

@ -50,7 +50,8 @@ public override GenericUploader CreateUploader(UploadersConfig config, TaskRefer
return new Box(config.BoxOAuth2Info) return new Box(config.BoxOAuth2Info)
{ {
FolderID = config.BoxSelectedFolder.id, 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 OAuth2Info AuthInfo { get; set; }
public string FolderID { get; set; } public string FolderID { get; set; }
public bool Share { get; set; } public bool Share { get; set; }
public BoxShareAccessLevel ShareAccessLevel { get; set; }
public Box(OAuth2Info oauth) public Box(OAuth2Info oauth)
{ {
AuthInfo = oauth; AuthInfo = oauth;
FolderID = "0"; FolderID = "0";
Share = true; Share = true;
ShareAccessLevel = BoxShareAccessLevel.Open;
} }
public string GetAuthorizationURL() public string GetAuthorizationURL()
@ -189,9 +192,9 @@ public BoxFileInfo GetFiles(string id)
return null; 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)) if (!string.IsNullOrEmpty(response))
{ {
@ -234,7 +237,7 @@ public override UploadResult Upload(Stream stream, string fileName)
if (Share) if (Share)
{ {
AllowReportProgress = false; AllowReportProgress = false;
result.URL = CreateSharedLink(fileEntry.id); result.URL = CreateSharedLink(fileEntry.id, ShareAccessLevel);
} }
else else
{ {

View file

@ -206,6 +206,8 @@ private void InitializeComponent()
this.tpBox = new System.Windows.Forms.TabPage(); this.tpBox = new System.Windows.Forms.TabPage();
this.lblBoxFolderTip = new System.Windows.Forms.Label(); this.lblBoxFolderTip = new System.Windows.Forms.Label();
this.cbBoxShare = new System.Windows.Forms.CheckBox(); 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.lvBoxFolders = new ShareX.HelpersLib.MyListView();
this.chBoxFoldersName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chBoxFoldersName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.lblBoxFolderID = new System.Windows.Forms.Label(); this.lblBoxFolderID = new System.Windows.Forms.Label();
@ -1822,6 +1824,8 @@ private void InitializeComponent()
this.tpBox.BackColor = System.Drawing.SystemColors.Window; this.tpBox.BackColor = System.Drawing.SystemColors.Window;
this.tpBox.Controls.Add(this.lblBoxFolderTip); this.tpBox.Controls.Add(this.lblBoxFolderTip);
this.tpBox.Controls.Add(this.cbBoxShare); 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.lvBoxFolders);
this.tpBox.Controls.Add(this.lblBoxFolderID); this.tpBox.Controls.Add(this.lblBoxFolderID);
this.tpBox.Controls.Add(this.btnBoxRefreshFolders); this.tpBox.Controls.Add(this.btnBoxRefreshFolders);
@ -1841,6 +1845,19 @@ private void InitializeComponent()
this.cbBoxShare.UseVisualStyleBackColor = true; this.cbBoxShare.UseVisualStyleBackColor = true;
this.cbBoxShare.CheckedChanged += new System.EventHandler(this.cbBoxShare_CheckedChanged); 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 // lvBoxFolders
// //
this.lvBoxFolders.AutoFillColumn = true; this.lvBoxFolders.AutoFillColumn = true;
@ -5126,6 +5143,8 @@ private void InitializeComponent()
private OAuthControl oauth2GoogleDrive; private OAuthControl oauth2GoogleDrive;
private System.Windows.Forms.Label lblBoxFolderTip; private System.Windows.Forms.Label lblBoxFolderTip;
private System.Windows.Forms.CheckBox cbBoxShare; private System.Windows.Forms.CheckBox cbBoxShare;
private System.Windows.Forms.ComboBox cbBoxShareAccessLevel;
private System.Windows.Forms.Label lblBoxShareAccessLevel;
private ShareX.HelpersLib.MyListView lvBoxFolders; private ShareX.HelpersLib.MyListView lvBoxFolders;
private System.Windows.Forms.ColumnHeader chBoxFoldersName; private System.Windows.Forms.ColumnHeader chBoxFoldersName;
private System.Windows.Forms.Label lblBoxFolderID; private System.Windows.Forms.Label lblBoxFolderID;

View file

@ -415,6 +415,11 @@ private void LoadFileUploaderSettings()
} }
cbBoxShare.Checked = Config.BoxShare; cbBoxShare.Checked = Config.BoxShare;
cbBoxShareAccessLevel.Items.Clear();
cbBoxShareAccessLevel.Items.AddRange(Helpers.GetEnumDescriptions<BoxShareAccessLevel>());
cbBoxShareAccessLevel.SelectedIndex = (int)Config.BoxShareAccessLevel;
cbBoxShareAccessLevel.Enabled = Config.BoxShare;
lblBoxShareAccessLevel.Enabled = Config.BoxShare;
lblBoxFolderID.Text = Resources.UploadersConfigForm_LoadSettings_Selected_folder_ + " " + Config.BoxSelectedFolder.name; lblBoxFolderID.Text = Resources.UploadersConfigForm_LoadSettings_Selected_folder_ + " " + Config.BoxSelectedFolder.name;
#endregion Box #endregion Box
@ -1857,6 +1862,13 @@ private void oauth2Box_ClearButtonClicked()
private void cbBoxShare_CheckedChanged(object sender, EventArgs e) private void cbBoxShare_CheckedChanged(object sender, EventArgs e)
{ {
Config.BoxShare = cbBoxShare.Checked; 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) private void btnBoxRefreshFolders_Click(object sender, EventArgs e)

View file

@ -4121,6 +4121,57 @@ when you made the application key.</value>
<data name="&gt;&gt;cbBoxShare.ZOrder" xml:space="preserve"> <data name="&gt;&gt;cbBoxShare.ZOrder" xml:space="preserve">
<value>1</value> <value>1</value>
</data> </data>
<data name="cbBoxShareAccessLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>21, 308</value>
</data>
<data name="cbBoxShareAccessLevel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 5, 5, 5</value>
</data>
<data name="cbBoxShareAccessLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>250, 24</value>
</data>
<data name="cbBoxShareAccessLevel.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;cbBoxShareAccessLevel.Name" xml:space="preserve">
<value>cbBoxShareAccessLevel</value>
</data>
<data name="&gt;&gt;cbBoxShareAccessLevel.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbBoxShareAccessLevel.Parent" xml:space="preserve">
<value>tpBox</value>
</data>
<data name="&gt;&gt;cbBoxShareAccessLevel.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="lblBoxShareAccessLevel.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 290</value>
</data>
<data name="lblBoxShareAccessLevel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value>
</data>
<data name="lblBoxShareAccessLevel.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 19</value>
</data>
<data name="lblBoxShareAccessLevel.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="lblBoxShareAccessLevel.Text" xml:space="preserve">
<value>Shared link access level:</value>
</data>
<data name="&gt;&gt;lblBoxShareAccessLevel.Name" xml:space="preserve">
<value>lblBoxShareAccessLevel</value>
</data>
<data name="&gt;&gt;lblBoxShareAccessLevel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblBoxShareAccessLevel.Parent" xml:space="preserve">
<value>tpBox</value>
</data>
<data name="&gt;&gt;lblBoxShareAccessLevel.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="chBoxFoldersName.Text" xml:space="preserve"> <data name="chBoxFoldersName.Text" xml:space="preserve">
<value>Folder name</value> <value>Folder name</value>
</data> </data>

View file

@ -217,6 +217,7 @@ public class UploadersConfig : SettingsBase<UploadersConfig>
public OAuth2Info BoxOAuth2Info = null; public OAuth2Info BoxOAuth2Info = null;
public BoxFileEntry BoxSelectedFolder = Box.RootFolder; public BoxFileEntry BoxSelectedFolder = Box.RootFolder;
public bool BoxShare = true; public bool BoxShare = true;
public BoxShareAccessLevel BoxShareAccessLevel = BoxShareAccessLevel.Open;
#endregion Box #endregion Box