2013-11-03 23:53:49 +13:00
|
|
|
|
#region License Information (GPL v3)
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
ShareX - A program that allows you to take screenshots and share any file type
|
2019-01-02 20:43:52 +13:00
|
|
|
|
Copyright (c) 2007-2019 ShareX Team
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
|
modify it under the terms of the GNU General Public License
|
|
|
|
|
as published by the Free Software Foundation; either version 2
|
|
|
|
|
of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
|
along with this program; if not, write to the Free Software
|
|
|
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
|
|
|
|
|
|
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#endregion License Information (GPL v3)
|
|
|
|
|
|
2018-11-22 05:48:04 +13:00
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using Newtonsoft.Json.Linq;
|
2014-12-11 09:25:20 +13:00
|
|
|
|
using ShareX.HelpersLib;
|
|
|
|
|
using ShareX.UploadersLib.FileUploaders;
|
|
|
|
|
using ShareX.UploadersLib.ImageUploaders;
|
2014-12-11 12:19:28 +13:00
|
|
|
|
using ShareX.UploadersLib.Properties;
|
2017-09-11 00:29:29 +12:00
|
|
|
|
using ShareX.UploadersLib.SharingServices;
|
2014-12-11 09:25:20 +13:00
|
|
|
|
using ShareX.UploadersLib.TextUploaders;
|
|
|
|
|
using ShareX.UploadersLib.URLShorteners;
|
2014-12-11 12:19:28 +13:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
2018-11-20 04:33:03 +13:00
|
|
|
|
using System.Drawing;
|
2014-12-11 12:19:28 +13:00
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
2018-08-04 01:38:18 +12:00
|
|
|
|
using System.Threading.Tasks;
|
2014-12-11 12:19:28 +13:00
|
|
|
|
using System.Windows.Forms;
|
2019-01-10 05:08:55 +13:00
|
|
|
|
using System.Xml.Linq;
|
2014-12-11 09:25:20 +13:00
|
|
|
|
|
|
|
|
|
namespace ShareX.UploadersLib
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-10-19 10:48:47 +13:00
|
|
|
|
public partial class UploadersConfigForm
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
#region Imgur
|
|
|
|
|
|
2015-04-28 13:33:53 +12:00
|
|
|
|
private void ImgurRefreshAlbumList()
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
lvImgurAlbumList.Items.Clear();
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.ImgurOAuth2Info))
|
|
|
|
|
{
|
2015-07-20 06:11:34 +12:00
|
|
|
|
Config.ImgurAlbumList = new Imgur(Config.ImgurOAuth2Info).GetAlbums();
|
2014-09-07 13:11:55 +12:00
|
|
|
|
ImgurFillAlbumList();
|
|
|
|
|
lvImgurAlbumList.Focus();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-07 13:11:55 +12:00
|
|
|
|
private void ImgurFillAlbumList()
|
|
|
|
|
{
|
|
|
|
|
if (Config.ImgurAlbumList != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (ImgurAlbumData album in Config.ImgurAlbumList)
|
|
|
|
|
{
|
|
|
|
|
ListViewItem lvi = new ListViewItem(album.id ?? "");
|
|
|
|
|
lvi.SubItems.Add(album.title ?? "");
|
|
|
|
|
lvi.SubItems.Add(album.description ?? "");
|
|
|
|
|
lvi.Selected = Config.ImgurSelectedAlbum != null && !string.IsNullOrEmpty(Config.ImgurSelectedAlbum.id) &&
|
|
|
|
|
album.id.Equals(Config.ImgurSelectedAlbum.id, StringComparison.InvariantCultureIgnoreCase);
|
|
|
|
|
lvi.Tag = album;
|
|
|
|
|
lvImgurAlbumList.Items.Add(lvi);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2013-11-03 23:53:49 +13:00
|
|
|
|
#endregion Imgur
|
|
|
|
|
|
|
|
|
|
#region Flickr
|
|
|
|
|
|
2017-10-04 14:29:39 +13:00
|
|
|
|
private void FlickrAuthOpen()
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
2017-10-04 14:29:39 +13:00
|
|
|
|
OAuthInfo oauth = new OAuthInfo(APIKeys.FlickrKey, APIKeys.FlickrSecret);
|
|
|
|
|
|
|
|
|
|
string url = new FlickrUploader(oauth).GetAuthorizationURL();
|
|
|
|
|
|
2013-11-03 23:53:49 +13:00
|
|
|
|
if (!string.IsNullOrEmpty(url))
|
|
|
|
|
{
|
2017-10-04 14:29:39 +13:00
|
|
|
|
Config.FlickrOAuthInfo = oauth;
|
2014-06-28 12:22:56 +12:00
|
|
|
|
URLHelpers.OpenURL(url);
|
2017-10-04 14:29:39 +13:00
|
|
|
|
DebugHelper.WriteLine("FlickrAuthOpen - Authorization URL is opened: " + url);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
2017-10-04 14:29:39 +13:00
|
|
|
|
else
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2017-10-04 14:29:39 +13:00
|
|
|
|
DebugHelper.WriteLine("FlickrAuthOpen - Authorization URL is empty.");
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-10-04 14:29:39 +13:00
|
|
|
|
private void FlickrAuthComplete(string code)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
2017-10-04 14:29:39 +13:00
|
|
|
|
if (!string.IsNullOrEmpty(code) && Config.FlickrOAuthInfo != null)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2017-10-04 14:29:39 +13:00
|
|
|
|
bool result = new FlickrUploader(Config.FlickrOAuthInfo).GetAccessToken(code);
|
|
|
|
|
|
|
|
|
|
if (result)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2017-10-04 14:29:39 +13:00
|
|
|
|
oauthFlickr.Status = OAuthLoginStatus.LoginSuccessful;
|
2014-10-18 01:19:28 +13:00
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_successful, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
2017-10-04 14:29:39 +13:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
oauthFlickr.Status = OAuthLoginStatus.LoginFailed;
|
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_failed, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Flickr
|
|
|
|
|
|
|
|
|
|
#region Photobucket
|
|
|
|
|
|
|
|
|
|
public void PhotobucketAuthOpen()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
OAuthInfo oauth = new OAuthInfo(APIKeys.PhotobucketConsumerKey, APIKeys.PhotobucketConsumerSecret);
|
|
|
|
|
|
|
|
|
|
string url = new Photobucket(oauth).GetAuthorizationURL();
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(url))
|
|
|
|
|
{
|
|
|
|
|
Config.PhotobucketOAuthInfo = oauth;
|
2014-06-28 12:22:56 +12:00
|
|
|
|
URLHelpers.OpenURL(url);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void PhotobucketAuthComplete()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string verification = txtPhotobucketVerificationCode.Text;
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(verification) && Config.PhotobucketOAuthInfo != null &&
|
|
|
|
|
!string.IsNullOrEmpty(Config.PhotobucketOAuthInfo.AuthToken) && !string.IsNullOrEmpty(Config.PhotobucketOAuthInfo.AuthSecret))
|
|
|
|
|
{
|
|
|
|
|
Photobucket pb = new Photobucket(Config.PhotobucketOAuthInfo);
|
|
|
|
|
bool result = pb.GetAccessToken(verification);
|
|
|
|
|
|
|
|
|
|
if (result)
|
|
|
|
|
{
|
|
|
|
|
Config.PhotobucketAccountInfo = pb.GetAccountInfo();
|
2014-10-18 00:48:41 +13:00
|
|
|
|
lblPhotobucketAccountStatus.Text = Resources.UploadersConfigForm_Login_successful;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
txtPhotobucketDefaultAlbumName.Text = Config.PhotobucketAccountInfo.AlbumID;
|
|
|
|
|
Config.PhotobucketAccountInfo.AlbumList.Add(Config.PhotobucketAccountInfo.AlbumID);
|
|
|
|
|
cboPhotobucketAlbumPaths.Items.Add(Config.PhotobucketAccountInfo.AlbumID);
|
|
|
|
|
cboPhotobucketAlbumPaths.SelectedIndex = 0;
|
2014-10-18 01:19:28 +13:00
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_successful, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2014-10-18 00:48:41 +13:00
|
|
|
|
lblPhotobucketAccountStatus.Text = Resources.UploadersConfigForm_Login_failed;
|
2014-10-18 01:19:28 +13:00
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_failed, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void PhotobucketCreateAlbum()
|
|
|
|
|
{
|
|
|
|
|
Photobucket pb = new Photobucket(Config.PhotobucketOAuthInfo, Config.PhotobucketAccountInfo);
|
|
|
|
|
if (pb.CreateAlbum(txtPhotobucketParentAlbumPath.Text, txtPhotobucketNewAlbumName.Text))
|
|
|
|
|
{
|
|
|
|
|
string albumPath = txtPhotobucketParentAlbumPath.Text + "/" + txtPhotobucketNewAlbumName.Text;
|
|
|
|
|
Config.PhotobucketAccountInfo.AlbumList.Add(albumPath);
|
|
|
|
|
cboPhotobucketAlbumPaths.Items.Add(albumPath);
|
2014-10-18 01:19:28 +13:00
|
|
|
|
MessageBox.Show(string.Format(Resources.UploadersConfigForm_PhotobucketCreateAlbum__0__successfully_created_, albumPath), "ShareX",
|
2014-10-18 00:48:41 +13:00
|
|
|
|
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Photobucket
|
|
|
|
|
|
2017-10-06 09:54:06 +13:00
|
|
|
|
#region Google Photos
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
2017-10-06 09:54:06 +13:00
|
|
|
|
public void GooglePhotosRefreshAlbumList()
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
lvPicasaAlbumList.Items.Clear();
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.PicasaOAuth2Info))
|
|
|
|
|
{
|
2017-09-06 07:43:36 +12:00
|
|
|
|
List<GooglePhotosAlbumInfo> albums = new GooglePhotos(Config.PicasaOAuth2Info).GetAlbumList();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
|
|
|
|
if (albums != null && albums.Count > 0)
|
|
|
|
|
{
|
2017-09-06 07:43:36 +12:00
|
|
|
|
foreach (GooglePhotosAlbumInfo album in albums)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
ListViewItem lvi = new ListViewItem(album.ID);
|
|
|
|
|
lvi.SubItems.Add(album.Name ?? "");
|
|
|
|
|
lvi.SubItems.Add(album.Summary ?? "");
|
|
|
|
|
lvi.Tag = album;
|
|
|
|
|
lvPicasaAlbumList.Items.Add(lvi);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-10-06 09:54:06 +13:00
|
|
|
|
#endregion Google Photos
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
2014-05-06 11:24:00 +12:00
|
|
|
|
#region Amazon S3
|
|
|
|
|
|
|
|
|
|
private void UpdateAmazonS3Status()
|
|
|
|
|
{
|
2018-06-20 07:16:11 +12:00
|
|
|
|
AmazonS3 s3 = new AmazonS3(Config.AmazonS3Settings);
|
|
|
|
|
|
|
|
|
|
lblAmazonS3PathPreview.Text = s3.GetPreviewURL();
|
2014-05-06 11:24:00 +12:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Amazon S3
|
|
|
|
|
|
2018-04-26 16:41:11 +12:00
|
|
|
|
#region Google Cloud Storage
|
|
|
|
|
|
|
|
|
|
private void UpdateGoogleCloudStorageStatus()
|
|
|
|
|
{
|
2018-06-20 07:16:11 +12:00
|
|
|
|
GoogleCloudStorage gcs = new GoogleCloudStorage(Config.GoogleCloudStorageOAuth2Info)
|
2018-04-26 16:41:11 +12:00
|
|
|
|
{
|
|
|
|
|
Bucket = Config.GoogleCloudStorageBucket,
|
|
|
|
|
Domain = Config.GoogleCloudStorageDomain,
|
|
|
|
|
Prefix = Config.GoogleCloudStorageObjectPrefix
|
|
|
|
|
};
|
|
|
|
|
|
2018-06-20 07:16:11 +12:00
|
|
|
|
lblGoogleCloudStoragePathPreview.Text = gcs.GetPreviewURL();
|
2018-04-26 16:41:11 +12:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Google Cloud Storage
|
|
|
|
|
|
2018-06-20 07:16:11 +12:00
|
|
|
|
#region Azure Storage
|
|
|
|
|
|
|
|
|
|
private void UpdateAzureStorageStatus()
|
|
|
|
|
{
|
|
|
|
|
AzureStorage azure = new AzureStorage(Config.AzureStorageAccountName, Config.AzureStorageAccountAccessKey, Config.AzureStorageContainer,
|
|
|
|
|
Config.AzureStorageEnvironment, Config.AzureStorageCustomDomain, Config.AzureStorageUploadPath);
|
|
|
|
|
|
|
|
|
|
lblAzureStorageURLPreview.Text = azure.GetPreviewURL();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Azure Storage
|
|
|
|
|
|
2018-09-27 17:49:42 +12:00
|
|
|
|
#region Backblaze B2
|
|
|
|
|
|
|
|
|
|
private void B2UpdateCustomDomainPreview()
|
|
|
|
|
{
|
2018-10-18 01:32:03 +13:00
|
|
|
|
string uploadPath = NameParser.Parse(NameParserType.FolderPath, Config.B2UploadPath);
|
2018-09-27 17:49:42 +12:00
|
|
|
|
|
|
|
|
|
if (cbB2CustomUrl.Checked)
|
|
|
|
|
{
|
2018-10-18 01:32:03 +13:00
|
|
|
|
string customUrl = NameParser.Parse(NameParserType.FolderPath, Config.B2CustomUrl);
|
2018-09-27 17:49:42 +12:00
|
|
|
|
if (URLHelpers.IsValidURL(customUrl))
|
|
|
|
|
{
|
|
|
|
|
txtB2UrlPreview.Text = customUrl + uploadPath + "example.png";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
txtB2UrlPreview.Text = "invalid custom URL";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2018-10-18 01:32:03 +13:00
|
|
|
|
string bucket = string.IsNullOrEmpty(Config.B2BucketName) ?
|
2018-10-02 06:51:50 +13:00
|
|
|
|
"[bucket]" :
|
|
|
|
|
URLHelpers.URLEncode(Config.B2BucketName);
|
2018-10-18 01:32:03 +13:00
|
|
|
|
string url = $"https://f001.backblazeb2.com/file/{bucket}/{uploadPath}example.png";
|
2018-09-27 17:49:42 +12:00
|
|
|
|
txtB2UrlPreview.Text = url;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Backblaze B2
|
|
|
|
|
|
2013-11-03 23:53:49 +13:00
|
|
|
|
#region Google Drive
|
|
|
|
|
|
2014-07-01 22:18:07 +12:00
|
|
|
|
private void GoogleDriveRefreshFolders()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
lvGoogleDriveFoldersList.Items.Clear();
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.GoogleDriveOAuth2Info))
|
|
|
|
|
{
|
2016-09-17 19:07:02 +12:00
|
|
|
|
List<GoogleDriveFile> folders = new GoogleDrive(Config.GoogleDriveOAuth2Info).GetFolders();
|
2014-07-01 22:18:07 +12:00
|
|
|
|
|
|
|
|
|
if (folders != null)
|
|
|
|
|
{
|
2016-09-17 19:07:02 +12:00
|
|
|
|
foreach (GoogleDriveFile folder in folders)
|
2014-07-01 22:18:07 +12:00
|
|
|
|
{
|
2018-04-11 16:30:09 +12:00
|
|
|
|
ListViewItem lvi = new ListViewItem(folder.name);
|
2014-07-02 04:40:40 +12:00
|
|
|
|
lvi.SubItems.Add(folder.description);
|
2014-07-01 22:18:07 +12:00
|
|
|
|
lvi.Tag = folder;
|
|
|
|
|
lvGoogleDriveFoldersList.Items.Add(lvi);
|
|
|
|
|
}
|
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Google Drive
|
|
|
|
|
|
|
|
|
|
#region Box
|
|
|
|
|
|
|
|
|
|
public void BoxListFolders()
|
2014-04-17 11:34:31 +12:00
|
|
|
|
{
|
|
|
|
|
lvBoxFolders.Items.Clear();
|
|
|
|
|
BoxAddFolder(Box.RootFolder);
|
|
|
|
|
BoxListFolders(Box.RootFolder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void BoxListFolders(BoxFileEntry fileEntry)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-04-17 04:18:25 +12:00
|
|
|
|
if (!OAuth2Info.CheckOAuth(Config.BoxOAuth2Info))
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-12-27 02:58:38 +13:00
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_ListFolders_Authentication_required_, Resources.UploadersConfigForm_BoxListFolders_Box_refresh_folders_list_failed,
|
2014-10-18 00:48:41 +13:00
|
|
|
|
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2014-04-17 04:18:25 +12:00
|
|
|
|
Box box = new Box(Config.BoxOAuth2Info);
|
2014-04-17 11:34:31 +12:00
|
|
|
|
BoxFileInfo files = box.GetFiles(fileEntry);
|
2014-04-17 08:35:10 +12:00
|
|
|
|
if (files != null && files.entries != null && files.entries.Length > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (BoxFileEntry folder in files.entries.Where(x => x.type == "folder"))
|
|
|
|
|
{
|
|
|
|
|
BoxAddFolder(folder);
|
|
|
|
|
}
|
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-17 08:35:10 +12:00
|
|
|
|
private void BoxAddFolder(BoxFileEntry folder)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-04-17 08:35:10 +12:00
|
|
|
|
ListViewItem lvi = new ListViewItem(folder.name);
|
|
|
|
|
lvi.Tag = folder;
|
|
|
|
|
lvBoxFolders.Items.Add(lvi);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Box
|
|
|
|
|
|
2014-08-09 12:28:09 +12:00
|
|
|
|
#region OneDrive
|
|
|
|
|
|
2014-12-27 13:33:23 +13:00
|
|
|
|
public void OneDriveListFolders(OneDriveFileInfo fileEntry, TreeNode tnParent)
|
2014-12-27 02:58:38 +13:00
|
|
|
|
{
|
2014-12-28 09:54:18 +13:00
|
|
|
|
Application.DoEvents();
|
2018-04-14 03:10:58 +12:00
|
|
|
|
OneDrive oneDrive = new OneDrive(Config.OneDriveV2OAuth2Info);
|
2018-04-14 17:32:48 +12:00
|
|
|
|
OneDriveFileList oneDrivePathInfo = oneDrive.GetPathInfo(fileEntry.id);
|
2014-12-28 09:54:18 +13:00
|
|
|
|
tnParent.Nodes.Clear();
|
2018-04-12 13:45:12 +12:00
|
|
|
|
foreach (OneDriveFileInfo folder in oneDrivePathInfo.value)
|
2014-12-27 02:58:38 +13:00
|
|
|
|
{
|
2014-12-28 09:54:18 +13:00
|
|
|
|
OneDriveAddFolder(folder, tnParent);
|
2014-12-27 02:58:38 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-12-27 13:33:23 +13:00
|
|
|
|
private void OneDriveAddFolder(OneDriveFileInfo folder, TreeNode tnParent)
|
2014-12-27 02:58:38 +13:00
|
|
|
|
{
|
2014-12-27 13:33:23 +13:00
|
|
|
|
TreeNode tn = new TreeNode(folder.name);
|
|
|
|
|
tn.Tag = folder;
|
2014-12-28 12:47:48 +13:00
|
|
|
|
tn.Nodes.Add(new TreeNode(Resources.UploadersConfigForm_OneDriveAddFolder_Querying_folders___));
|
2014-12-27 19:22:35 +13:00
|
|
|
|
|
|
|
|
|
if (tnParent != null)
|
|
|
|
|
{
|
|
|
|
|
tnParent.Nodes.Add(tn);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
tvOneDrive.Nodes.Add(tn);
|
|
|
|
|
}
|
2014-12-27 02:58:38 +13:00
|
|
|
|
}
|
|
|
|
|
|
2014-08-09 12:28:09 +12:00
|
|
|
|
#endregion OneDrive
|
|
|
|
|
|
2013-11-03 23:53:49 +13:00
|
|
|
|
#region FTP
|
|
|
|
|
|
2017-04-21 08:50:31 +12:00
|
|
|
|
private bool FTPCheckAccount(int index)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2017-04-21 01:56:16 +12:00
|
|
|
|
return Config.FTPAccountList.IsValidIndex(index);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
2017-04-21 08:50:31 +12:00
|
|
|
|
private FTPAccount FTPGetSelectedAccount()
|
2014-06-07 06:01:02 +12:00
|
|
|
|
{
|
2017-04-21 01:56:16 +12:00
|
|
|
|
int index = cbFTPAccounts.SelectedIndex;
|
|
|
|
|
|
|
|
|
|
if (FTPCheckAccount(index))
|
2014-06-07 06:01:02 +12:00
|
|
|
|
{
|
2017-04-21 01:56:16 +12:00
|
|
|
|
return Config.FTPAccountList[index];
|
2014-06-07 06:01:02 +12:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
2017-04-21 08:50:31 +12:00
|
|
|
|
private void FTPAddAccount(FTPAccount account)
|
2014-06-07 06:01:02 +12:00
|
|
|
|
{
|
|
|
|
|
if (account != null)
|
|
|
|
|
{
|
|
|
|
|
Config.FTPAccountList.Add(account);
|
2017-04-21 01:56:16 +12:00
|
|
|
|
cbFTPAccounts.Items.Add(account);
|
|
|
|
|
FTPUpdateControls();
|
2014-06-07 06:01:02 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-04-21 01:56:16 +12:00
|
|
|
|
private void FTPUpdateControls()
|
|
|
|
|
{
|
2017-09-14 04:21:24 +12:00
|
|
|
|
int selected = cbFTPAccounts.SelectedIndex;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
2017-09-14 04:21:24 +12:00
|
|
|
|
cbFTPAccounts.Items.Clear();
|
|
|
|
|
cbFTPImage.Items.Clear();
|
|
|
|
|
cbFTPText.Items.Clear();
|
|
|
|
|
cbFTPFile.Items.Clear();
|
2017-04-21 01:56:16 +12:00
|
|
|
|
|
2017-09-14 04:21:24 +12:00
|
|
|
|
if (Config.FTPAccountList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (FTPAccount account in Config.FTPAccountList)
|
2014-05-22 13:48:27 +12:00
|
|
|
|
{
|
2017-09-14 04:21:24 +12:00
|
|
|
|
cbFTPAccounts.Items.Add(account);
|
|
|
|
|
cbFTPImage.Items.Add(account);
|
|
|
|
|
cbFTPText.Items.Add(account);
|
|
|
|
|
cbFTPFile.Items.Add(account);
|
2017-04-21 01:56:16 +12:00
|
|
|
|
}
|
2017-04-21 04:38:20 +12:00
|
|
|
|
|
2017-09-14 04:21:24 +12:00
|
|
|
|
cbFTPAccounts.SelectedIndex = selected.Between(0, Config.FTPAccountList.Count - 1);
|
|
|
|
|
cbFTPImage.SelectedIndex = Config.FTPSelectedImage.Between(0, Config.FTPAccountList.Count - 1);
|
|
|
|
|
cbFTPText.SelectedIndex = Config.FTPSelectedText.Between(0, Config.FTPAccountList.Count - 1);
|
|
|
|
|
cbFTPFile.SelectedIndex = Config.FTPSelectedFile.Between(0, Config.FTPAccountList.Count - 1);
|
2014-05-22 13:48:27 +12:00
|
|
|
|
}
|
2017-09-14 04:21:24 +12:00
|
|
|
|
|
|
|
|
|
FTPUpdateEnabledStates();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
2017-04-21 04:38:20 +12:00
|
|
|
|
private void FTPUpdateEnabledStates()
|
|
|
|
|
{
|
|
|
|
|
cbFTPImage.Enabled = cbFTPText.Enabled = cbFTPFile.Enabled = cbFTPAccounts.Enabled = cbFTPAccounts.Items.Count > 0;
|
|
|
|
|
btnFTPRemove.Enabled = btnFTPDuplicate.Enabled = gbFTPAccount.Enabled = cbFTPAccounts.SelectedIndex > -1;
|
2017-04-21 07:44:50 +12:00
|
|
|
|
|
|
|
|
|
FTPAccount account = FTPGetSelectedAccount();
|
|
|
|
|
|
|
|
|
|
if (account != null)
|
|
|
|
|
{
|
|
|
|
|
gbFTPS.Visible = account.Protocol == FTPProtocol.FTPS;
|
|
|
|
|
gbSFTP.Visible = account.Protocol == FTPProtocol.SFTP;
|
2017-04-21 08:50:31 +12:00
|
|
|
|
pFTPTransferMode.Enabled = account.Protocol == FTPProtocol.FTP || account.Protocol == FTPProtocol.FTPS;
|
2017-04-21 07:44:50 +12:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
gbFTPS.Visible = gbSFTP.Visible = false;
|
|
|
|
|
}
|
2017-04-21 04:38:20 +12:00
|
|
|
|
}
|
|
|
|
|
|
2017-04-21 08:50:31 +12:00
|
|
|
|
private void FTPRefreshNames()
|
|
|
|
|
{
|
|
|
|
|
cbFTPAccounts.RefreshItems();
|
|
|
|
|
cbFTPImage.RefreshItems();
|
|
|
|
|
cbFTPText.RefreshItems();
|
|
|
|
|
cbFTPFile.RefreshItems();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void FTPLoadSelectedAccount()
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2017-04-21 01:56:16 +12:00
|
|
|
|
FTPAccount account = FTPGetSelectedAccount();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
2015-07-15 01:52:44 +12:00
|
|
|
|
if (account != null)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2017-04-21 01:56:16 +12:00
|
|
|
|
FTPLoadAccount(account);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-04-21 08:50:31 +12:00
|
|
|
|
private void FTPLoadAccount(FTPAccount account)
|
2017-04-21 01:56:16 +12:00
|
|
|
|
{
|
|
|
|
|
txtFTPName.Text = account.Name;
|
2015-07-15 01:52:44 +12:00
|
|
|
|
|
2017-04-21 01:56:16 +12:00
|
|
|
|
switch (account.Protocol)
|
|
|
|
|
{
|
|
|
|
|
case FTPProtocol.FTP:
|
|
|
|
|
rbFTPProtocolFTP.Checked = true;
|
|
|
|
|
break;
|
|
|
|
|
case FTPProtocol.FTPS:
|
|
|
|
|
rbFTPProtocolFTPS.Checked = true;
|
|
|
|
|
break;
|
|
|
|
|
case FTPProtocol.SFTP:
|
|
|
|
|
rbFTPProtocolSFTP.Checked = true;
|
|
|
|
|
break;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
2015-07-15 01:52:44 +12:00
|
|
|
|
|
2017-04-21 01:56:16 +12:00
|
|
|
|
txtFTPHost.Text = account.Host;
|
|
|
|
|
nudFTPPort.Value = account.Port;
|
|
|
|
|
txtFTPUsername.Text = account.Username;
|
|
|
|
|
txtFTPPassword.Text = account.Password;
|
|
|
|
|
|
|
|
|
|
if (account.IsActive)
|
|
|
|
|
{
|
|
|
|
|
rbFTPTransferModeActive.Checked = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
rbFTPTransferModePassive.Checked = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
txtFTPRemoteDirectory.Text = account.SubFolderPath;
|
2017-04-21 04:38:20 +12:00
|
|
|
|
cbFTPURLPathProtocol.SelectedIndex = (int)account.BrowserProtocol;
|
2017-04-21 01:56:16 +12:00
|
|
|
|
txtFTPURLPath.Text = account.HttpHomePath;
|
|
|
|
|
cbFTPAppendRemoteDirectory.Checked = account.HttpHomePathAutoAddSubFolderPath;
|
|
|
|
|
cbFTPRemoveFileExtension.Checked = account.HttpHomePathNoExtension;
|
2017-04-21 04:38:20 +12:00
|
|
|
|
lblFTPURLPreviewValue.Text = account.PreviewHttpPath;
|
2017-04-21 07:44:50 +12:00
|
|
|
|
|
|
|
|
|
cbFTPSEncryption.SelectedIndex = (int)account.FTPSEncryption;
|
|
|
|
|
txtFTPSCertificateLocation.Text = account.FTPSCertificateLocation;
|
|
|
|
|
|
|
|
|
|
txtSFTPKeyLocation.Text = account.Keypath;
|
|
|
|
|
txtSFTPKeyPassphrase.Text = account.Passphrase;
|
|
|
|
|
|
|
|
|
|
FTPUpdateEnabledStates();
|
2017-04-21 04:38:20 +12:00
|
|
|
|
}
|
|
|
|
|
|
2017-04-21 08:50:31 +12:00
|
|
|
|
private void FTPClearFields()
|
2017-04-21 04:38:20 +12:00
|
|
|
|
{
|
|
|
|
|
FTPAccount account = new FTPAccount()
|
|
|
|
|
{
|
|
|
|
|
Name = "",
|
|
|
|
|
HttpHomePathAutoAddSubFolderPath = false
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
FTPLoadAccount(account);
|
|
|
|
|
}
|
|
|
|
|
|
2017-04-21 08:50:31 +12:00
|
|
|
|
private void FTPUpdateURLPreview()
|
2017-04-21 04:38:20 +12:00
|
|
|
|
{
|
|
|
|
|
FTPAccount account = FTPGetSelectedAccount();
|
|
|
|
|
|
|
|
|
|
if (account != null)
|
|
|
|
|
{
|
|
|
|
|
lblFTPURLPreviewValue.Text = account.PreviewHttpPath;
|
|
|
|
|
}
|
2017-04-21 01:56:16 +12:00
|
|
|
|
}
|
|
|
|
|
|
2018-08-04 01:38:18 +12:00
|
|
|
|
private async Task FTPTestAccountAsync(FTPAccount account)
|
2017-04-21 01:56:16 +12:00
|
|
|
|
{
|
|
|
|
|
if (account != null)
|
|
|
|
|
{
|
|
|
|
|
btnFTPTest.Enabled = false;
|
|
|
|
|
|
2018-08-04 01:38:18 +12:00
|
|
|
|
await Task.Run(() =>
|
2017-04-21 01:56:16 +12:00
|
|
|
|
{
|
|
|
|
|
FTPTestAccount(account);
|
|
|
|
|
});
|
2018-08-04 01:38:18 +12:00
|
|
|
|
|
|
|
|
|
btnFTPTest.Enabled = true;
|
2017-04-21 01:56:16 +12:00
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
2017-04-21 08:50:31 +12:00
|
|
|
|
private void FTPTestAccount(FTPAccount account)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2016-05-25 06:15:45 +12:00
|
|
|
|
string msg = "";
|
2014-05-31 02:59:08 +12:00
|
|
|
|
string remotePath = account.GetSubFolderPath();
|
|
|
|
|
List<string> directories = new List<string>();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
2014-05-31 02:59:08 +12:00
|
|
|
|
try
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-05-31 02:59:08 +12:00
|
|
|
|
if (account.Protocol == FTPProtocol.FTP || account.Protocol == FTPProtocol.FTPS)
|
|
|
|
|
{
|
|
|
|
|
using (FTP ftp = new FTP(account))
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-05-31 02:59:08 +12:00
|
|
|
|
if (ftp.Connect())
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-05-31 02:59:08 +12:00
|
|
|
|
if (!ftp.DirectoryExists(remotePath))
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-05-31 02:59:08 +12:00
|
|
|
|
directories = ftp.CreateMultiDirectory(remotePath);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
2014-05-31 02:59:08 +12:00
|
|
|
|
if (ftp.IsConnected)
|
|
|
|
|
{
|
|
|
|
|
if (directories.Count > 0)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-10-18 00:48:41 +13:00
|
|
|
|
msg = Resources.UploadersConfigForm_TestFTPAccount_Connected_Created_folders + "\r\n" + string.Join("\r\n", directories);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
2014-05-31 02:59:08 +12:00
|
|
|
|
else
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-10-18 00:48:41 +13:00
|
|
|
|
msg = Resources.UploadersConfigForm_TestFTPAccount_Connected_;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-05-31 02:59:08 +12:00
|
|
|
|
}
|
|
|
|
|
else if (account.Protocol == FTPProtocol.SFTP)
|
|
|
|
|
{
|
|
|
|
|
using (SFTP sftp = new SFTP(account))
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-05-31 02:59:08 +12:00
|
|
|
|
if (sftp.Connect())
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-05-31 02:59:08 +12:00
|
|
|
|
if (!sftp.DirectoryExists(remotePath))
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-05-31 02:59:08 +12:00
|
|
|
|
directories = sftp.CreateMultiDirectory(remotePath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (sftp.IsConnected)
|
|
|
|
|
{
|
|
|
|
|
if (directories.Count > 0)
|
|
|
|
|
{
|
2014-10-18 00:48:41 +13:00
|
|
|
|
msg = Resources.UploadersConfigForm_TestFTPAccount_Connected_Created_folders + "\r\n" + string.Join("\r\n", directories);
|
2014-05-31 02:59:08 +12:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2014-10-18 00:48:41 +13:00
|
|
|
|
msg = Resources.UploadersConfigForm_TestFTPAccount_Connected_;
|
2014-05-31 02:59:08 +12:00
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-05-31 02:59:08 +12:00
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
2014-05-31 02:59:08 +12:00
|
|
|
|
catch (Exception e)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-05-31 02:59:08 +12:00
|
|
|
|
msg = e.Message;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
2014-05-31 02:59:08 +12:00
|
|
|
|
|
2014-10-18 01:19:28 +13:00
|
|
|
|
MessageBox.Show(msg, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
2017-04-21 01:56:16 +12:00
|
|
|
|
|
|
|
|
|
private void FTPOpenClient(FTPAccount account)
|
|
|
|
|
{
|
|
|
|
|
if (account.Protocol == FTPProtocol.FTP || account.Protocol == FTPProtocol.FTPS)
|
|
|
|
|
{
|
|
|
|
|
new FTPClientForm(account).Show();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_FTPOpenClient_FTP_client_only_supports_FTP_or_FTPS_, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
|
|
|
|
#endregion FTP
|
|
|
|
|
|
|
|
|
|
#region SendSpace
|
|
|
|
|
|
|
|
|
|
public UserPassBox SendSpaceRegister()
|
|
|
|
|
{
|
2014-10-18 00:48:41 +13:00
|
|
|
|
UserPassBox upb = new UserPassBox(Resources.UploadersConfigForm_SendSpaceRegister_SendSpace_Registration___, "John Doe", "john.doe@gmail.com", "JohnDoe", "");
|
2013-11-03 23:53:49 +13:00
|
|
|
|
upb.ShowDialog();
|
|
|
|
|
if (upb.DialogResult == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
SendSpace sendSpace = new SendSpace(APIKeys.SendSpaceKey);
|
|
|
|
|
upb.Success = sendSpace.AuthRegister(upb.UserName, upb.FullName, upb.Email, upb.Password);
|
|
|
|
|
if (!upb.Success && sendSpace.Errors.Count > 0)
|
|
|
|
|
{
|
2014-10-18 00:48:41 +13:00
|
|
|
|
MessageBox.Show(sendSpace.ToErrorString(), Resources.UploadersConfigForm_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return upb;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion SendSpace
|
|
|
|
|
|
|
|
|
|
#region Ge.tt
|
|
|
|
|
|
|
|
|
|
public void Ge_ttLogin()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Ge_tt gett = new Ge_tt(APIKeys.Ge_ttKey);
|
|
|
|
|
Ge_ttLogin login = gett.Login(txtGe_ttEmail.Text, txtGe_ttPassword.Text);
|
|
|
|
|
Config.Ge_ttLogin = login;
|
2014-10-18 00:48:41 +13:00
|
|
|
|
lblGe_ttStatus.Text = Resources.UploadersConfigForm_Login_successful;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Config.Ge_ttLogin = null;
|
2014-10-18 00:48:41 +13:00
|
|
|
|
lblGe_ttStatus.Text = Resources.UploadersConfigForm_Login_failed;
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Ge.tt
|
|
|
|
|
|
|
|
|
|
#region Pastebin
|
|
|
|
|
|
|
|
|
|
public void PastebinLogin()
|
|
|
|
|
{
|
|
|
|
|
if (Config.PastebinSettings != null)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Pastebin pastebin = new Pastebin(APIKeys.PastebinKey, Config.PastebinSettings);
|
|
|
|
|
|
|
|
|
|
if (pastebin.Login())
|
|
|
|
|
{
|
2014-09-15 21:33:29 +12:00
|
|
|
|
UpdatePastebinStatus();
|
2014-10-18 01:19:28 +13:00
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_successful, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2014-09-15 21:33:29 +12:00
|
|
|
|
UpdatePastebinStatus();
|
2014-10-18 01:19:28 +13:00
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_failed, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-15 21:33:29 +12:00
|
|
|
|
public void UpdatePastebinStatus()
|
|
|
|
|
{
|
|
|
|
|
if (Config.PastebinSettings == null || string.IsNullOrEmpty(Config.PastebinSettings.UserKey))
|
|
|
|
|
{
|
2018-02-19 15:35:57 +13:00
|
|
|
|
lblPastebinLoginStatus.Text = Resources.UploadersConfigForm_UpdatePastebinStatus_NotLoggedIn;
|
2014-09-15 21:33:29 +12:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2018-02-19 15:35:57 +13:00
|
|
|
|
lblPastebinLoginStatus.Text = Resources.UploadersConfigForm_UpdatePastebinStatus_LoggedIn;
|
2014-09-15 21:33:29 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2013-11-03 23:53:49 +13:00
|
|
|
|
#endregion Pastebin
|
|
|
|
|
|
2014-03-27 20:05:14 +13:00
|
|
|
|
#region Pushbullet
|
|
|
|
|
|
|
|
|
|
public void PushbulletGetDevices()
|
|
|
|
|
{
|
|
|
|
|
cboPushbulletDevices.Items.Clear();
|
2014-03-31 00:37:38 +13:00
|
|
|
|
cboPushbulletDevices.ResetText();
|
2014-03-27 20:05:14 +13:00
|
|
|
|
|
2014-03-31 00:37:38 +13:00
|
|
|
|
Pushbullet pushbullet = new Pushbullet(Config.PushbulletSettings);
|
2014-03-27 20:05:14 +13:00
|
|
|
|
Config.PushbulletSettings.DeviceList = pushbullet.GetDeviceList();
|
|
|
|
|
|
2014-03-30 23:28:34 +13:00
|
|
|
|
if (Config.PushbulletSettings.DeviceList.Count > 0)
|
|
|
|
|
{
|
2014-03-31 00:37:38 +13:00
|
|
|
|
Config.PushbulletSettings.SelectedDevice = 0;
|
2014-03-27 20:05:14 +13:00
|
|
|
|
|
2014-03-30 23:28:34 +13:00
|
|
|
|
cboPushbulletDevices.Enabled = true;
|
2014-03-27 20:05:14 +13:00
|
|
|
|
|
2014-03-30 23:28:34 +13:00
|
|
|
|
Config.PushbulletSettings.DeviceList.ForEach(pbDevice =>
|
|
|
|
|
{
|
2014-10-18 00:48:41 +13:00
|
|
|
|
cboPushbulletDevices.Items.Add(pbDevice.Name ?? Resources.UploadersConfigForm_LoadSettings_Invalid_device_name);
|
2014-03-30 23:28:34 +13:00
|
|
|
|
});
|
2014-03-27 20:05:14 +13:00
|
|
|
|
|
2014-03-31 00:37:38 +13:00
|
|
|
|
cboPushbulletDevices.SelectedIndex = 0;
|
2014-03-30 23:28:34 +13:00
|
|
|
|
}
|
2014-03-27 20:05:14 +13:00
|
|
|
|
}
|
2014-03-27 21:17:28 +13:00
|
|
|
|
|
2014-03-27 20:05:14 +13:00
|
|
|
|
#endregion Pushbullet
|
|
|
|
|
|
2013-11-03 23:53:49 +13:00
|
|
|
|
#region Twitter
|
|
|
|
|
|
2015-04-28 13:33:53 +12:00
|
|
|
|
private OAuthInfo GetSelectedTwitterAccount()
|
|
|
|
|
{
|
|
|
|
|
return Config.TwitterOAuthInfoList.ReturnIfValidIndex(Config.TwitterSelectedAccount);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool CheckTwitterAccounts()
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
return Config.TwitterOAuthInfoList.IsValidIndex(Config.TwitterSelectedAccount);
|
|
|
|
|
}
|
|
|
|
|
|
2015-04-28 13:33:53 +12:00
|
|
|
|
private bool TwitterUpdateSelected()
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2015-09-03 03:41:02 +12:00
|
|
|
|
Config.TwitterSelectedAccount = lbTwitterAccounts.SelectedIndex;
|
2015-04-28 13:33:53 +12:00
|
|
|
|
|
|
|
|
|
if (Config.TwitterSelectedAccount > -1)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2015-05-02 23:55:43 +12:00
|
|
|
|
OAuthInfo oauth = Config.TwitterOAuthInfoList[Config.TwitterSelectedAccount];
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
2015-04-28 13:33:53 +12:00
|
|
|
|
if (oauth != null)
|
2014-05-30 23:38:23 +12:00
|
|
|
|
{
|
2015-05-02 23:55:43 +12:00
|
|
|
|
txtTwitterDescription.Enabled = true;
|
2015-04-28 13:33:53 +12:00
|
|
|
|
txtTwitterDescription.Text = oauth.Description;
|
|
|
|
|
oauthTwitter.Enabled = true;
|
|
|
|
|
|
|
|
|
|
if (OAuthInfo.CheckOAuth(oauth))
|
|
|
|
|
{
|
|
|
|
|
oauthTwitter.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
oauthTwitter.Status = OAuthLoginStatus.LoginRequired;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
2014-05-30 23:38:23 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
2015-04-28 13:33:53 +12:00
|
|
|
|
|
2015-05-02 23:55:43 +12:00
|
|
|
|
txtTwitterDescription.Enabled = false;
|
2016-05-25 06:15:45 +12:00
|
|
|
|
txtTwitterDescription.Text = "";
|
2015-04-28 13:33:53 +12:00
|
|
|
|
oauthTwitter.Enabled = false;
|
|
|
|
|
return false;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
2015-04-28 13:33:53 +12:00
|
|
|
|
private void TwitterAuthOpen()
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-05-30 23:38:23 +12:00
|
|
|
|
if (CheckTwitterAccounts())
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2015-04-28 13:33:53 +12:00
|
|
|
|
try
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2015-04-28 13:33:53 +12:00
|
|
|
|
OAuthInfo oauth = new OAuthInfo(APIKeys.TwitterConsumerKey, APIKeys.TwitterConsumerSecret);
|
2014-05-30 23:38:23 +12:00
|
|
|
|
|
2015-04-28 13:33:53 +12:00
|
|
|
|
string url = new Twitter(oauth).GetAuthorizationURL();
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(url))
|
2014-05-30 23:38:23 +12:00
|
|
|
|
{
|
2015-04-28 13:33:53 +12:00
|
|
|
|
oauth.Description = Config.TwitterOAuthInfoList[Config.TwitterSelectedAccount].Description;
|
|
|
|
|
Config.TwitterOAuthInfoList[Config.TwitterSelectedAccount] = oauth;
|
|
|
|
|
URLHelpers.OpenURL(url);
|
|
|
|
|
DebugHelper.WriteLine("TwitterAuthOpen - Authorization URL is opened: " + url);
|
2014-05-30 23:38:23 +12:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2015-04-28 13:33:53 +12:00
|
|
|
|
DebugHelper.WriteLine("TwitterAuthOpen - Authorization URL is empty.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2015-04-28 13:33:53 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void TwitterAuthComplete(string code)
|
|
|
|
|
{
|
|
|
|
|
if (CheckTwitterAccounts())
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
OAuthInfo oauth = GetSelectedTwitterAccount();
|
|
|
|
|
|
|
|
|
|
if (oauth != null && !string.IsNullOrEmpty(oauth.AuthToken) && !string.IsNullOrEmpty(oauth.AuthSecret))
|
|
|
|
|
{
|
|
|
|
|
bool result = new Twitter(oauth).GetAccessToken(code);
|
|
|
|
|
|
|
|
|
|
if (result)
|
|
|
|
|
{
|
2016-05-25 06:15:45 +12:00
|
|
|
|
oauth.AuthVerifier = "";
|
2015-04-28 13:33:53 +12:00
|
|
|
|
oauthTwitter.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_successful, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
oauthTwitter.Status = OAuthLoginStatus.LoginFailed;
|
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_failed, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
2014-05-30 23:38:23 +12:00
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
2015-04-28 13:33:53 +12:00
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2015-04-28 13:33:53 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void TwitterAuthClear()
|
|
|
|
|
{
|
|
|
|
|
if (CheckTwitterAccounts())
|
|
|
|
|
{
|
|
|
|
|
OAuthInfo oauth = new OAuthInfo();
|
|
|
|
|
|
|
|
|
|
OAuthInfo oauth2 = GetSelectedTwitterAccount();
|
|
|
|
|
|
|
|
|
|
if (oauth2 != null)
|
|
|
|
|
{
|
|
|
|
|
oauth.Description = oauth2.Description;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Config.TwitterOAuthInfoList[Config.TwitterSelectedAccount] = oauth;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Twitter
|
|
|
|
|
|
|
|
|
|
#region Custom uploader
|
|
|
|
|
|
2017-09-03 04:19:54 +12:00
|
|
|
|
private bool CustomUploaderCheck(int index)
|
|
|
|
|
{
|
|
|
|
|
return Config.CustomUploadersList.IsValidIndex(index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private CustomUploaderItem CustomUploaderGetSelected()
|
|
|
|
|
{
|
|
|
|
|
int index = lbCustomUploaderList.SelectedIndex;
|
|
|
|
|
|
|
|
|
|
if (CustomUploaderCheck(index))
|
|
|
|
|
{
|
|
|
|
|
return Config.CustomUploadersList[index];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
2019-01-09 07:28:34 +13:00
|
|
|
|
private void CustomUploaderNew()
|
2017-09-03 04:19:54 +12:00
|
|
|
|
{
|
2019-01-05 00:37:24 +13:00
|
|
|
|
CustomUploaderItem uploader = new CustomUploaderItem()
|
|
|
|
|
{
|
|
|
|
|
Version = Application.ProductVersion
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
CustomUploaderAdd(uploader);
|
2019-01-09 07:28:34 +13:00
|
|
|
|
CustomUploaderUpdateList();
|
2017-09-03 04:19:54 +12:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CustomUploaderAdd(CustomUploaderItem uploader)
|
|
|
|
|
{
|
|
|
|
|
if (uploader != null)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomUploadersList.Add(uploader);
|
|
|
|
|
lbCustomUploaderList.Items.Add(uploader);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CustomUploaderLoadSelected()
|
|
|
|
|
{
|
|
|
|
|
CustomUploaderItem uploader = CustomUploaderGetSelected();
|
|
|
|
|
if (uploader != null)
|
|
|
|
|
{
|
|
|
|
|
CustomUploaderLoad(uploader);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CustomUploaderLoad(CustomUploaderItem uploader)
|
|
|
|
|
{
|
|
|
|
|
txtCustomUploaderName.Text = uploader.Name ?? "";
|
|
|
|
|
CustomUploaderSetDestinationType(uploader.DestinationType);
|
|
|
|
|
|
2019-01-09 04:57:49 +13:00
|
|
|
|
cbCustomUploaderRequestMethod.SelectedIndex = (int)uploader.RequestMethod;
|
2018-11-21 00:48:31 +13:00
|
|
|
|
rtbCustomUploaderRequestURL.Text = uploader.RequestURL ?? "";
|
2018-11-22 12:50:41 +13:00
|
|
|
|
CustomUploaderSyntaxHighlight(rtbCustomUploaderRequestURL);
|
2019-01-09 04:02:21 +13:00
|
|
|
|
cbCustomUploaderRequestFormat.SelectedIndex = (int)uploader.Body;
|
2018-11-22 07:05:39 +13:00
|
|
|
|
|
|
|
|
|
rtbCustomUploaderData.Text = uploader.Data ?? "";
|
2018-11-22 12:50:41 +13:00
|
|
|
|
CustomUploaderSyntaxHighlight(rtbCustomUploaderData);
|
2017-09-03 04:19:54 +12:00
|
|
|
|
|
2019-01-06 21:00:28 +13:00
|
|
|
|
txtCustomUploaderArgumentName.Text = "";
|
|
|
|
|
rtbCustomUploaderArgumentValue.Text = "";
|
2017-09-03 04:19:54 +12:00
|
|
|
|
lvCustomUploaderArguments.Items.Clear();
|
|
|
|
|
if (uploader.Arguments != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (KeyValuePair<string, string> arg in uploader.Arguments)
|
|
|
|
|
{
|
|
|
|
|
lvCustomUploaderArguments.Items.Add(arg.Key).SubItems.Add(arg.Value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2019-01-06 21:00:28 +13:00
|
|
|
|
txtCustomUploaderFileFormName.Text = uploader.FileFormName ?? "";
|
2018-11-22 07:05:39 +13:00
|
|
|
|
|
2019-01-06 23:09:01 +13:00
|
|
|
|
txtCustomUploaderParameterName.Text = "";
|
|
|
|
|
rtbCustomUploaderParameterValue.Text = "";
|
|
|
|
|
lvCustomUploaderParameters.Items.Clear();
|
|
|
|
|
if (uploader.Parameters != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (KeyValuePair<string, string> arg in uploader.Parameters)
|
|
|
|
|
{
|
|
|
|
|
lvCustomUploaderParameters.Items.Add(arg.Key).SubItems.Add(arg.Value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-09-03 04:19:54 +12:00
|
|
|
|
txtCustomUploaderHeaderName.Text = "";
|
2018-11-21 05:22:12 +13:00
|
|
|
|
rtbCustomUploaderHeaderValue.Text = "";
|
2017-09-03 04:19:54 +12:00
|
|
|
|
lvCustomUploaderHeaders.Items.Clear();
|
|
|
|
|
if (uploader.Headers != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (KeyValuePair<string, string> arg in uploader.Headers)
|
|
|
|
|
{
|
|
|
|
|
lvCustomUploaderHeaders.Items.Add(arg.Key).SubItems.Add(arg.Value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cbCustomUploaderResponseType.SelectedIndex = (int)uploader.ResponseType;
|
|
|
|
|
txtCustomUploaderJsonPath.Text = "";
|
|
|
|
|
txtCustomUploaderXPath.Text = "";
|
|
|
|
|
txtCustomUploaderRegexp.Text = "";
|
|
|
|
|
lvCustomUploaderRegexps.Items.Clear();
|
|
|
|
|
if (uploader.RegexList != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (string regexp in uploader.RegexList)
|
|
|
|
|
{
|
|
|
|
|
lvCustomUploaderRegexps.Items.Add(regexp);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-11-20 04:33:03 +13:00
|
|
|
|
rtbCustomUploaderURL.Text = uploader.URL ?? "";
|
2018-11-22 12:50:41 +13:00
|
|
|
|
CustomUploaderSyntaxHighlight(rtbCustomUploaderURL);
|
2018-11-20 04:33:03 +13:00
|
|
|
|
rtbCustomUploaderThumbnailURL.Text = uploader.ThumbnailURL ?? "";
|
2018-11-22 12:50:41 +13:00
|
|
|
|
CustomUploaderSyntaxHighlight(rtbCustomUploaderThumbnailURL);
|
2018-11-20 04:33:03 +13:00
|
|
|
|
rtbCustomUploaderDeletionURL.Text = uploader.DeletionURL ?? "";
|
2018-11-22 12:50:41 +13:00
|
|
|
|
CustomUploaderSyntaxHighlight(rtbCustomUploaderDeletionURL);
|
2017-09-05 11:08:40 +12:00
|
|
|
|
|
|
|
|
|
CustomUploaderUpdateStates();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CustomUploaderUpdateStates()
|
|
|
|
|
{
|
2017-09-06 09:41:14 +12:00
|
|
|
|
bool isSelected = CustomUploaderCheck(lbCustomUploaderList.SelectedIndex);
|
2017-09-05 11:08:40 +12:00
|
|
|
|
|
2017-09-19 08:28:04 +12:00
|
|
|
|
txtCustomUploaderName.Enabled = btnCustomUploaderRemove.Enabled = btnCustomUploaderDuplicate.Enabled = pCustomUploader.Enabled =
|
|
|
|
|
mbCustomUploaderDestinationType.Enabled = isSelected;
|
2017-09-06 09:41:14 +12:00
|
|
|
|
|
|
|
|
|
if (isSelected)
|
|
|
|
|
{
|
2019-01-07 05:04:40 +13:00
|
|
|
|
CustomUploaderUpdateParametersState();
|
|
|
|
|
CustomUploaderUpdateHeadersState();
|
2018-11-22 09:23:50 +13:00
|
|
|
|
CustomUploaderUpdateRequestFormatState();
|
2017-09-06 09:41:14 +12:00
|
|
|
|
CustomUploaderUpdateArgumentsState();
|
|
|
|
|
CustomUploaderUpdateResponseState();
|
|
|
|
|
}
|
2017-09-06 10:01:45 +12:00
|
|
|
|
|
2019-01-09 11:42:43 +13:00
|
|
|
|
btnCustomUploaderClearUploaders.Enabled = tsmiCustomUploaderExportAll.Enabled = cbCustomUploaderImageUploader.Enabled =
|
2017-09-06 10:01:45 +12:00
|
|
|
|
btnCustomUploaderImageUploaderTest.Enabled = cbCustomUploaderTextUploader.Enabled = btnCustomUploaderTextUploaderTest.Enabled =
|
|
|
|
|
cbCustomUploaderFileUploader.Enabled = btnCustomUploaderFileUploaderTest.Enabled = cbCustomUploaderURLShortener.Enabled =
|
2017-09-11 00:29:29 +12:00
|
|
|
|
btnCustomUploaderURLShortenerTest.Enabled = cbCustomUploaderURLSharingService.Enabled = btnCustomUploaderURLSharingServiceTest.Enabled =
|
|
|
|
|
lbCustomUploaderList.Items.Count > 0;
|
2017-09-05 11:08:40 +12:00
|
|
|
|
}
|
|
|
|
|
|
2018-11-22 09:23:50 +13:00
|
|
|
|
private void CustomUploaderUpdateRequestFormatState()
|
|
|
|
|
{
|
|
|
|
|
CustomUploaderItem uploader = CustomUploaderGetSelected();
|
|
|
|
|
if (uploader != null)
|
|
|
|
|
{
|
2019-01-09 04:02:21 +13:00
|
|
|
|
pCustomUploaderBodyArguments.Visible = uploader.Body == CustomUploaderBody.MultipartFormData ||
|
|
|
|
|
uploader.Body == CustomUploaderBody.FormURLEncoded;
|
|
|
|
|
lblCustomUploaderFileFormName.Visible = txtCustomUploaderFileFormName.Visible = uploader.Body == CustomUploaderBody.MultipartFormData;
|
2019-01-10 05:08:55 +13:00
|
|
|
|
pCustomUploaderBodyData.Visible = uploader.Body == CustomUploaderBody.JSON || uploader.Body == CustomUploaderBody.XML;
|
|
|
|
|
btnCustomUploaderDataMinify.Visible = uploader.Body == CustomUploaderBody.JSON;
|
2018-11-22 09:23:50 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2019-01-06 23:09:01 +13:00
|
|
|
|
private void CustomUploaderUpdateParametersState()
|
2017-09-05 11:08:40 +12:00
|
|
|
|
{
|
2019-01-06 23:09:01 +13:00
|
|
|
|
btnCustomUploaderParameterAdd.Enabled = !string.IsNullOrEmpty(txtCustomUploaderParameterName.Text);
|
|
|
|
|
btnCustomUploaderParameterRemove.Enabled = btnCustomUploaderParameterUpdate.Enabled = lvCustomUploaderParameters.SelectedItems.Count > 0;
|
2017-09-05 11:08:40 +12:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CustomUploaderUpdateHeadersState()
|
|
|
|
|
{
|
|
|
|
|
btnCustomUploaderHeaderAdd.Enabled = !string.IsNullOrEmpty(txtCustomUploaderHeaderName.Text);
|
|
|
|
|
btnCustomUploaderHeaderRemove.Enabled = btnCustomUploaderHeaderUpdate.Enabled = lvCustomUploaderHeaders.SelectedItems.Count > 0;
|
|
|
|
|
}
|
|
|
|
|
|
2019-01-06 23:09:01 +13:00
|
|
|
|
private void CustomUploaderUpdateArgumentsState()
|
|
|
|
|
{
|
|
|
|
|
btnCustomUploaderArgumentAdd.Enabled = !string.IsNullOrEmpty(txtCustomUploaderArgumentName.Text);
|
|
|
|
|
btnCustomUploaderArgumentRemove.Enabled = btnCustomUploaderArgumentUpdate.Enabled = lvCustomUploaderArguments.SelectedItems.Count > 0;
|
|
|
|
|
}
|
|
|
|
|
|
2017-09-05 11:08:40 +12:00
|
|
|
|
private void CustomUploaderUpdateResponseState()
|
|
|
|
|
{
|
|
|
|
|
btnCustomUploaderJsonAddSyntax.Enabled = !string.IsNullOrEmpty(txtCustomUploaderJsonPath.Text);
|
|
|
|
|
btnCustomUploaderXmlSyntaxAdd.Enabled = !string.IsNullOrEmpty(txtCustomUploaderXPath.Text);
|
|
|
|
|
btnCustomUploaderRegexpAdd.Enabled = !string.IsNullOrEmpty(txtCustomUploaderRegexp.Text);
|
|
|
|
|
btnCustomUploaderRegexpRemove.Enabled = btnCustomUploaderRegexpUpdate.Enabled = btnCustomUploaderRegexAddSyntax.Enabled =
|
|
|
|
|
lvCustomUploaderRegexps.SelectedItems.Count > 0;
|
2017-09-03 04:19:54 +12:00
|
|
|
|
}
|
|
|
|
|
|
2017-09-08 23:13:58 +12:00
|
|
|
|
private void CustomUploaderRefreshNames()
|
|
|
|
|
{
|
2018-11-21 00:48:31 +13:00
|
|
|
|
customUploaderPauseLoad = true;
|
2017-09-08 23:13:58 +12:00
|
|
|
|
lbCustomUploaderList.RefreshSelectedItem();
|
|
|
|
|
cbCustomUploaderImageUploader.RefreshItems();
|
|
|
|
|
cbCustomUploaderTextUploader.RefreshItems();
|
|
|
|
|
cbCustomUploaderFileUploader.RefreshItems();
|
|
|
|
|
cbCustomUploaderURLShortener.RefreshItems();
|
2017-09-11 00:29:29 +12:00
|
|
|
|
cbCustomUploaderURLSharingService.RefreshItems();
|
2018-11-21 00:48:31 +13:00
|
|
|
|
customUploaderPauseLoad = false;
|
2017-09-08 23:13:58 +12:00
|
|
|
|
}
|
|
|
|
|
|
2017-09-03 04:19:54 +12:00
|
|
|
|
private void CustomUploaderClearUploaders()
|
|
|
|
|
{
|
|
|
|
|
Config.CustomUploadersList.Clear();
|
|
|
|
|
lbCustomUploaderList.Items.Clear();
|
|
|
|
|
CustomUploaderClearFields();
|
2017-09-11 00:29:29 +12:00
|
|
|
|
Config.CustomImageUploaderSelected = Config.CustomTextUploaderSelected = Config.CustomFileUploaderSelected = Config.CustomURLShortenerSelected =
|
|
|
|
|
Config.CustomURLSharingServiceSelected = 0;
|
2017-09-03 07:08:24 +12:00
|
|
|
|
CustomUploaderUpdateList();
|
2017-09-06 09:41:14 +12:00
|
|
|
|
CustomUploaderUpdateStates();
|
2019-01-05 06:19:24 +13:00
|
|
|
|
btnCustomUploaderNew.Focus();
|
2017-09-03 04:19:54 +12:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CustomUploaderClearFields()
|
|
|
|
|
{
|
|
|
|
|
CustomUploaderLoad(new CustomUploaderItem());
|
|
|
|
|
}
|
|
|
|
|
|
2017-09-03 07:08:24 +12:00
|
|
|
|
private void CustomUploaderExportAll()
|
|
|
|
|
{
|
|
|
|
|
if (Config.CustomUploadersList != null && Config.CustomUploadersList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
using (FolderSelectDialog fsd = new FolderSelectDialog())
|
|
|
|
|
{
|
|
|
|
|
if (fsd.ShowDialog())
|
|
|
|
|
{
|
|
|
|
|
foreach (CustomUploaderItem uploader in Config.CustomUploadersList)
|
|
|
|
|
{
|
|
|
|
|
string json = eiCustomUploaders.Serialize(uploader);
|
2018-01-02 20:38:28 +13:00
|
|
|
|
string filepath = Path.Combine(fsd.FileName, uploader.GetFileName());
|
2017-09-03 07:08:24 +12:00
|
|
|
|
File.WriteAllText(filepath, json, Encoding.UTF8);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CustomUploaderLoadTab(bool selectLastItem = false)
|
2017-01-17 06:57:40 +13:00
|
|
|
|
{
|
|
|
|
|
lbCustomUploaderList.Items.Clear();
|
|
|
|
|
|
|
|
|
|
if (Config.CustomUploadersList == null)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomUploadersList = new List<CustomUploaderItem>();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
foreach (CustomUploaderItem customUploader in Config.CustomUploadersList)
|
|
|
|
|
{
|
2017-09-06 11:18:36 +12:00
|
|
|
|
lbCustomUploaderList.Items.Add(customUploader);
|
2017-01-17 06:57:40 +13:00
|
|
|
|
}
|
|
|
|
|
|
2017-09-03 07:08:24 +12:00
|
|
|
|
CustomUploaderUpdateList();
|
2017-01-17 06:57:40 +13:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if DEBUG
|
2019-01-09 11:42:43 +13:00
|
|
|
|
tsmiCustomUploaderExportAll.Visible = true;
|
2017-01-17 06:57:40 +13:00
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
CustomUploaderClearFields();
|
|
|
|
|
|
2017-09-14 06:36:12 +12:00
|
|
|
|
if (lbCustomUploaderList.Items.Count > 0)
|
2017-01-17 06:57:40 +13:00
|
|
|
|
{
|
2017-09-14 06:36:12 +12:00
|
|
|
|
if (selectLastItem)
|
|
|
|
|
{
|
|
|
|
|
lbCustomUploaderList.SelectedIndex = lbCustomUploaderList.Items.Count - 1;
|
|
|
|
|
}
|
|
|
|
|
else if (Config.CustomUploadersList.IsValidIndex(Config.CustomImageUploaderSelected))
|
|
|
|
|
{
|
|
|
|
|
lbCustomUploaderList.SelectedIndex = Config.CustomImageUploaderSelected;
|
|
|
|
|
}
|
2017-01-17 06:57:40 +13:00
|
|
|
|
}
|
2017-09-05 11:08:40 +12:00
|
|
|
|
|
|
|
|
|
CustomUploaderUpdateStates();
|
2017-01-17 06:57:40 +13:00
|
|
|
|
}
|
|
|
|
|
|
2017-09-03 07:08:24 +12:00
|
|
|
|
public static void CustomUploaderUpdateTab()
|
2017-01-17 06:57:40 +13:00
|
|
|
|
{
|
|
|
|
|
if (IsInstanceActive)
|
|
|
|
|
{
|
|
|
|
|
UploadersConfigForm form = GetFormInstance(null);
|
2017-09-03 07:08:24 +12:00
|
|
|
|
form.CustomUploaderLoadTab(true);
|
2017-09-15 06:59:07 +12:00
|
|
|
|
form.ForceActivate();
|
2017-01-17 06:57:40 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-09-03 07:08:24 +12:00
|
|
|
|
private void CustomUploaderAddDestinationTypes()
|
2017-01-15 11:34:53 +13:00
|
|
|
|
{
|
|
|
|
|
string[] enums = Helpers.GetLocalizedEnumDescriptions<CustomUploaderDestinationType>().Skip(1).Select(x => x.Replace("&", "&&")).ToArray();
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < enums.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
ToolStripMenuItem tsmi = new ToolStripMenuItem(enums[i]);
|
|
|
|
|
|
|
|
|
|
int index = i;
|
|
|
|
|
|
|
|
|
|
tsmi.Click += (sender, e) =>
|
|
|
|
|
{
|
|
|
|
|
ToolStripMenuItem tsmi2 = (ToolStripMenuItem)cmsCustomUploaderDestinationType.Items[index];
|
|
|
|
|
tsmi2.Checked = !tsmi2.Checked;
|
2017-09-03 07:08:24 +12:00
|
|
|
|
|
|
|
|
|
CustomUploaderItem uploader = CustomUploaderGetSelected();
|
|
|
|
|
if (uploader != null)
|
|
|
|
|
{
|
|
|
|
|
uploader.DestinationType = CustomUploaderGetDestinationType();
|
|
|
|
|
}
|
2019-01-05 06:19:24 +13:00
|
|
|
|
|
|
|
|
|
CustomUploaderDestinationTypeUpdate();
|
2017-01-15 11:34:53 +13:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
cmsCustomUploaderDestinationType.Items.Add(tsmi);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cmsCustomUploaderDestinationType.Closing += (sender, e) => e.Cancel = e.CloseReason == ToolStripDropDownCloseReason.ItemClicked;
|
|
|
|
|
}
|
|
|
|
|
|
2017-09-03 04:19:54 +12:00
|
|
|
|
private void CustomUploaderSetDestinationType(CustomUploaderDestinationType destinationType)
|
2017-01-15 11:34:53 +13:00
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < cmsCustomUploaderDestinationType.Items.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
ToolStripMenuItem tsmi = (ToolStripMenuItem)cmsCustomUploaderDestinationType.Items[i];
|
|
|
|
|
tsmi.Checked = destinationType.HasFlag(1 << i);
|
|
|
|
|
}
|
2019-01-05 06:19:24 +13:00
|
|
|
|
|
|
|
|
|
CustomUploaderDestinationTypeUpdate();
|
2017-01-15 11:34:53 +13:00
|
|
|
|
}
|
|
|
|
|
|
2017-09-03 07:08:24 +12:00
|
|
|
|
private CustomUploaderDestinationType CustomUploaderGetDestinationType()
|
2017-01-15 11:34:53 +13:00
|
|
|
|
{
|
|
|
|
|
CustomUploaderDestinationType destinationType = CustomUploaderDestinationType.None;
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < cmsCustomUploaderDestinationType.Items.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
ToolStripMenuItem tsmi = (ToolStripMenuItem)cmsCustomUploaderDestinationType.Items[i];
|
|
|
|
|
|
|
|
|
|
if (tsmi.Checked)
|
|
|
|
|
{
|
|
|
|
|
destinationType |= (CustomUploaderDestinationType)(1 << i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return destinationType;
|
|
|
|
|
}
|
|
|
|
|
|
2019-01-05 06:19:24 +13:00
|
|
|
|
private void CustomUploaderDestinationTypeUpdate()
|
|
|
|
|
{
|
|
|
|
|
CustomUploaderItem uploader = CustomUploaderGetSelected();
|
|
|
|
|
if (uploader != null)
|
|
|
|
|
{
|
|
|
|
|
if (uploader.DestinationType == CustomUploaderDestinationType.None)
|
|
|
|
|
{
|
|
|
|
|
mbCustomUploaderDestinationType.Text = CustomUploaderDestinationType.None.GetLocalizedDescription();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
mbCustomUploaderDestinationType.Text = string.Join(", ", uploader.DestinationType.GetFlags<CustomUploaderDestinationType>().
|
|
|
|
|
Select(x => x.GetLocalizedDescription()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-23 02:07:21 +12:00
|
|
|
|
private void CustomUploaderFixSelectedUploader(int removedIndex)
|
|
|
|
|
{
|
2017-09-14 04:21:24 +12:00
|
|
|
|
int resetIndex = Config.CustomUploadersList.Count - 1;
|
2015-07-23 02:07:21 +12:00
|
|
|
|
|
2017-09-14 04:21:24 +12:00
|
|
|
|
if (Config.CustomImageUploaderSelected == removedIndex)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomImageUploaderSelected = resetIndex;
|
|
|
|
|
}
|
|
|
|
|
else if (Config.CustomImageUploaderSelected > removedIndex)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomImageUploaderSelected--;
|
|
|
|
|
}
|
2015-07-23 02:07:21 +12:00
|
|
|
|
|
2017-09-14 04:21:24 +12:00
|
|
|
|
if (Config.CustomTextUploaderSelected == removedIndex)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomTextUploaderSelected = resetIndex;
|
|
|
|
|
}
|
|
|
|
|
else if (Config.CustomTextUploaderSelected > removedIndex)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomTextUploaderSelected--;
|
|
|
|
|
}
|
2015-07-23 02:07:21 +12:00
|
|
|
|
|
2017-09-14 04:21:24 +12:00
|
|
|
|
if (Config.CustomFileUploaderSelected == removedIndex)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomFileUploaderSelected = resetIndex;
|
|
|
|
|
}
|
|
|
|
|
else if (Config.CustomFileUploaderSelected > removedIndex)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomFileUploaderSelected--;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (Config.CustomURLShortenerSelected == removedIndex)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomURLShortenerSelected = resetIndex;
|
|
|
|
|
}
|
|
|
|
|
else if (Config.CustomURLShortenerSelected > removedIndex)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomURLShortenerSelected--;
|
|
|
|
|
}
|
2017-09-11 00:29:29 +12:00
|
|
|
|
|
2017-09-14 04:21:24 +12:00
|
|
|
|
if (Config.CustomURLSharingServiceSelected == removedIndex)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomURLSharingServiceSelected = resetIndex;
|
|
|
|
|
}
|
|
|
|
|
else if (Config.CustomURLSharingServiceSelected > removedIndex)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomURLSharingServiceSelected--;
|
|
|
|
|
}
|
2015-07-23 02:07:21 +12:00
|
|
|
|
}
|
|
|
|
|
|
2017-09-03 07:08:24 +12:00
|
|
|
|
private void CustomUploaderUpdateList()
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
cbCustomUploaderImageUploader.Items.Clear();
|
|
|
|
|
cbCustomUploaderTextUploader.Items.Clear();
|
|
|
|
|
cbCustomUploaderFileUploader.Items.Clear();
|
|
|
|
|
cbCustomUploaderURLShortener.Items.Clear();
|
2017-09-11 00:29:29 +12:00
|
|
|
|
cbCustomUploaderURLSharingService.Items.Clear();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
2017-09-14 04:21:24 +12:00
|
|
|
|
if (Config.CustomUploadersList.Count > 0)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2017-09-14 04:21:24 +12:00
|
|
|
|
foreach (CustomUploaderItem item in Config.CustomUploadersList)
|
|
|
|
|
{
|
|
|
|
|
cbCustomUploaderImageUploader.Items.Add(item);
|
|
|
|
|
cbCustomUploaderTextUploader.Items.Add(item);
|
|
|
|
|
cbCustomUploaderFileUploader.Items.Add(item);
|
|
|
|
|
cbCustomUploaderURLShortener.Items.Add(item);
|
|
|
|
|
cbCustomUploaderURLSharingService.Items.Add(item);
|
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
2017-09-14 06:36:12 +12:00
|
|
|
|
cbCustomUploaderImageUploader.SelectedIndex = Config.CustomImageUploaderSelected.Between(0, Config.CustomUploadersList.Count - 1);
|
|
|
|
|
cbCustomUploaderTextUploader.SelectedIndex = Config.CustomTextUploaderSelected.Between(0, Config.CustomUploadersList.Count - 1);
|
|
|
|
|
cbCustomUploaderFileUploader.SelectedIndex = Config.CustomFileUploaderSelected.Between(0, Config.CustomUploadersList.Count - 1);
|
|
|
|
|
cbCustomUploaderURLShortener.SelectedIndex = Config.CustomURLShortenerSelected.Between(0, Config.CustomUploadersList.Count - 1);
|
|
|
|
|
cbCustomUploaderURLSharingService.SelectedIndex = Config.CustomURLSharingServiceSelected.Between(0, Config.CustomUploadersList.Count - 1);
|
2017-09-11 00:29:29 +12:00
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
2018-08-04 01:38:18 +12:00
|
|
|
|
private async Task TestCustomUploader(CustomUploaderDestinationType type, CustomUploaderItem item)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2017-09-11 00:29:29 +12:00
|
|
|
|
btnCustomUploaderImageUploaderTest.Enabled = btnCustomUploaderTextUploaderTest.Enabled = btnCustomUploaderFileUploaderTest.Enabled =
|
|
|
|
|
btnCustomUploaderURLShortenerTest.Enabled = btnCustomUploaderURLSharingServiceTest.Enabled = false;
|
2015-06-06 22:15:54 +12:00
|
|
|
|
|
2013-11-03 23:53:49 +13:00
|
|
|
|
UploadResult result = null;
|
|
|
|
|
|
2019-01-06 21:00:28 +13:00
|
|
|
|
rtbCustomUploaderResult.ResetText();
|
2019-01-07 02:16:51 +13:00
|
|
|
|
txtCustomUploaderResponse.ResetText();
|
2014-01-20 20:14:36 +13:00
|
|
|
|
|
2018-08-04 01:38:18 +12:00
|
|
|
|
await Task.Run(() =>
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
switch (type)
|
|
|
|
|
{
|
2017-09-11 00:29:29 +12:00
|
|
|
|
case CustomUploaderDestinationType.ImageUploader:
|
2013-11-06 06:58:22 +13:00
|
|
|
|
using (Stream stream = ShareXResources.Logo.GetStream())
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
CustomImageUploader imageUploader = new CustomImageUploader(item);
|
|
|
|
|
result = imageUploader.Upload(stream, "Test.png");
|
|
|
|
|
result.Errors = imageUploader.Errors;
|
|
|
|
|
}
|
|
|
|
|
break;
|
2017-09-11 00:29:29 +12:00
|
|
|
|
case CustomUploaderDestinationType.TextUploader:
|
2013-11-03 23:53:49 +13:00
|
|
|
|
CustomTextUploader textUploader = new CustomTextUploader(item);
|
2014-10-18 00:48:41 +13:00
|
|
|
|
result = textUploader.UploadText("ShareX text upload test", "Test.txt");
|
2013-11-03 23:53:49 +13:00
|
|
|
|
result.Errors = textUploader.Errors;
|
|
|
|
|
break;
|
2017-09-11 00:29:29 +12:00
|
|
|
|
case CustomUploaderDestinationType.FileUploader:
|
2013-11-06 06:58:22 +13:00
|
|
|
|
using (Stream stream = ShareXResources.Logo.GetStream())
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
CustomFileUploader fileUploader = new CustomFileUploader(item);
|
|
|
|
|
result = fileUploader.Upload(stream, "Test.png");
|
|
|
|
|
result.Errors = fileUploader.Errors;
|
|
|
|
|
}
|
|
|
|
|
break;
|
2017-09-11 00:29:29 +12:00
|
|
|
|
case CustomUploaderDestinationType.URLShortener:
|
2013-11-03 23:53:49 +13:00
|
|
|
|
CustomURLShortener urlShortener = new CustomURLShortener(item);
|
|
|
|
|
result = urlShortener.ShortenURL(Links.URL_WEBSITE);
|
|
|
|
|
result.Errors = urlShortener.Errors;
|
|
|
|
|
break;
|
2017-09-11 00:29:29 +12:00
|
|
|
|
case CustomUploaderDestinationType.URLSharingService:
|
|
|
|
|
CustomURLSharer urlSharer = new CustomURLSharer(item);
|
|
|
|
|
result = urlSharer.ShareURL(Links.URL_WEBSITE);
|
|
|
|
|
result.Errors = urlSharer.Errors;
|
|
|
|
|
break;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
result = new UploadResult();
|
|
|
|
|
result.Errors.Add(e.Message);
|
|
|
|
|
}
|
2018-08-04 01:38:18 +12:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (!IsDisposed)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2018-08-04 01:38:18 +12:00
|
|
|
|
if (result != null)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2019-01-07 06:42:12 +13:00
|
|
|
|
StringBuilder sbResult = new StringBuilder();
|
2019-01-07 02:16:51 +13:00
|
|
|
|
|
2018-08-04 01:38:18 +12:00
|
|
|
|
if (((type == CustomUploaderDestinationType.ImageUploader || type == CustomUploaderDestinationType.TextUploader ||
|
|
|
|
|
type == CustomUploaderDestinationType.FileUploader) && !string.IsNullOrEmpty(result.URL)) ||
|
|
|
|
|
(type == CustomUploaderDestinationType.URLShortener && !string.IsNullOrEmpty(result.ShortenedURL)) ||
|
|
|
|
|
(type == CustomUploaderDestinationType.URLSharingService && !result.IsError && !string.IsNullOrEmpty(result.URL)))
|
2014-05-22 13:22:32 +12:00
|
|
|
|
{
|
2019-01-07 06:42:12 +13:00
|
|
|
|
if (!string.IsNullOrEmpty(result.ShortenedURL))
|
|
|
|
|
{
|
|
|
|
|
sbResult.AppendLine("Shortened URL: " + result.ShortenedURL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(result.URL))
|
|
|
|
|
{
|
|
|
|
|
sbResult.AppendLine("URL: " + result.URL);
|
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
2018-08-04 01:38:18 +12:00
|
|
|
|
if (!string.IsNullOrEmpty(result.ThumbnailURL))
|
2015-06-06 22:15:54 +12:00
|
|
|
|
{
|
2019-01-07 06:42:12 +13:00
|
|
|
|
sbResult.AppendLine("Thumbnail URL: " + result.ThumbnailURL);
|
2015-06-06 22:15:54 +12:00
|
|
|
|
}
|
2018-08-04 01:38:18 +12:00
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(result.DeletionURL))
|
2015-06-06 22:15:54 +12:00
|
|
|
|
{
|
2019-01-07 06:42:12 +13:00
|
|
|
|
sbResult.AppendLine("Deletion URL: " + result.DeletionURL);
|
2015-06-06 22:15:54 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
2018-08-04 01:38:18 +12:00
|
|
|
|
else if (result.IsError)
|
|
|
|
|
{
|
2019-01-07 06:42:12 +13:00
|
|
|
|
sbResult.AppendLine(Resources.UploadersConfigForm_Error + ": " + result.ErrorsToString());
|
2018-08-04 01:38:18 +12:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2019-01-07 06:42:12 +13:00
|
|
|
|
sbResult.AppendLine(Resources.UploadersConfigForm_TestCustomUploader_Error__Result_is_empty_);
|
2018-08-04 01:38:18 +12:00
|
|
|
|
}
|
|
|
|
|
|
2019-01-07 06:42:12 +13:00
|
|
|
|
rtbCustomUploaderResult.Text = sbResult.ToString();
|
2019-01-07 02:16:51 +13:00
|
|
|
|
txtCustomUploaderResponse.Text = result.Response;
|
2015-06-06 22:15:54 +12:00
|
|
|
|
|
2019-01-07 02:16:51 +13:00
|
|
|
|
tcCustomUploader.SelectedTab = tpCustomUploaderTest;
|
2015-06-06 22:15:54 +12:00
|
|
|
|
}
|
2018-08-04 01:38:18 +12:00
|
|
|
|
|
|
|
|
|
btnCustomUploaderImageUploaderTest.Enabled = btnCustomUploaderTextUploaderTest.Enabled = btnCustomUploaderFileUploaderTest.Enabled =
|
|
|
|
|
btnCustomUploaderURLShortenerTest.Enabled = btnCustomUploaderURLSharingServiceTest.Enabled = true;
|
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
2018-11-20 04:33:03 +13:00
|
|
|
|
private void CustomUploaderSyntaxHighlight(RichTextBox rtb)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(rtb.Text))
|
|
|
|
|
{
|
|
|
|
|
CustomUploaderParser parser = new CustomUploaderParser();
|
|
|
|
|
parser.SkipSyntaxParse = true;
|
|
|
|
|
parser.Parse(rtb.Text);
|
|
|
|
|
|
|
|
|
|
if (parser.SyntaxInfoList != null)
|
|
|
|
|
{
|
|
|
|
|
int start = rtb.SelectionStart;
|
|
|
|
|
int length = rtb.SelectionLength;
|
|
|
|
|
rtb.BeginUpdate();
|
|
|
|
|
|
|
|
|
|
rtb.SelectionStart = 0;
|
|
|
|
|
rtb.SelectionLength = rtb.TextLength;
|
|
|
|
|
rtb.SelectionColor = rtb.ForeColor;
|
|
|
|
|
|
|
|
|
|
foreach (CustomUploaderSyntaxInfo syntaxInfo in parser.SyntaxInfoList)
|
|
|
|
|
{
|
|
|
|
|
rtb.SelectionStart = syntaxInfo.StartPosition;
|
|
|
|
|
rtb.SelectionLength = syntaxInfo.Length;
|
|
|
|
|
rtb.SelectionColor = Color.Green;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rtb.SelectionStart = start;
|
|
|
|
|
rtb.SelectionLength = length;
|
|
|
|
|
rtb.EndUpdate();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-11-22 08:46:23 +13:00
|
|
|
|
private void CustomUploaderFormatJsonData(Formatting formatting)
|
2018-11-22 05:48:04 +13:00
|
|
|
|
{
|
|
|
|
|
string json = rtbCustomUploaderData.Text;
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(json))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
2019-01-10 05:08:55 +13:00
|
|
|
|
rtbCustomUploaderData.Text = Helpers.JSONFormat(json, formatting);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(e.Message, "ShareX - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CustomUploaderFormatXMLData()
|
|
|
|
|
{
|
|
|
|
|
string xml = rtbCustomUploaderData.Text;
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(xml))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
rtbCustomUploaderData.Text = Helpers.XMLFormat(xml);
|
2018-11-22 05:48:04 +13:00
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(e.Message, "ShareX - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2013-11-03 23:53:49 +13:00
|
|
|
|
#endregion Custom uploader
|
|
|
|
|
|
|
|
|
|
#region Jira
|
|
|
|
|
|
|
|
|
|
public void JiraAuthOpen()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
OAuthInfo oauth = new OAuthInfo(APIKeys.JiraConsumerKey);
|
|
|
|
|
oauth.SignatureMethod = OAuthInfo.OAuthInfoSignatureMethod.RSA_SHA1;
|
|
|
|
|
oauth.ConsumerPrivateKey = Jira.PrivateKey;
|
|
|
|
|
|
|
|
|
|
string url = new Jira(Config.JiraHost, oauth).GetAuthorizationURL();
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(url))
|
|
|
|
|
{
|
|
|
|
|
Config.JiraOAuthInfo = oauth;
|
2014-06-28 12:22:56 +12:00
|
|
|
|
URLHelpers.OpenURL(url);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void JiraAuthComplete(string code)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
2014-05-30 23:38:23 +12:00
|
|
|
|
if (!string.IsNullOrEmpty(code) && Config.JiraOAuthInfo != null && !string.IsNullOrEmpty(Config.JiraOAuthInfo.AuthToken) && !string.IsNullOrEmpty(Config.JiraOAuthInfo.AuthSecret))
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
Jira jira = new Jira(Config.JiraHost, Config.JiraOAuthInfo);
|
|
|
|
|
bool result = jira.GetAccessToken(code);
|
|
|
|
|
|
|
|
|
|
if (result)
|
|
|
|
|
{
|
2014-06-17 00:20:06 +12:00
|
|
|
|
oAuthJira.Status = OAuthLoginStatus.LoginSuccessful;
|
2014-10-18 01:19:28 +13:00
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_successful, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2014-06-17 00:20:06 +12:00
|
|
|
|
oAuthJira.Status = OAuthLoginStatus.LoginFailed;
|
2014-10-18 01:19:28 +13:00
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_failed, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2017-04-22 08:42:52 +12:00
|
|
|
|
ex.ShowError();
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Jira
|
2013-12-03 12:11:30 +13:00
|
|
|
|
|
2018-04-22 21:10:23 +12:00
|
|
|
|
#region Shared folder
|
|
|
|
|
|
|
|
|
|
private void SharedFolderUpdateControls()
|
|
|
|
|
{
|
|
|
|
|
int selected = lbSharedFolderAccounts.SelectedIndex;
|
|
|
|
|
|
|
|
|
|
lbSharedFolderAccounts.Items.Clear();
|
|
|
|
|
cboSharedFolderImages.Items.Clear();
|
|
|
|
|
cboSharedFolderText.Items.Clear();
|
|
|
|
|
cboSharedFolderFiles.Items.Clear();
|
|
|
|
|
|
|
|
|
|
if (Config.LocalhostAccountList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (LocalhostAccount account in Config.LocalhostAccountList)
|
|
|
|
|
{
|
|
|
|
|
lbSharedFolderAccounts.Items.Add(account);
|
|
|
|
|
cboSharedFolderImages.Items.Add(account);
|
|
|
|
|
cboSharedFolderText.Items.Add(account);
|
|
|
|
|
cboSharedFolderFiles.Items.Add(account);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
lbSharedFolderAccounts.SelectedIndex = selected.Between(0, Config.LocalhostAccountList.Count - 1);
|
|
|
|
|
cboSharedFolderImages.SelectedIndex = Config.LocalhostSelectedImages.Between(0, Config.LocalhostAccountList.Count - 1);
|
|
|
|
|
cboSharedFolderText.SelectedIndex = Config.LocalhostSelectedText.Between(0, Config.LocalhostAccountList.Count - 1);
|
|
|
|
|
cboSharedFolderFiles.SelectedIndex = Config.LocalhostSelectedFiles.Between(0, Config.LocalhostAccountList.Count - 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SharedFolderUpdateEnabledStates();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SharedFolderUpdateEnabledStates()
|
|
|
|
|
{
|
|
|
|
|
cboSharedFolderImages.Enabled = cboSharedFolderText.Enabled = cboSharedFolderFiles.Enabled = Config.LocalhostAccountList.Count > 0;
|
|
|
|
|
btnSharedFolderRemove.Enabled = btnSharedFolderDuplicate.Enabled = lbSharedFolderAccounts.SelectedIndex > -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SharedFolderAddItem(LocalhostAccount account)
|
|
|
|
|
{
|
|
|
|
|
Config.LocalhostAccountList.Add(account);
|
|
|
|
|
lbSharedFolderAccounts.Items.Add(account);
|
|
|
|
|
lbSharedFolderAccounts.SelectedIndex = lbSharedFolderAccounts.Items.Count - 1;
|
|
|
|
|
SharedFolderUpdateControls();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool SharedFolderRemoveItem(int index)
|
|
|
|
|
{
|
|
|
|
|
if (index.IsBetween(0, lbSharedFolderAccounts.Items.Count - 1))
|
|
|
|
|
{
|
|
|
|
|
Config.LocalhostAccountList.RemoveAt(index);
|
|
|
|
|
lbSharedFolderAccounts.Items.RemoveAt(index);
|
|
|
|
|
|
|
|
|
|
if (lbSharedFolderAccounts.Items.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
lbSharedFolderAccounts.SelectedIndex = index == lbSharedFolderAccounts.Items.Count ? lbSharedFolderAccounts.Items.Count - 1 : index;
|
|
|
|
|
pgSharedFolderAccount.SelectedObject = lbSharedFolderAccounts.Items[lbSharedFolderAccounts.SelectedIndex];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
pgSharedFolderAccount.SelectedObject = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SharedFolderUpdateControls();
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Shared folder
|
2018-05-16 21:40:15 +12:00
|
|
|
|
|
|
|
|
|
#region Generic OAuth2
|
|
|
|
|
|
2018-05-17 13:14:17 +12:00
|
|
|
|
private OAuth2Info OAuth2Open(IOAuth2Basic uploader)
|
2018-05-16 21:40:15 +12:00
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string url = uploader.GetAuthorizationURL();
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(url))
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL(url);
|
|
|
|
|
DebugHelper.WriteLine(uploader.ToString() + " - Authorization URL is opened: " + url);
|
|
|
|
|
return uploader.AuthInfo;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
DebugHelper.WriteLine(uploader.ToString() + " - Authorization URL is empty.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
ex.ShowError();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
2018-05-17 13:14:17 +12:00
|
|
|
|
private bool OAuth2Complete(IOAuth2Basic uploader, string code, OAuthControl control)
|
2018-05-16 21:40:15 +12:00
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(code) && uploader.AuthInfo != null)
|
|
|
|
|
{
|
|
|
|
|
bool result = uploader.GetAccessToken(code);
|
|
|
|
|
ConfigureOAuthStatus(control, result);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
ex.ShowError();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool OAuth2Refresh(IOAuth2 uploader, OAuthControl oauth2)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (OAuth2Info.CheckOAuth(uploader.AuthInfo))
|
|
|
|
|
{
|
|
|
|
|
bool result = uploader.RefreshAccessToken();
|
|
|
|
|
ConfigureOAuthStatus(oauth2, result);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
ex.ShowError();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ConfigureOAuthStatus(OAuthControl oauth2, bool result)
|
|
|
|
|
{
|
|
|
|
|
if (result)
|
|
|
|
|
{
|
|
|
|
|
oauth2.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_successful, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
oauth2.Status = OAuthLoginStatus.LoginFailed;
|
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_failed, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Generic OAuth2
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|