mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 09:47:22 +13:00
Box 2.0 implementation interim commit
This commit is contained in:
parent
3865dede56
commit
c80c71a5cb
9 changed files with 179 additions and 132 deletions
|
@ -769,9 +769,8 @@ public UploadResult UploadFile(Stream stream, string fileName)
|
|||
fileUploader = new Minus(Program.UploadersConfig.MinusConfig, Program.UploadersConfig.MinusOAuth2Info);
|
||||
break;
|
||||
case FileDestination.Box:
|
||||
fileUploader = new Box(APIKeys.BoxKey)
|
||||
fileUploader = new Box(Program.UploadersConfig.BoxOAuth2Info)
|
||||
{
|
||||
AuthToken = Program.UploadersConfig.BoxAuthToken,
|
||||
FolderID = Program.UploadersConfig.BoxFolderID,
|
||||
Share = Program.UploadersConfig.BoxShare
|
||||
};
|
||||
|
|
|
@ -24,106 +24,117 @@ You should have received a copy of the GNU General Public License
|
|||
#endregion License Information (GPL v3)
|
||||
|
||||
using HelpersLib;
|
||||
using Newtonsoft.Json;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.IO;
|
||||
using System.Xml.Linq;
|
||||
using UploadersLib.HelperClasses;
|
||||
|
||||
namespace UploadersLib.FileUploaders
|
||||
{
|
||||
public sealed class Box : FileUploader
|
||||
public sealed class Box : FileUploader, IOAuth2
|
||||
{
|
||||
private string APIKey;
|
||||
private const string APIURL = "https://www.box.net/api/1.0/rest";
|
||||
private const string AuthURL = "https://www.box.net/api/1.0/auth/{0}";
|
||||
private const string UploadURL = "https://upload.box.net/api/1.0/upload/{0}/{1}";
|
||||
private const string ShareURL = "http://www.box.com/s/{0}";
|
||||
|
||||
public string Ticket { get; set; }
|
||||
|
||||
public string AuthToken { get; set; }
|
||||
|
||||
public OAuth2Info AuthInfo { get; set; }
|
||||
public string FolderID { get; set; }
|
||||
|
||||
public bool Share { get; set; }
|
||||
|
||||
public Box(string apiKey)
|
||||
public Box(OAuth2Info oauth)
|
||||
{
|
||||
APIKey = apiKey;
|
||||
AuthInfo = oauth;
|
||||
FolderID = "0";
|
||||
Share = true;
|
||||
}
|
||||
|
||||
public string GetTicket()
|
||||
{
|
||||
Dictionary<string, string> args = new Dictionary<string, string>();
|
||||
args.Add("action", "get_ticket");
|
||||
args.Add("api_key", APIKey);
|
||||
|
||||
string response = SendGetRequest(APIURL, args);
|
||||
|
||||
if (!string.IsNullOrEmpty(response))
|
||||
{
|
||||
XDocument xd = XDocument.Parse(response);
|
||||
XElement xe = xd.GetElement("response");
|
||||
|
||||
if (xe != null && xe.GetElementValue("status") == "get_ticket_ok")
|
||||
{
|
||||
Ticket = xe.GetElementValue("ticket");
|
||||
return Ticket;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public string GetAuthorizationURL()
|
||||
{
|
||||
string ticket = GetTicket();
|
||||
Dictionary<string, string> args = new Dictionary<string, string>();
|
||||
args.Add("response_type", "code");
|
||||
args.Add("client_id", AuthInfo.Client_ID);
|
||||
|
||||
if (!string.IsNullOrEmpty(ticket))
|
||||
{
|
||||
return string.Format(AuthURL, ticket);
|
||||
}
|
||||
|
||||
return null;
|
||||
return CreateQuery("https://www.box.com/api/oauth2/authorize", args);
|
||||
}
|
||||
|
||||
public string GetAuthToken(string ticket)
|
||||
public bool GetAccessToken(string pin)
|
||||
{
|
||||
Dictionary<string, string> args = new Dictionary<string, string>();
|
||||
args.Add("action", "get_auth_token");
|
||||
args.Add("api_key", APIKey);
|
||||
args.Add("ticket", ticket);
|
||||
args.Add("grant_type", "authorization_code");
|
||||
args.Add("code", pin);
|
||||
args.Add("client_id", AuthInfo.Client_ID);
|
||||
args.Add("client_secret", AuthInfo.Client_Secret);
|
||||
|
||||
string response = SendGetRequest(APIURL, args);
|
||||
string response = SendPostRequest("https://www.box.com/api/oauth2/token", args);
|
||||
|
||||
if (!string.IsNullOrEmpty(response))
|
||||
{
|
||||
XDocument xd = XDocument.Parse(response);
|
||||
XElement xe = xd.GetElement("response");
|
||||
OAuth2Token token = JsonConvert.DeserializeObject<OAuth2Token>(response);
|
||||
|
||||
if (xe != null && xe.GetElementValue("status") == "get_auth_token_ok")
|
||||
if (token != null && !string.IsNullOrEmpty(token.access_token))
|
||||
{
|
||||
AuthToken = xe.GetElementValue("auth_token");
|
||||
return AuthToken;
|
||||
token.UpdateExpireDate();
|
||||
AuthInfo.Token = token;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return false;
|
||||
}
|
||||
|
||||
public string GetAuthToken()
|
||||
public bool RefreshAccessToken()
|
||||
{
|
||||
return GetAuthToken(Ticket);
|
||||
if (OAuth2Info.CheckOAuth(AuthInfo) && !string.IsNullOrEmpty(AuthInfo.Token.refresh_token))
|
||||
{
|
||||
Dictionary<string, string> args = new Dictionary<string, string>();
|
||||
args.Add("grant_type", "refresh_token");
|
||||
args.Add("refresh_token", AuthInfo.Token.refresh_token);
|
||||
args.Add("client_id", AuthInfo.Client_ID);
|
||||
args.Add("client_secret", AuthInfo.Client_Secret);
|
||||
|
||||
string response = SendPostRequest("https://www.box.com/api/oauth2/token", args);
|
||||
|
||||
if (!string.IsNullOrEmpty(response))
|
||||
{
|
||||
OAuth2Token token = JsonConvert.DeserializeObject<OAuth2Token>(response);
|
||||
|
||||
if (token != null && !string.IsNullOrEmpty(token.access_token))
|
||||
{
|
||||
token.UpdateExpireDate();
|
||||
AuthInfo.Token = token;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool CheckAuthorization()
|
||||
{
|
||||
if (OAuth2Info.CheckOAuth(AuthInfo))
|
||||
{
|
||||
if (AuthInfo.Token.IsExpired && !RefreshAccessToken())
|
||||
{
|
||||
Errors.Add("Refresh access token failed.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Errors.Add("Box login is required.");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public BoxFolder GetAccountTree(string folderID = "0", bool onelevel = false, bool nofiles = false, bool nozip = true, bool simple = false)
|
||||
{
|
||||
NameValueCollection args = new NameValueCollection();
|
||||
args.Add("action", "get_account_tree");
|
||||
args.Add("api_key", APIKey);
|
||||
args.Add("auth_token", AuthToken);
|
||||
args.Add("folder_id", folderID);
|
||||
|
||||
if (onelevel) // Make a tree of one level depth, so you will get only the files and folders stored in the folder of the folder_id you have provided.
|
||||
|
@ -205,17 +216,18 @@ public BoxFolder GetFolderList()
|
|||
|
||||
public override UploadResult Upload(Stream stream, string fileName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(AuthToken))
|
||||
if (!CheckAuthorization())
|
||||
{
|
||||
Errors.Add("Login is required.");
|
||||
return null;
|
||||
}
|
||||
|
||||
Dictionary<string, string> args = new Dictionary<string, string>();
|
||||
if (Share) args.Add("share", "1");
|
||||
args.Add("parent_id", FolderID);
|
||||
|
||||
string url = string.Format(UploadURL, AuthToken, FolderID);
|
||||
UploadResult result = UploadData(stream, url, fileName, "file", args);
|
||||
NameValueCollection headers = new NameValueCollection();
|
||||
headers.Add("Authorization", "Bearer " + AuthInfo.Token.access_token);
|
||||
|
||||
UploadResult result = UploadData(stream, "https://upload.box.com/api/2.0/files/content", fileName, "filename", args, headers: headers);
|
||||
|
||||
if (result.IsSuccess)
|
||||
{
|
||||
|
|
|
@ -135,7 +135,7 @@ public UploadResult UploadFile(Stream stream, string path, string fileName, bool
|
|||
{
|
||||
if (!OAuthInfo.CheckOAuth(AuthInfo))
|
||||
{
|
||||
Errors.Add("Login is required.");
|
||||
Errors.Add("Dropbox login is required.");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
85
UploadersLib/GUI/UploadersConfigForm.Designer.cs
generated
85
UploadersLib/GUI/UploadersConfigForm.Designer.cs
generated
|
@ -160,6 +160,7 @@ private void InitializeComponent()
|
|||
this.btnMegaLogin = new System.Windows.Forms.Button();
|
||||
this.lblMegaStatusTitle = new System.Windows.Forms.Label();
|
||||
this.tpAmazonS3 = new System.Windows.Forms.TabPage();
|
||||
this.btnAmazonS3BucketNameOpen = new System.Windows.Forms.Button();
|
||||
this.btnAmazonS3AccessKeyOpen = new System.Windows.Forms.Button();
|
||||
this.cbAmazonS3CustomCNAME = new System.Windows.Forms.CheckBox();
|
||||
this.cbAmazonS3Endpoint = new System.Windows.Forms.ComboBox();
|
||||
|
@ -186,8 +187,6 @@ private void InitializeComponent()
|
|||
this.lblBoxFolderID = new System.Windows.Forms.Label();
|
||||
this.btnBoxRefreshFolders = new System.Windows.Forms.Button();
|
||||
this.tvBoxFolders = new System.Windows.Forms.TreeView();
|
||||
this.btnBoxCompleteAuth = new System.Windows.Forms.Button();
|
||||
this.btnBoxOpenAuthorize = new System.Windows.Forms.Button();
|
||||
this.tpRapidShare = new System.Windows.Forms.TabPage();
|
||||
this.txtRapidShareFolderID = new System.Windows.Forms.TextBox();
|
||||
this.lblRapidShareFolderID = new System.Windows.Forms.Label();
|
||||
|
@ -349,6 +348,7 @@ private void InitializeComponent()
|
|||
this.atcGistAccountType = new UploadersLib.GUI.AccountTypeControl();
|
||||
this.ucFTPAccounts = new UploadersLib.AccountsControl();
|
||||
this.oauth2GoogleDrive = new UploadersLib.GUI.OAuth2Control();
|
||||
this.oauth2Box = new UploadersLib.GUI.OAuth2Control();
|
||||
this.atcSendSpaceAccountType = new UploadersLib.GUI.AccountTypeControl();
|
||||
this.oAuthJira = new UploadersLib.GUI.OAuth2Control();
|
||||
this.ucLocalhostAccounts = new UploadersLib.AccountsControl();
|
||||
|
@ -357,7 +357,6 @@ private void InitializeComponent()
|
|||
this.atcGoogleURLShortenerAccountType = new UploadersLib.GUI.AccountTypeControl();
|
||||
this.ucTwitterAccounts = new UploadersLib.AccountsControl();
|
||||
this.actRapidShareAccountType = new UploadersLib.GUI.AccountTypeControl();
|
||||
this.btnAmazonS3BucketNameOpen = new System.Windows.Forms.Button();
|
||||
this.tcUploaders.SuspendLayout();
|
||||
this.tpImageUploaders.SuspendLayout();
|
||||
this.tcImageUploaders.SuspendLayout();
|
||||
|
@ -1544,7 +1543,7 @@ private void InitializeComponent()
|
|||
this.tlpFtp.RowCount = 2;
|
||||
this.tlpFtp.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 75F));
|
||||
this.tlpFtp.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
||||
this.tlpFtp.Size = new System.Drawing.Size(798, 451);
|
||||
this.tlpFtp.Size = new System.Drawing.Size(798, 469);
|
||||
this.tlpFtp.TabIndex = 0;
|
||||
//
|
||||
// panelFtp
|
||||
|
@ -1556,7 +1555,7 @@ private void InitializeComponent()
|
|||
this.panelFtp.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panelFtp.Location = new System.Drawing.Point(3, 3);
|
||||
this.panelFtp.Name = "panelFtp";
|
||||
this.panelFtp.Size = new System.Drawing.Size(792, 332);
|
||||
this.panelFtp.Size = new System.Drawing.Size(792, 345);
|
||||
this.panelFtp.TabIndex = 0;
|
||||
//
|
||||
// btnFtpClient
|
||||
|
@ -1606,9 +1605,9 @@ private void InitializeComponent()
|
|||
this.gbFtpSettings.Controls.Add(this.cboFtpText);
|
||||
this.gbFtpSettings.Controls.Add(this.cboFtpImages);
|
||||
this.gbFtpSettings.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.gbFtpSettings.Location = new System.Drawing.Point(3, 341);
|
||||
this.gbFtpSettings.Location = new System.Drawing.Point(3, 354);
|
||||
this.gbFtpSettings.Name = "gbFtpSettings";
|
||||
this.gbFtpSettings.Size = new System.Drawing.Size(792, 107);
|
||||
this.gbFtpSettings.Size = new System.Drawing.Size(792, 112);
|
||||
this.gbFtpSettings.TabIndex = 1;
|
||||
this.gbFtpSettings.TabStop = false;
|
||||
this.gbFtpSettings.Text = "FTP Settings";
|
||||
|
@ -1824,6 +1823,16 @@ private void InitializeComponent()
|
|||
this.tpAmazonS3.Text = "Amazon S3";
|
||||
this.tpAmazonS3.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnAmazonS3BucketNameOpen
|
||||
//
|
||||
this.btnAmazonS3BucketNameOpen.Location = new System.Drawing.Point(464, 104);
|
||||
this.btnAmazonS3BucketNameOpen.Name = "btnAmazonS3BucketNameOpen";
|
||||
this.btnAmazonS3BucketNameOpen.Size = new System.Drawing.Size(24, 24);
|
||||
this.btnAmazonS3BucketNameOpen.TabIndex = 22;
|
||||
this.btnAmazonS3BucketNameOpen.Text = "?";
|
||||
this.btnAmazonS3BucketNameOpen.UseVisualStyleBackColor = true;
|
||||
this.btnAmazonS3BucketNameOpen.Click += new System.EventHandler(this.btnAmazonS3BucketNameOpen_Click);
|
||||
//
|
||||
// btnAmazonS3AccessKeyOpen
|
||||
//
|
||||
this.btnAmazonS3AccessKeyOpen.Location = new System.Drawing.Point(464, 21);
|
||||
|
@ -2047,12 +2056,11 @@ private void InitializeComponent()
|
|||
//
|
||||
// tpBox
|
||||
//
|
||||
this.tpBox.Controls.Add(this.oauth2Box);
|
||||
this.tpBox.Controls.Add(this.txtBoxFolderID);
|
||||
this.tpBox.Controls.Add(this.lblBoxFolderID);
|
||||
this.tpBox.Controls.Add(this.btnBoxRefreshFolders);
|
||||
this.tpBox.Controls.Add(this.tvBoxFolders);
|
||||
this.tpBox.Controls.Add(this.btnBoxCompleteAuth);
|
||||
this.tpBox.Controls.Add(this.btnBoxOpenAuthorize);
|
||||
this.tpBox.Location = new System.Drawing.Point(4, 40);
|
||||
this.tpBox.Name = "tpBox";
|
||||
this.tpBox.Padding = new System.Windows.Forms.Padding(3);
|
||||
|
@ -2063,7 +2071,7 @@ private void InitializeComponent()
|
|||
//
|
||||
// txtBoxFolderID
|
||||
//
|
||||
this.txtBoxFolderID.Location = new System.Drawing.Point(128, 52);
|
||||
this.txtBoxFolderID.Location = new System.Drawing.Point(464, 20);
|
||||
this.txtBoxFolderID.Name = "txtBoxFolderID";
|
||||
this.txtBoxFolderID.Size = new System.Drawing.Size(88, 20);
|
||||
this.txtBoxFolderID.TabIndex = 3;
|
||||
|
@ -2072,7 +2080,7 @@ private void InitializeComponent()
|
|||
// lblBoxFolderID
|
||||
//
|
||||
this.lblBoxFolderID.AutoSize = true;
|
||||
this.lblBoxFolderID.Location = new System.Drawing.Point(16, 56);
|
||||
this.lblBoxFolderID.Location = new System.Drawing.Point(352, 24);
|
||||
this.lblBoxFolderID.Name = "lblBoxFolderID";
|
||||
this.lblBoxFolderID.Size = new System.Drawing.Size(103, 13);
|
||||
this.lblBoxFolderID.TabIndex = 2;
|
||||
|
@ -2080,7 +2088,8 @@ private void InitializeComponent()
|
|||
//
|
||||
// btnBoxRefreshFolders
|
||||
//
|
||||
this.btnBoxRefreshFolders.Location = new System.Drawing.Point(16, 80);
|
||||
this.btnBoxRefreshFolders.Enabled = false;
|
||||
this.btnBoxRefreshFolders.Location = new System.Drawing.Point(352, 48);
|
||||
this.btnBoxRefreshFolders.Name = "btnBoxRefreshFolders";
|
||||
this.btnBoxRefreshFolders.Size = new System.Drawing.Size(128, 23);
|
||||
this.btnBoxRefreshFolders.TabIndex = 4;
|
||||
|
@ -2090,33 +2099,12 @@ private void InitializeComponent()
|
|||
//
|
||||
// tvBoxFolders
|
||||
//
|
||||
this.tvBoxFolders.Location = new System.Drawing.Point(16, 112);
|
||||
this.tvBoxFolders.Location = new System.Drawing.Point(352, 80);
|
||||
this.tvBoxFolders.Name = "tvBoxFolders";
|
||||
this.tvBoxFolders.Size = new System.Drawing.Size(440, 312);
|
||||
this.tvBoxFolders.Size = new System.Drawing.Size(440, 360);
|
||||
this.tvBoxFolders.TabIndex = 5;
|
||||
this.tvBoxFolders.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvBoxFolders_AfterSelect);
|
||||
//
|
||||
// btnBoxCompleteAuth
|
||||
//
|
||||
this.btnBoxCompleteAuth.Enabled = false;
|
||||
this.btnBoxCompleteAuth.Location = new System.Drawing.Point(192, 16);
|
||||
this.btnBoxCompleteAuth.Name = "btnBoxCompleteAuth";
|
||||
this.btnBoxCompleteAuth.Size = new System.Drawing.Size(168, 23);
|
||||
this.btnBoxCompleteAuth.TabIndex = 1;
|
||||
this.btnBoxCompleteAuth.Text = "2. Complete authorization";
|
||||
this.btnBoxCompleteAuth.UseVisualStyleBackColor = true;
|
||||
this.btnBoxCompleteAuth.Click += new System.EventHandler(this.btnBoxCompleteAuth_Click);
|
||||
//
|
||||
// btnBoxOpenAuthorize
|
||||
//
|
||||
this.btnBoxOpenAuthorize.Location = new System.Drawing.Point(16, 16);
|
||||
this.btnBoxOpenAuthorize.Name = "btnBoxOpenAuthorize";
|
||||
this.btnBoxOpenAuthorize.Size = new System.Drawing.Size(168, 23);
|
||||
this.btnBoxOpenAuthorize.TabIndex = 0;
|
||||
this.btnBoxOpenAuthorize.Text = "1. Open authorize page...";
|
||||
this.btnBoxOpenAuthorize.UseVisualStyleBackColor = true;
|
||||
this.btnBoxOpenAuthorize.Click += new System.EventHandler(this.btnBoxOpenAuthorize_Click);
|
||||
//
|
||||
// tpRapidShare
|
||||
//
|
||||
this.tpRapidShare.Controls.Add(this.txtRapidShareFolderID);
|
||||
|
@ -3765,7 +3753,7 @@ private void InitializeComponent()
|
|||
this.ucFTPAccounts.Location = new System.Drawing.Point(0, 0);
|
||||
this.ucFTPAccounts.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.ucFTPAccounts.Name = "ucFTPAccounts";
|
||||
this.ucFTPAccounts.Size = new System.Drawing.Size(792, 332);
|
||||
this.ucFTPAccounts.Size = new System.Drawing.Size(792, 345);
|
||||
this.ucFTPAccounts.TabIndex = 0;
|
||||
//
|
||||
// oauth2GoogleDrive
|
||||
|
@ -3780,6 +3768,18 @@ private void InitializeComponent()
|
|||
this.oauth2GoogleDrive.CompleteButtonClicked += new UploadersLib.GUI.OAuth2Control.CompleteButtonClickedEventHandler(this.oauth2GoogleDrive_CompleteButtonClicked);
|
||||
this.oauth2GoogleDrive.RefreshButtonClicked += new UploadersLib.GUI.OAuth2Control.RefreshButtonClickedEventHandler(this.oauth2GoogleDrive_RefreshButtonClicked);
|
||||
//
|
||||
// oauth2Box
|
||||
//
|
||||
this.oauth2Box.Location = new System.Drawing.Point(16, 16);
|
||||
this.oauth2Box.LoginStatus = false;
|
||||
this.oauth2Box.Name = "oauth2Box";
|
||||
this.oauth2Box.Size = new System.Drawing.Size(328, 207);
|
||||
this.oauth2Box.Status = "Status: Login required.";
|
||||
this.oauth2Box.TabIndex = 7;
|
||||
this.oauth2Box.OpenButtonClicked += new UploadersLib.GUI.OAuth2Control.OpenButtonClickedEventHandler(this.oauth2Box_OpenButtonClicked);
|
||||
this.oauth2Box.CompleteButtonClicked += new UploadersLib.GUI.OAuth2Control.CompleteButtonClickedEventHandler(this.oauth2Box_CompleteButtonClicked);
|
||||
this.oauth2Box.RefreshButtonClicked += new UploadersLib.GUI.OAuth2Control.RefreshButtonClickedEventHandler(this.oauth2Box_RefreshButtonClicked);
|
||||
//
|
||||
// atcSendSpaceAccountType
|
||||
//
|
||||
this.atcSendSpaceAccountType.Location = new System.Drawing.Point(8, 16);
|
||||
|
@ -3859,16 +3859,6 @@ private void InitializeComponent()
|
|||
this.actRapidShareAccountType.Size = new System.Drawing.Size(214, 29);
|
||||
this.actRapidShareAccountType.TabIndex = 16;
|
||||
//
|
||||
// btnAmazonS3BucketNameOpen
|
||||
//
|
||||
this.btnAmazonS3BucketNameOpen.Location = new System.Drawing.Point(464, 104);
|
||||
this.btnAmazonS3BucketNameOpen.Name = "btnAmazonS3BucketNameOpen";
|
||||
this.btnAmazonS3BucketNameOpen.Size = new System.Drawing.Size(24, 24);
|
||||
this.btnAmazonS3BucketNameOpen.TabIndex = 22;
|
||||
this.btnAmazonS3BucketNameOpen.Text = "?";
|
||||
this.btnAmazonS3BucketNameOpen.UseVisualStyleBackColor = true;
|
||||
this.btnAmazonS3BucketNameOpen.Click += new System.EventHandler(this.btnAmazonS3BucketNameOpen_Click);
|
||||
//
|
||||
// UploadersConfigForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
|
@ -4176,8 +4166,6 @@ private void InitializeComponent()
|
|||
private System.Windows.Forms.TextBox txtRapidShareFolderID;
|
||||
private System.Windows.Forms.Label lblRapidShareFolderID;
|
||||
private System.Windows.Forms.TabPage tpBox;
|
||||
private System.Windows.Forms.Button btnBoxCompleteAuth;
|
||||
private System.Windows.Forms.Button btnBoxOpenAuthorize;
|
||||
private System.Windows.Forms.TextBox txtBoxFolderID;
|
||||
private System.Windows.Forms.Label lblBoxFolderID;
|
||||
private System.Windows.Forms.Button btnBoxRefreshFolders;
|
||||
|
@ -4317,5 +4305,6 @@ private void InitializeComponent()
|
|||
private System.Windows.Forms.TextBox txtPushbulletUserKey;
|
||||
private System.Windows.Forms.Button btnAmazonS3AccessKeyOpen;
|
||||
private System.Windows.Forms.Button btnAmazonS3BucketNameOpen;
|
||||
private GUI.OAuth2Control oauth2Box;
|
||||
}
|
||||
}
|
|
@ -514,14 +514,19 @@ private void cbGoogleDriveIsPublic_CheckedChanged(object sender, EventArgs e)
|
|||
|
||||
#region Box
|
||||
|
||||
private void btnBoxOpenAuthorize_Click(object sender, EventArgs e)
|
||||
private void oauth2Box_OpenButtonClicked()
|
||||
{
|
||||
BoxAuthOpen();
|
||||
}
|
||||
|
||||
private void btnBoxCompleteAuth_Click(object sender, EventArgs e)
|
||||
private void oauth2Box_CompleteButtonClicked(string code)
|
||||
{
|
||||
BoxAuthComplete();
|
||||
BoxAuthComplete(code);
|
||||
}
|
||||
|
||||
private void oauth2Box_RefreshButtonClicked()
|
||||
{
|
||||
BoxAuthRefresh();
|
||||
}
|
||||
|
||||
private void txtBoxFolderID_TextChanged(object sender, EventArgs e)
|
||||
|
|
|
@ -288,6 +288,13 @@ public void LoadSettings(UploadersConfig uploadersConfig)
|
|||
|
||||
// Box
|
||||
|
||||
if (OAuth2Info.CheckOAuth(Config.BoxOAuth2Info))
|
||||
{
|
||||
oauth2Box.Status = "Login successful.";
|
||||
oauth2Box.LoginStatus = true;
|
||||
btnBoxRefreshFolders.Enabled = true;
|
||||
}
|
||||
|
||||
txtBoxFolderID.Text = Config.BoxFolderID;
|
||||
|
||||
// Ge.tt
|
||||
|
|
|
@ -636,15 +636,19 @@ public void BoxAuthOpen()
|
|||
{
|
||||
try
|
||||
{
|
||||
Box box = new Box(APIKeys.BoxKey);
|
||||
OAuth2Info oauth = new OAuth2Info(APIKeys.BoxClientID, APIKeys.BoxClientSecret);
|
||||
|
||||
string url = box.GetAuthorizationURL();
|
||||
string url = new Box(oauth).GetAuthorizationURL();
|
||||
|
||||
if (!string.IsNullOrEmpty(url))
|
||||
{
|
||||
Config.BoxTicket = box.Ticket;
|
||||
Config.BoxOAuth2Info = oauth;
|
||||
Helpers.LoadBrowserAsync(url);
|
||||
btnBoxCompleteAuth.Enabled = true;
|
||||
DebugHelper.WriteLine("BoxAuthOpen - Authorization URL is opened: " + url);
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugHelper.WriteLine("BoxAuthOpen - Authorization URL is empty.");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -653,41 +657,73 @@ public void BoxAuthOpen()
|
|||
}
|
||||
}
|
||||
|
||||
public void BoxAuthComplete()
|
||||
public void BoxAuthComplete(string code)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Config.BoxTicket))
|
||||
try
|
||||
{
|
||||
try
|
||||
if (!string.IsNullOrEmpty(code) && Config.BoxOAuth2Info != null)
|
||||
{
|
||||
Box box = new Box(APIKeys.BoxKey) { Ticket = Config.BoxTicket };
|
||||
Config.BoxAuthToken = box.GetAuthToken();
|
||||
bool result = new Box(Config.BoxOAuth2Info).GetAccessToken(code);
|
||||
|
||||
if (!string.IsNullOrEmpty(Config.BoxAuthToken))
|
||||
if (result)
|
||||
{
|
||||
oauth2Box.Status = "Login successful.";
|
||||
MessageBox.Show("Login successful.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
else
|
||||
{
|
||||
oauth2Box.Status = "Login failed.";
|
||||
MessageBox.Show("Login failed.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
oauth2Box.LoginStatus = result;
|
||||
btnBoxRefreshFolders.Enabled = result;
|
||||
}
|
||||
catch (Exception ex)
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
public void BoxAuthRefresh()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (OAuth2Info.CheckOAuth(Config.BoxOAuth2Info))
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
bool result = new Box(Config.BoxOAuth2Info).RefreshAccessToken();
|
||||
|
||||
if (result)
|
||||
{
|
||||
oauth2Box.Status = "Login successful.";
|
||||
MessageBox.Show("Login successful.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
else
|
||||
{
|
||||
oauth2Box.Status = "Login failed.";
|
||||
MessageBox.Show("Login failed.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
btnBoxRefreshFolders.Enabled = result;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
public void BoxListFolders()
|
||||
{
|
||||
if (string.IsNullOrEmpty(Config.BoxAuthToken))
|
||||
if (!OAuth2Info.CheckOAuth(Config.BoxOAuth2Info))
|
||||
{
|
||||
MessageBox.Show("Authentication required.", "Box refresh folders list failed", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
else
|
||||
{
|
||||
tvBoxFolders.Nodes.Clear();
|
||||
Box box = new Box(APIKeys.BoxKey) { AuthToken = Config.BoxAuthToken };
|
||||
Box box = new Box(Config.BoxOAuth2Info);
|
||||
BoxFolder root = box.GetFolderList();
|
||||
BoxRecursiveAddChilds(tvBoxFolders.Nodes, root);
|
||||
tvBoxFolders.ExpandAll();
|
||||
|
|
|
@ -117,7 +117,7 @@ public bool CheckAuthorization()
|
|||
}
|
||||
else
|
||||
{
|
||||
Errors.Add("Login is required.");
|
||||
Errors.Add("Imgur login is required.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -146,8 +146,7 @@ public class UploadersConfig : SettingsBase<UploadersConfig>
|
|||
|
||||
// Box
|
||||
|
||||
public string BoxTicket = string.Empty;
|
||||
public string BoxAuthToken = string.Empty;
|
||||
public OAuth2Info BoxOAuth2Info = null;
|
||||
public string BoxFolderID = "0";
|
||||
public bool BoxShare = true;
|
||||
|
||||
|
@ -336,7 +335,7 @@ public bool IsActive(FileDestination destination)
|
|||
case FileDestination.Minus:
|
||||
return MinusConfig != null && MinusConfig.MinusUser != null;
|
||||
case FileDestination.Box:
|
||||
return !string.IsNullOrEmpty(BoxAuthToken);
|
||||
return OAuth2Info.CheckOAuth(BoxOAuth2Info);
|
||||
case FileDestination.Ge_tt:
|
||||
return Ge_ttLogin != null && !string.IsNullOrEmpty(Ge_ttLogin.AccessToken);
|
||||
case FileDestination.Localhostr:
|
||||
|
|
Loading…
Reference in a new issue