Allow access level selection for Box shareable link in the Box uploader settings.

This commit is contained in:
fib25 2020-05-15 21:46:47 +01:00
parent ca4e1f0ce6
commit 0aae00c8a3
6 changed files with 100 additions and 4 deletions

View file

@ -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
}
}

View file

@ -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
{

View file

@ -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;

View file

@ -415,6 +415,11 @@ private void LoadFileUploaderSettings()
}
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;
#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)

View file

@ -4121,6 +4121,57 @@ when you made the application key.</value>
<data name="&gt;&gt;cbBoxShare.ZOrder" xml:space="preserve">
<value>1</value>
</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">
<value>Folder name</value>
</data>

View file

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