mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 09:47:22 +13:00
All file uploaders using FileUploaderService now
This commit is contained in:
parent
72627c0ba6
commit
b4b7d3160c
30 changed files with 557 additions and 271 deletions
|
@ -39,6 +39,23 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class AmazonS3FileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.AmazonS3;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.AmazonS3Settings != null && !string.IsNullOrEmpty(uploadersConfig.AmazonS3Settings.AccessKeyID) &&
|
||||
!string.IsNullOrEmpty(uploadersConfig.AmazonS3Settings.SecretAccessKey) && !string.IsNullOrEmpty(uploadersConfig.AmazonS3Settings.Bucket) &&
|
||||
AmazonS3.GetCurrentRegion(uploadersConfig.AmazonS3Settings) != AmazonS3.UnknownEndpoint;
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new AmazonS3(uploadersConfig.AmazonS3Settings);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class AmazonS3 : FileUploader
|
||||
{
|
||||
public static readonly AmazonS3Region UnknownEndpoint = new AmazonS3Region("Unknown Endpoint");
|
||||
|
|
|
@ -31,6 +31,25 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class BoxFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Box;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return OAuth2Info.CheckOAuth(uploadersConfig.BoxOAuth2Info);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Box(uploadersConfig.BoxOAuth2Info)
|
||||
{
|
||||
FolderID = uploadersConfig.BoxSelectedFolder.id,
|
||||
Share = uploadersConfig.BoxShare
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Box : FileUploader, IOAuth2
|
||||
{
|
||||
public static BoxFileEntry RootFolder = new BoxFileEntry
|
||||
|
|
|
@ -23,11 +23,35 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
#endregion License Information (GPL v3)
|
||||
|
||||
using ShareX.HelpersLib;
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class CustomFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.CustomFileUploader;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.CustomUploadersList != null && uploadersConfig.CustomUploadersList.IsValidIndex(uploadersConfig.CustomFileUploaderSelected);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
// TODO: Check TaskSettings override index (WorkerTask.GetCustomUploader)
|
||||
CustomUploaderItem customUploader = uploadersConfig.CustomUploadersList.ReturnIfValidIndex(uploadersConfig.CustomFileUploaderSelected);
|
||||
|
||||
if (customUploader != null)
|
||||
{
|
||||
return new CustomFileUploader(customUploader);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class CustomFileUploader : FileUploader
|
||||
{
|
||||
private CustomUploaderItem customUploader;
|
||||
|
|
|
@ -28,6 +28,18 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class DropfileFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Dropfile;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Dropfile();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Dropfile : FileUploader
|
||||
{
|
||||
public override UploadResult Upload(Stream stream, string fileName)
|
||||
|
|
|
@ -26,9 +26,50 @@ You should have received a copy of the GNU General Public License
|
|||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Net.Mail;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class EmailFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Email;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return !string.IsNullOrEmpty(uploadersConfig.EmailSmtpServer) && uploadersConfig.EmailSmtpPort > 0 && !string.IsNullOrEmpty(uploadersConfig.EmailFrom) &&
|
||||
!string.IsNullOrEmpty(uploadersConfig.EmailPassword);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
// TODO: Test lack of StopRequested = true;
|
||||
using (EmailForm emailForm = new EmailForm(uploadersConfig.EmailRememberLastTo ? uploadersConfig.EmailLastTo : string.Empty,
|
||||
uploadersConfig.EmailDefaultSubject, uploadersConfig.EmailDefaultBody))
|
||||
{
|
||||
if (emailForm.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
if (uploadersConfig.EmailRememberLastTo)
|
||||
{
|
||||
uploadersConfig.EmailLastTo = emailForm.ToEmail;
|
||||
}
|
||||
|
||||
return new Email
|
||||
{
|
||||
SmtpServer = uploadersConfig.EmailSmtpServer,
|
||||
SmtpPort = uploadersConfig.EmailSmtpPort,
|
||||
FromEmail = uploadersConfig.EmailFrom,
|
||||
Password = uploadersConfig.EmailPassword,
|
||||
ToEmail = emailForm.ToEmail,
|
||||
Subject = emailForm.Subject,
|
||||
Body = emailForm.Body
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public class Email : FileUploader
|
||||
{
|
||||
public string SmtpServer { get; set; }
|
||||
|
|
|
@ -36,6 +36,38 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class FTPFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.FTP;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.FTPAccountList != null && uploadersConfig.FTPAccountList.IsValidIndex(uploadersConfig.FTPSelectedFile);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
// TODO: Check TaskSettings override index (WorkerTask.GetFTPAccount)
|
||||
// TODO: Unable to reach Info.DataType
|
||||
int index = uploadersConfig.GetFTPIndex(EDataType.File);
|
||||
FTPAccount account = uploadersConfig.FTPAccountList.ReturnIfValidIndex(index);
|
||||
|
||||
if (account != null)
|
||||
{
|
||||
if (account.Protocol == FTPProtocol.FTP || account.Protocol == FTPProtocol.FTPS)
|
||||
{
|
||||
return new FTP(account);
|
||||
}
|
||||
else if (account.Protocol == FTPProtocol.SFTP)
|
||||
{
|
||||
return new SFTP(account);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class FTP : FileUploader, IDisposable
|
||||
{
|
||||
public FTPAccount Account { get; private set; }
|
||||
|
|
|
@ -29,6 +29,24 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class Ge_ttFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Ge_tt;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.Ge_ttLogin != null && !string.IsNullOrEmpty(uploadersConfig.Ge_ttLogin.AccessToken);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Ge_tt(APIKeys.Ge_ttKey)
|
||||
{
|
||||
AccessToken = uploadersConfig.Ge_ttLogin.AccessToken
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Ge_tt : FileUploader
|
||||
{
|
||||
public string APIKey { get; private set; }
|
||||
|
|
|
@ -34,6 +34,18 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class GfycatFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Gfycat;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new GfycatUploader();
|
||||
}
|
||||
}
|
||||
|
||||
public class GfycatUploader : FileUploader
|
||||
{
|
||||
public bool NoResize { get; set; }
|
||||
|
|
|
@ -31,6 +31,25 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class GoogleDriveFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.GoogleDrive;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return OAuth2Info.CheckOAuth(uploadersConfig.GoogleDriveOAuth2Info);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new GoogleDrive(uploadersConfig.GoogleDriveOAuth2Info)
|
||||
{
|
||||
IsPublic = uploadersConfig.GoogleDriveIsPublic,
|
||||
FolderID = uploadersConfig.GoogleDriveUseFolder ? uploadersConfig.GoogleDriveFolderID : null
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class GoogleDrive : FileUploader, IOAuth2
|
||||
{
|
||||
public OAuth2Info AuthInfo { get; set; }
|
||||
|
|
|
@ -29,6 +29,24 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class HostrFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Localhostr;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return !string.IsNullOrEmpty(uploadersConfig.LocalhostrEmail) && !string.IsNullOrEmpty(uploadersConfig.LocalhostrPassword);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Hostr(uploadersConfig.LocalhostrEmail, uploadersConfig.LocalhostrPassword)
|
||||
{
|
||||
DirectURL = uploadersConfig.LocalhostrDirectURL
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Hostr : FileUploader
|
||||
{
|
||||
public string Email { get; set; }
|
||||
|
|
|
@ -39,6 +39,21 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class JiraFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Jira;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return OAuthInfo.CheckOAuth(uploadersConfig.JiraOAuthInfo);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Jira(uploadersConfig.JiraHost, uploadersConfig.JiraOAuthInfo, uploadersConfig.JiraIssuePrefix);
|
||||
}
|
||||
}
|
||||
|
||||
public class Jira : FileUploader, IOAuth
|
||||
{
|
||||
private const string PathRequestToken = "/plugins/servlet/oauth/request-token";
|
||||
|
|
|
@ -31,6 +31,21 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class LambdaFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Lambda;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.LambdaSettings != null && !string.IsNullOrEmpty(uploadersConfig.LambdaSettings.UserAPIKey);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Lambda(uploadersConfig.LambdaSettings);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Lambda : FileUploader
|
||||
{
|
||||
public LambdaSettings Config { get; private set; }
|
||||
|
|
|
@ -37,6 +37,25 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class MediaFireFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.MediaFire;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return !string.IsNullOrEmpty(uploadersConfig.MediaFireUsername) && !string.IsNullOrEmpty(uploadersConfig.MediaFirePassword);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new MediaFire(APIKeys.MediaFireAppId, APIKeys.MediaFireApiKey, uploadersConfig.MediaFireUsername, uploadersConfig.MediaFirePassword)
|
||||
{
|
||||
UploadPath = NameParser.Parse(NameParserType.URL, uploadersConfig.MediaFirePath),
|
||||
UseLongLink = uploadersConfig.MediaFireUseLongLink
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class MediaFire : FileUploader
|
||||
{
|
||||
private static readonly string _apiUrl = "https://www.mediafire.com/api/";
|
||||
|
|
|
@ -33,6 +33,22 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class MegaFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Mega;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.MegaAuthInfos != null && uploadersConfig.MegaAuthInfos.Email != null && uploadersConfig.MegaAuthInfos.Hash != null &&
|
||||
uploadersConfig.MegaAuthInfos.PasswordAesKey != null;
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Mega(uploadersConfig.MegaAuthInfos, uploadersConfig.MegaParentNodeId);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Mega : FileUploader, IWebClient
|
||||
{
|
||||
private readonly MegaApiClient _megaClient;
|
||||
|
|
|
@ -32,6 +32,21 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class MinusFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Minus;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.MinusConfig != null && uploadersConfig.MinusConfig.MinusUser != null;
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Minus(uploadersConfig.MinusConfig, uploadersConfig.MinusOAuth2Info);
|
||||
}
|
||||
}
|
||||
|
||||
public class Minus : FileUploader
|
||||
{
|
||||
private const string URL_HOST = "https://minus.com";
|
||||
|
|
|
@ -33,6 +33,25 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class OneDriveFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.OneDrive;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return OAuth2Info.CheckOAuth(uploadersConfig.OneDriveOAuth2Info);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new OneDrive(uploadersConfig.OneDriveOAuth2Info)
|
||||
{
|
||||
FolderID = uploadersConfig.OneDriveSelectedFolder.id,
|
||||
AutoCreateShareableLink = uploadersConfig.OneDriveAutoCreateShareableLink
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class OneDrive : FileUploader, IOAuth2
|
||||
{
|
||||
public OAuth2Info AuthInfo { get; set; }
|
||||
|
|
|
@ -31,6 +31,24 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class OpenloadFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Openload;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new OpenloadUploader()
|
||||
{
|
||||
APILogin = uploadersConfig.OpenloadAPILogin,
|
||||
APIKey = uploadersConfig.OpenloadAPIKey,
|
||||
UploadToFolder = uploadersConfig.OpenloadUploadToSelectedFolder,
|
||||
FolderID = uploadersConfig.OpenloadSelectedFolderID
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class OpenloadUploader : FileUploader
|
||||
{
|
||||
public string APILogin { get; set; }
|
||||
|
|
|
@ -34,6 +34,28 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class OwnCloudFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.OwnCloud;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return !string.IsNullOrEmpty(uploadersConfig.OwnCloudHost) && !string.IsNullOrEmpty(uploadersConfig.OwnCloudUsername) && !string.IsNullOrEmpty(uploadersConfig.OwnCloudPassword);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new OwnCloud(uploadersConfig.OwnCloudHost, uploadersConfig.OwnCloudUsername, uploadersConfig.OwnCloudPassword)
|
||||
{
|
||||
Path = uploadersConfig.OwnCloudPath,
|
||||
CreateShare = uploadersConfig.OwnCloudCreateShare,
|
||||
DirectLink = uploadersConfig.OwnCloudDirectLink,
|
||||
IgnoreInvalidCert = uploadersConfig.OwnCloudIgnoreInvalidCert,
|
||||
IsCompatibility81 = uploadersConfig.OwnCloud81Compatibility
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class OwnCloud : FileUploader
|
||||
{
|
||||
public string Host { get; set; }
|
||||
|
|
|
@ -36,6 +36,21 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class PomfFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Pomf;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.PomfUploader != null && !string.IsNullOrEmpty(uploadersConfig.PomfUploader.UploadURL);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Pomf(uploadersConfig.PomfUploader);
|
||||
}
|
||||
}
|
||||
|
||||
public class Pomf : FileUploader
|
||||
{
|
||||
// Pomf clones: https://docs.google.com/spreadsheets/d/1kh1TZdtyX7UlRd55OBxf7DB-JGj2rsfWckI0FPQRYhE
|
||||
|
|
|
@ -24,7 +24,6 @@ You should have received a copy of the GNU General Public License
|
|||
#endregion License Information (GPL v3)
|
||||
|
||||
// Credits: https://github.com/BallisticLingonberries
|
||||
// API Information: https://docs.pushbullet.com/http/
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using ShareX.HelpersLib;
|
||||
|
@ -36,6 +35,22 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class PushbulletFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Pushbullet;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.PushbulletSettings != null && !string.IsNullOrEmpty(uploadersConfig.PushbulletSettings.UserAPIKey) &&
|
||||
uploadersConfig.PushbulletSettings.DeviceList != null && uploadersConfig.PushbulletSettings.DeviceList.IsValidIndex(uploadersConfig.PushbulletSettings.SelectedDevice);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Pushbullet(uploadersConfig.PushbulletSettings);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Pushbullet : FileUploader
|
||||
{
|
||||
public PushbulletSettings Config { get; private set; }
|
||||
|
|
|
@ -35,6 +35,30 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class SeafileFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Seafile;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return !string.IsNullOrEmpty(uploadersConfig.SeafileAPIURL) && !string.IsNullOrEmpty(uploadersConfig.SeafileAuthToken) && !string.IsNullOrEmpty(uploadersConfig.SeafileRepoID);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Seafile(uploadersConfig.SeafileAPIURL, uploadersConfig.SeafileAuthToken, uploadersConfig.SeafileRepoID)
|
||||
{
|
||||
Path = uploadersConfig.SeafilePath,
|
||||
IsLibraryEncrypted = uploadersConfig.SeafileIsLibraryEncrypted,
|
||||
EncryptedLibraryPassword = uploadersConfig.SeafileEncryptedLibraryPassword,
|
||||
ShareDaysToExpire = uploadersConfig.SeafileShareDaysToExpire,
|
||||
SharePassword = uploadersConfig.SeafileSharePassword,
|
||||
CreateShareableURL = uploadersConfig.SeafileCreateShareableURL,
|
||||
IgnoreInvalidCert = uploadersConfig.SeafileIgnoreInvalidCert
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Seafile : FileUploader
|
||||
{
|
||||
public string APIURL { get; set; }
|
||||
|
|
|
@ -34,6 +34,27 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class SendSpaceFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.SendSpace;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.SendSpaceAccountType == AccountType.Anonymous ||
|
||||
(!string.IsNullOrEmpty(uploadersConfig.SendSpaceUsername) && !string.IsNullOrEmpty(uploadersConfig.SendSpacePassword));
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new SendSpace(APIKeys.SendSpaceKey)
|
||||
{
|
||||
AccountType = uploadersConfig.SendSpaceAccountType,
|
||||
Username = uploadersConfig.SendSpaceUsername,
|
||||
Password = uploadersConfig.SendSpacePassword
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class SendSpace : FileUploader
|
||||
{
|
||||
private string APIKey;
|
||||
|
@ -41,6 +62,10 @@ public sealed class SendSpace : FileUploader
|
|||
private const string APIURL = "http://api.sendspace.com/rest/";
|
||||
private const string APIVersion = "1.0";
|
||||
|
||||
public AccountType AccountType { get; set; }
|
||||
public string Username { get; set; }
|
||||
public string Password { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Upload speed limit in kilobytes, 0 for unlimited
|
||||
/// </summary>
|
||||
|
@ -53,6 +78,20 @@ public SendSpace(string apiKey)
|
|||
APIKey = apiKey;
|
||||
}
|
||||
|
||||
public override UploadResult Upload(Stream stream, string fileName)
|
||||
{
|
||||
if (AccountType == AccountType.User)
|
||||
{
|
||||
SendSpaceManager.PrepareUploadInfo(APIKey, Username, Password);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendSpaceManager.PrepareUploadInfo(APIKey);
|
||||
}
|
||||
|
||||
return Upload(stream, fileName, SendSpaceManager.UploadInfo);
|
||||
}
|
||||
|
||||
#region Helpers
|
||||
|
||||
public class ResponsePacket
|
||||
|
@ -482,11 +521,6 @@ public UploadResult Upload(Stream stream, string fileName, UploadInfo uploadInfo
|
|||
return result;
|
||||
}
|
||||
|
||||
public override UploadResult Upload(Stream stream, string fileName)
|
||||
{
|
||||
return Upload(stream, fileName, SendSpaceManager.UploadInfo);
|
||||
}
|
||||
|
||||
public class CheckProgress : IDisposable
|
||||
{
|
||||
private SendSpace sendSpace;
|
||||
|
|
|
@ -28,6 +28,32 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class SharedFolderFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.SharedFolder;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.LocalhostAccountList != null && uploadersConfig.LocalhostAccountList.IsValidIndex(uploadersConfig.LocalhostSelectedFiles);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
// TODO: Check TaskSettings override index (WorkerTask.GetFTPAccount)
|
||||
// TODO: Unable to reach Info.DataType
|
||||
int index = uploadersConfig.GetLocalhostIndex(EDataType.File);
|
||||
|
||||
LocalhostAccount account = uploadersConfig.LocalhostAccountList.ReturnIfValidIndex(index);
|
||||
|
||||
if (account != null)
|
||||
{
|
||||
return new SharedFolderUploader(account);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public class SharedFolderUploader : FileUploader
|
||||
{
|
||||
private LocalhostAccount account;
|
||||
|
|
|
@ -32,6 +32,27 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class StreamableFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Streamable;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
string username = "";
|
||||
string password = "";
|
||||
|
||||
if (!uploadersConfig.StreamableAnonymous)
|
||||
{
|
||||
username = uploadersConfig.StreamableUsername;
|
||||
password = uploadersConfig.StreamablePassword;
|
||||
}
|
||||
|
||||
return new Streamable(username, password);
|
||||
}
|
||||
}
|
||||
|
||||
public class Streamable : FileUploader
|
||||
{
|
||||
private const string Host = "https://api.streamable.com";
|
||||
|
|
|
@ -32,6 +32,21 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class SulFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Sul;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return !string.IsNullOrEmpty(uploadersConfig.SulAPIKey);
|
||||
}
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new SulUploader(uploadersConfig.SulAPIKey);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class SulUploader : FileUploader
|
||||
{
|
||||
private string APIKey { get; set; }
|
||||
|
|
|
@ -28,6 +28,18 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class UguuFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Uguu;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Uguu();
|
||||
}
|
||||
}
|
||||
|
||||
public class Uguu : FileUploader
|
||||
{
|
||||
public bool RandomName { get; set; }
|
||||
|
|
|
@ -37,18 +37,30 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
/*
|
||||
* Up1 is an encrypted image uploader. The idea is that any URL (for example, https://up1.ca/#hsd2mdSuIkzTUR6saZpn1Q) contains
|
||||
* what is called a "seed". In this case, the seed is "hsd2mdSuIkzTUR6saZpn1Q". With this, we use sha512(seed) (output 64 bytes)
|
||||
* in order to derive an AES key (32 bytes), a CCM IV (16 bytes), and a server-side identifier (16 bytes). These are used to
|
||||
* encrypt and store the data.
|
||||
*
|
||||
* Within the encrypted blob, There is a double-null-terminated UTF-16 JSON object that contains metadata like the filename and mimetype.
|
||||
* This is prepended to the image data.
|
||||
*/
|
||||
public class Up1FileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.Up1;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new Up1(uploadersConfig.Up1Host, uploadersConfig.Up1Key);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Up1 : FileUploader
|
||||
{
|
||||
/*
|
||||
* Up1 is an encrypted image uploader. The idea is that any URL (for example, https://up1.ca/#hsd2mdSuIkzTUR6saZpn1Q) contains
|
||||
* what is called a "seed". In this case, the seed is "hsd2mdSuIkzTUR6saZpn1Q". With this, we use sha512(seed) (output 64 bytes)
|
||||
* in order to derive an AES key (32 bytes), a CCM IV (16 bytes), and a server-side identifier (16 bytes). These are used to
|
||||
* encrypt and store the data.
|
||||
*
|
||||
* Within the encrypted blob, There is a double-null-terminated UTF-16 JSON object that contains metadata like the filename and mimetype.
|
||||
* This is prepended to the image data.
|
||||
*/
|
||||
|
||||
private const int MacSize = 64;
|
||||
|
||||
public string SystemUrl { get; set; }
|
||||
|
|
|
@ -30,6 +30,18 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.FileUploaders
|
||||
{
|
||||
public class VideoBinFileUploaderService : FileUploaderService
|
||||
{
|
||||
public override FileDestination EnumValue { get; } = FileDestination.VideoBin;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override FileUploader CreateUploader(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new VideoBin();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class VideoBin : FileUploader
|
||||
{
|
||||
private const string URLUpload = "https://videobin.org/add";
|
||||
|
|
|
@ -420,54 +420,6 @@ public bool IsValid(FileDestination destination)
|
|||
return service.CheckConfig(this);
|
||||
}
|
||||
|
||||
switch (destination)
|
||||
{
|
||||
case FileDestination.FTP:
|
||||
return FTPAccountList != null && FTPAccountList.IsValidIndex(FTPSelectedFile);
|
||||
case FileDestination.OneDrive:
|
||||
return OAuth2Info.CheckOAuth(OneDriveOAuth2Info);
|
||||
case FileDestination.GoogleDrive:
|
||||
return OAuth2Info.CheckOAuth(GoogleDriveOAuth2Info);
|
||||
case FileDestination.Box:
|
||||
return OAuth2Info.CheckOAuth(BoxOAuth2Info);
|
||||
case FileDestination.Mega:
|
||||
return MegaAuthInfos != null && MegaAuthInfos.Email != null && MegaAuthInfos.Hash != null && MegaAuthInfos.PasswordAesKey != null;
|
||||
case FileDestination.AmazonS3:
|
||||
return AmazonS3Settings != null && !string.IsNullOrEmpty(AmazonS3Settings.AccessKeyID) && !string.IsNullOrEmpty(AmazonS3Settings.SecretAccessKey) &&
|
||||
!string.IsNullOrEmpty(AmazonS3Settings.Bucket) && AmazonS3.GetCurrentRegion(AmazonS3Settings) != AmazonS3.UnknownEndpoint;
|
||||
case FileDestination.OwnCloud:
|
||||
return !string.IsNullOrEmpty(OwnCloudHost) && !string.IsNullOrEmpty(OwnCloudUsername) && !string.IsNullOrEmpty(OwnCloudPassword);
|
||||
case FileDestination.MediaFire:
|
||||
return !string.IsNullOrEmpty(MediaFireUsername) && !string.IsNullOrEmpty(MediaFirePassword);
|
||||
case FileDestination.Pushbullet:
|
||||
return PushbulletSettings != null && !string.IsNullOrEmpty(PushbulletSettings.UserAPIKey) && PushbulletSettings.DeviceList != null &&
|
||||
PushbulletSettings.DeviceList.IsValidIndex(PushbulletSettings.SelectedDevice);
|
||||
case FileDestination.SendSpace:
|
||||
return SendSpaceAccountType == AccountType.Anonymous || (!string.IsNullOrEmpty(SendSpaceUsername) && !string.IsNullOrEmpty(SendSpacePassword));
|
||||
case FileDestination.Minus:
|
||||
return MinusConfig != null && MinusConfig.MinusUser != null;
|
||||
case FileDestination.Ge_tt:
|
||||
return Ge_ttLogin != null && !string.IsNullOrEmpty(Ge_ttLogin.AccessToken);
|
||||
case FileDestination.Localhostr:
|
||||
return !string.IsNullOrEmpty(LocalhostrEmail) && !string.IsNullOrEmpty(LocalhostrPassword);
|
||||
case FileDestination.Jira:
|
||||
return OAuthInfo.CheckOAuth(JiraOAuthInfo);
|
||||
case FileDestination.Lambda:
|
||||
return LambdaSettings != null && !string.IsNullOrEmpty(LambdaSettings.UserAPIKey);
|
||||
case FileDestination.Pomf:
|
||||
return PomfUploader != null && !string.IsNullOrEmpty(PomfUploader.UploadURL);
|
||||
case FileDestination.Sul:
|
||||
return !string.IsNullOrEmpty(SulAPIKey);
|
||||
case FileDestination.Seafile:
|
||||
return !string.IsNullOrEmpty(SeafileAPIURL) && !string.IsNullOrEmpty(SeafileAuthToken) && !string.IsNullOrEmpty(SeafileRepoID);
|
||||
case FileDestination.SharedFolder:
|
||||
return LocalhostAccountList != null && LocalhostAccountList.IsValidIndex(LocalhostSelectedFiles);
|
||||
case FileDestination.Email:
|
||||
return !string.IsNullOrEmpty(EmailSmtpServer) && EmailSmtpPort > 0 && !string.IsNullOrEmpty(EmailFrom) && !string.IsNullOrEmpty(EmailPassword);
|
||||
case FileDestination.CustomFileUploader:
|
||||
return CustomUploadersList != null && CustomUploadersList.IsValidIndex(CustomFileUploaderSelected);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -846,8 +846,6 @@ public UploadResult UploadText(Stream stream, string fileName)
|
|||
|
||||
public UploadResult UploadFile(Stream stream, string fileName)
|
||||
{
|
||||
FileUploader fileUploader = null;
|
||||
|
||||
FileDestination fileDestination;
|
||||
|
||||
switch (Info.DataType)
|
||||
|
@ -868,217 +866,16 @@ public UploadResult UploadFile(Stream stream, string fileName)
|
|||
|
||||
if (service != null)
|
||||
{
|
||||
fileUploader = service.CreateUploader(Program.UploadersConfig);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (fileDestination)
|
||||
FileUploader fileUploader = service.CreateUploader(Program.UploadersConfig);
|
||||
|
||||
if (fileUploader != null)
|
||||
{
|
||||
case FileDestination.OneDrive:
|
||||
fileUploader = new OneDrive(Program.UploadersConfig.OneDriveOAuth2Info)
|
||||
{
|
||||
FolderID = Program.UploadersConfig.OneDriveSelectedFolder.id,
|
||||
AutoCreateShareableLink = Program.UploadersConfig.OneDriveAutoCreateShareableLink
|
||||
};
|
||||
break;
|
||||
case FileDestination.GoogleDrive:
|
||||
fileUploader = new GoogleDrive(Program.UploadersConfig.GoogleDriveOAuth2Info)
|
||||
{
|
||||
IsPublic = Program.UploadersConfig.GoogleDriveIsPublic,
|
||||
FolderID = Program.UploadersConfig.GoogleDriveUseFolder ? Program.UploadersConfig.GoogleDriveFolderID : null
|
||||
};
|
||||
break;
|
||||
/*case FileDestination.Hubic:
|
||||
fileUploader = new Hubic(Program.UploadersConfig.HubicOAuth2Info, Program.UploadersConfig.HubicOpenstackAuthInfo)
|
||||
{
|
||||
SelectedFolder = Program.UploadersConfig.HubicSelectedFolder,
|
||||
Publish = Program.UploadersConfig.HubicPublish
|
||||
};
|
||||
break;*/
|
||||
case FileDestination.SendSpace:
|
||||
fileUploader = new SendSpace(APIKeys.SendSpaceKey);
|
||||
switch (Program.UploadersConfig.SendSpaceAccountType)
|
||||
{
|
||||
case AccountType.Anonymous:
|
||||
SendSpaceManager.PrepareUploadInfo(APIKeys.SendSpaceKey);
|
||||
break;
|
||||
case AccountType.User:
|
||||
SendSpaceManager.PrepareUploadInfo(APIKeys.SendSpaceKey, Program.UploadersConfig.SendSpaceUsername, Program.UploadersConfig.SendSpacePassword);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case FileDestination.Minus:
|
||||
fileUploader = new Minus(Program.UploadersConfig.MinusConfig, Program.UploadersConfig.MinusOAuth2Info);
|
||||
break;
|
||||
case FileDestination.Box:
|
||||
fileUploader = new Box(Program.UploadersConfig.BoxOAuth2Info)
|
||||
{
|
||||
FolderID = Program.UploadersConfig.BoxSelectedFolder.id,
|
||||
Share = Program.UploadersConfig.BoxShare
|
||||
};
|
||||
break;
|
||||
case FileDestination.Gfycat:
|
||||
fileUploader = new GfycatUploader();
|
||||
break;
|
||||
case FileDestination.Ge_tt:
|
||||
fileUploader = new Ge_tt(APIKeys.Ge_ttKey)
|
||||
{
|
||||
AccessToken = Program.UploadersConfig.Ge_ttLogin.AccessToken
|
||||
};
|
||||
break;
|
||||
case FileDestination.Localhostr:
|
||||
fileUploader = new Hostr(Program.UploadersConfig.LocalhostrEmail, Program.UploadersConfig.LocalhostrPassword)
|
||||
{
|
||||
DirectURL = Program.UploadersConfig.LocalhostrDirectURL
|
||||
};
|
||||
break;
|
||||
case FileDestination.CustomFileUploader:
|
||||
CustomUploaderItem customUploader = GetCustomUploader(Program.UploadersConfig.CustomFileUploaderSelected);
|
||||
if (customUploader != null)
|
||||
{
|
||||
fileUploader = new CustomFileUploader(customUploader);
|
||||
}
|
||||
break;
|
||||
case FileDestination.FTP:
|
||||
FTPAccount ftpAccount = GetFTPAccount(Program.UploadersConfig.GetFTPIndex(Info.DataType));
|
||||
if (ftpAccount != null)
|
||||
{
|
||||
if (ftpAccount.Protocol == FTPProtocol.FTP || ftpAccount.Protocol == FTPProtocol.FTPS)
|
||||
{
|
||||
fileUploader = new FTP(ftpAccount);
|
||||
}
|
||||
else if (ftpAccount.Protocol == FTPProtocol.SFTP)
|
||||
{
|
||||
fileUploader = new SFTP(ftpAccount);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FileDestination.SharedFolder:
|
||||
int idLocalhost = Program.UploadersConfig.GetLocalhostIndex(Info.DataType);
|
||||
if (Program.UploadersConfig.LocalhostAccountList.IsValidIndex(idLocalhost))
|
||||
{
|
||||
fileUploader = new SharedFolderUploader(Program.UploadersConfig.LocalhostAccountList[idLocalhost]);
|
||||
}
|
||||
break;
|
||||
case FileDestination.Email:
|
||||
using (EmailForm emailForm = new EmailForm(Program.UploadersConfig.EmailRememberLastTo ? Program.UploadersConfig.EmailLastTo : string.Empty,
|
||||
Program.UploadersConfig.EmailDefaultSubject, Program.UploadersConfig.EmailDefaultBody))
|
||||
{
|
||||
if (emailForm.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
if (Program.UploadersConfig.EmailRememberLastTo)
|
||||
{
|
||||
Program.UploadersConfig.EmailLastTo = emailForm.ToEmail;
|
||||
}
|
||||
PrepareUploader(fileUploader);
|
||||
|
||||
fileUploader = new Email
|
||||
{
|
||||
SmtpServer = Program.UploadersConfig.EmailSmtpServer,
|
||||
SmtpPort = Program.UploadersConfig.EmailSmtpPort,
|
||||
FromEmail = Program.UploadersConfig.EmailFrom,
|
||||
Password = Program.UploadersConfig.EmailPassword,
|
||||
ToEmail = emailForm.ToEmail,
|
||||
Subject = emailForm.Subject,
|
||||
Body = emailForm.Body
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
StopRequested = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FileDestination.Jira:
|
||||
fileUploader = new Jira(Program.UploadersConfig.JiraHost, Program.UploadersConfig.JiraOAuthInfo, Program.UploadersConfig.JiraIssuePrefix);
|
||||
break;
|
||||
case FileDestination.Mega:
|
||||
fileUploader = new Mega(Program.UploadersConfig.MegaAuthInfos, Program.UploadersConfig.MegaParentNodeId);
|
||||
break;
|
||||
case FileDestination.AmazonS3:
|
||||
fileUploader = new AmazonS3(Program.UploadersConfig.AmazonS3Settings);
|
||||
break;
|
||||
case FileDestination.OwnCloud:
|
||||
fileUploader = new OwnCloud(Program.UploadersConfig.OwnCloudHost, Program.UploadersConfig.OwnCloudUsername, Program.UploadersConfig.OwnCloudPassword)
|
||||
{
|
||||
Path = Program.UploadersConfig.OwnCloudPath,
|
||||
CreateShare = Program.UploadersConfig.OwnCloudCreateShare,
|
||||
DirectLink = Program.UploadersConfig.OwnCloudDirectLink,
|
||||
IgnoreInvalidCert = Program.UploadersConfig.OwnCloudIgnoreInvalidCert,
|
||||
IsCompatibility81 = Program.UploadersConfig.OwnCloud81Compatibility
|
||||
};
|
||||
break;
|
||||
case FileDestination.Pushbullet:
|
||||
fileUploader = new Pushbullet(Program.UploadersConfig.PushbulletSettings);
|
||||
break;
|
||||
case FileDestination.MediaFire:
|
||||
fileUploader = new MediaFire(APIKeys.MediaFireAppId, APIKeys.MediaFireApiKey, Program.UploadersConfig.MediaFireUsername, Program.UploadersConfig.MediaFirePassword)
|
||||
{
|
||||
UploadPath = NameParser.Parse(NameParserType.URL, Program.UploadersConfig.MediaFirePath),
|
||||
UseLongLink = Program.UploadersConfig.MediaFireUseLongLink
|
||||
};
|
||||
break;
|
||||
case FileDestination.Lambda:
|
||||
fileUploader = new Lambda(Program.UploadersConfig.LambdaSettings);
|
||||
break;
|
||||
case FileDestination.VideoBin:
|
||||
fileUploader = new VideoBin();
|
||||
break;
|
||||
case FileDestination.Pomf:
|
||||
fileUploader = new Pomf(Program.UploadersConfig.PomfUploader);
|
||||
break;
|
||||
case FileDestination.Uguu:
|
||||
fileUploader = new Uguu();
|
||||
break;
|
||||
case FileDestination.Dropfile:
|
||||
fileUploader = new Dropfile();
|
||||
break;
|
||||
case FileDestination.Up1:
|
||||
fileUploader = new Up1(Program.UploadersConfig.Up1Host, Program.UploadersConfig.Up1Key);
|
||||
break;
|
||||
case FileDestination.Sul:
|
||||
fileUploader = new SulUploader(Program.UploadersConfig.SulAPIKey);
|
||||
break;
|
||||
case FileDestination.Seafile:
|
||||
fileUploader = new Seafile(Program.UploadersConfig.SeafileAPIURL, Program.UploadersConfig.SeafileAuthToken, Program.UploadersConfig.SeafileRepoID)
|
||||
{
|
||||
Path = Program.UploadersConfig.SeafilePath,
|
||||
IsLibraryEncrypted = Program.UploadersConfig.SeafileIsLibraryEncrypted,
|
||||
EncryptedLibraryPassword = Program.UploadersConfig.SeafileEncryptedLibraryPassword,
|
||||
ShareDaysToExpire = Program.UploadersConfig.SeafileShareDaysToExpire,
|
||||
SharePassword = Program.UploadersConfig.SeafileSharePassword,
|
||||
CreateShareableURL = Program.UploadersConfig.SeafileCreateShareableURL,
|
||||
IgnoreInvalidCert = Program.UploadersConfig.SeafileIgnoreInvalidCert
|
||||
};
|
||||
break;
|
||||
case FileDestination.Streamable:
|
||||
string user = "";
|
||||
string password = "";
|
||||
if (!Program.UploadersConfig.StreamableAnonymous)
|
||||
{
|
||||
user = Program.UploadersConfig.StreamableUsername;
|
||||
password = Program.UploadersConfig.StreamablePassword;
|
||||
}
|
||||
|
||||
fileUploader = new Streamable(user, password);
|
||||
break;
|
||||
case FileDestination.Openload:
|
||||
fileUploader = new OpenloadUploader()
|
||||
{
|
||||
APILogin = Program.UploadersConfig.OpenloadAPILogin,
|
||||
APIKey = Program.UploadersConfig.OpenloadAPIKey,
|
||||
UploadToFolder = Program.UploadersConfig.OpenloadUploadToSelectedFolder,
|
||||
FolderID = Program.UploadersConfig.OpenloadSelectedFolderID
|
||||
};
|
||||
break;
|
||||
return fileUploader.Upload(stream, fileName);
|
||||
}
|
||||
}
|
||||
|
||||
if (fileUploader != null)
|
||||
{
|
||||
PrepareUploader(fileUploader);
|
||||
return fileUploader.Upload(stream, fileName);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue