mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 09:47:22 +13:00
All URL shorteners using URLShortenerService now
This commit is contained in:
parent
b4b7d3160c
commit
fdb5b84b85
15 changed files with 206 additions and 90 deletions
|
@ -29,6 +29,25 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class AdFlyURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.AdFly;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return !string.IsNullOrEmpty(uploadersConfig.AdFlyAPIKEY) && !string.IsNullOrEmpty(uploadersConfig.AdFlyAPIUID);
|
||||
}
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new AdFlyURLShortener
|
||||
{
|
||||
APIKEY = uploadersConfig.AdFlyAPIKEY,
|
||||
APIUID = uploadersConfig.AdFlyAPIUID
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public class AdFlyURLShortener : URLShortener
|
||||
{
|
||||
public string APIKEY { get; set; }
|
||||
|
|
|
@ -29,6 +29,24 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class CoinURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.CoinURL;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return !string.IsNullOrEmpty(uploadersConfig.CoinURLUUID);
|
||||
}
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new CoinURLShortener
|
||||
{
|
||||
UUID = uploadersConfig.CoinURLUUID
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class CoinURLShortener : URLShortener
|
||||
{
|
||||
private const string API_ENDPOINT = "https://coinurl.com/api.php";
|
||||
|
|
|
@ -23,12 +23,36 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
#endregion License Information (GPL v3)
|
||||
|
||||
using ShareX.HelpersLib;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class CustomURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.CustomURLShortener;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.CustomUploadersList != null && uploadersConfig.CustomUploadersList.IsValidIndex(uploadersConfig.CustomURLShortenerSelected);
|
||||
}
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
// TODO: Check TaskSettings override index (WorkerTask.GetCustomUploader)
|
||||
CustomUploaderItem customUploader = uploadersConfig.CustomUploadersList.ReturnIfValidIndex(uploadersConfig.CustomURLShortenerSelected);
|
||||
|
||||
if (customUploader != null)
|
||||
{
|
||||
return new CustomURLShortener(customUploader);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class CustomURLShortener : URLShortener
|
||||
{
|
||||
private CustomUploaderItem customUploader;
|
||||
|
|
|
@ -30,6 +30,21 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class GoogleURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.Google;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return uploadersConfig.GoogleURLShortenerAccountType == AccountType.Anonymous || OAuth2Info.CheckOAuth(uploadersConfig.GoogleURLShortenerOAuth2Info);
|
||||
}
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new GoogleURLShortener(uploadersConfig.GoogleURLShortenerAccountType, APIKeys.GoogleAPIKey, uploadersConfig.GoogleURLShortenerOAuth2Info);
|
||||
}
|
||||
}
|
||||
|
||||
public class GoogleURLShortener : URLShortener, IOAuth2
|
||||
{
|
||||
public AccountType UploadMethod { get; set; }
|
||||
|
|
|
@ -28,6 +28,18 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class IsgdURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.ISGD;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new IsgdURLShortener();
|
||||
}
|
||||
}
|
||||
|
||||
public class IsgdURLShortener : URLShortener
|
||||
{
|
||||
protected virtual string APIURL { get { return "http://is.gd/create.php"; } }
|
||||
|
|
|
@ -30,6 +30,25 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class PolrURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.Polr;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return !string.IsNullOrEmpty(uploadersConfig.PolrAPIKey);
|
||||
}
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new PolrURLShortener
|
||||
{
|
||||
API_HOST = uploadersConfig.PolrAPIHostname,
|
||||
API_KEY = uploadersConfig.PolrAPIKey
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class PolrURLShortener : URLShortener
|
||||
{
|
||||
public string API_HOST { get; set; }
|
||||
|
|
|
@ -30,6 +30,18 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class QRnetURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.QRnet;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new QRnetURLShortener();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class QRnetURLShortener : URLShortener
|
||||
{
|
||||
private const string API_ENDPOINT = "http://qr.net/api/short";
|
||||
|
|
|
@ -27,6 +27,18 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class TinyURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.TINYURL;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new TinyURLShortener();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class TinyURLShortener : URLShortener
|
||||
{
|
||||
public override UploadResult ShortenURL(string url)
|
||||
|
|
|
@ -27,6 +27,18 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class TurlURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.TURL;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new TurlURLShortener();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class TurlURLShortener : URLShortener
|
||||
{
|
||||
public override UploadResult ShortenURL(string url)
|
||||
|
|
|
@ -30,6 +30,18 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class TwoGPURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.TwoGP;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new TwoGPURLShortener();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class TwoGPURLShortener : URLShortener
|
||||
{
|
||||
private const string API_ENDPOINT = "http://2.gp/api/short";
|
||||
|
|
|
@ -29,6 +29,18 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class VURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.VURL;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new VURLShortener();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class VURLShortener : URLShortener
|
||||
{
|
||||
private const string API_ENDPOINT = "http://vurl.com/api.php";
|
||||
|
|
|
@ -25,6 +25,18 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class VgdURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.VGD;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig) => true;
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new VgdURLShortener();
|
||||
}
|
||||
}
|
||||
|
||||
public class VgdURLShortener : IsgdURLShortener
|
||||
{
|
||||
protected override string APIURL { get { return "http://v.gd/create.php"; } }
|
||||
|
|
|
@ -28,6 +28,28 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
{
|
||||
public class YourlsURLShortenerService : URLShortenerService
|
||||
{
|
||||
public override UrlShortenerType EnumValue { get; } = UrlShortenerType.YOURLS;
|
||||
|
||||
public override bool CheckConfig(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return !string.IsNullOrEmpty(uploadersConfig.YourlsAPIURL) && (!string.IsNullOrEmpty(uploadersConfig.YourlsSignature) ||
|
||||
(!string.IsNullOrEmpty(uploadersConfig.YourlsUsername) && !string.IsNullOrEmpty(uploadersConfig.YourlsPassword)));
|
||||
}
|
||||
|
||||
public override URLShortener CreateShortener(UploadersConfig uploadersConfig)
|
||||
{
|
||||
return new YourlsURLShortener
|
||||
{
|
||||
APIURL = uploadersConfig.YourlsAPIURL,
|
||||
Signature = uploadersConfig.YourlsSignature,
|
||||
Username = uploadersConfig.YourlsUsername,
|
||||
Password = uploadersConfig.YourlsPassword
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class YourlsURLShortener : URLShortener
|
||||
{
|
||||
public string APIURL { get; set; }
|
||||
|
|
|
@ -432,22 +432,6 @@ public bool IsValid(UrlShortenerType destination)
|
|||
return service.CheckConfig(this);
|
||||
}
|
||||
|
||||
switch (destination)
|
||||
{
|
||||
case UrlShortenerType.Google:
|
||||
return GoogleURLShortenerAccountType == AccountType.Anonymous || OAuth2Info.CheckOAuth(GoogleURLShortenerOAuth2Info);
|
||||
case UrlShortenerType.YOURLS:
|
||||
return !string.IsNullOrEmpty(YourlsAPIURL) && (!string.IsNullOrEmpty(YourlsSignature) || (!string.IsNullOrEmpty(YourlsUsername) && !string.IsNullOrEmpty(YourlsPassword)));
|
||||
case UrlShortenerType.AdFly:
|
||||
return !string.IsNullOrEmpty(AdFlyAPIKEY) && !string.IsNullOrEmpty(AdFlyAPIUID);
|
||||
case UrlShortenerType.CoinURL:
|
||||
return !string.IsNullOrEmpty(CoinURLUUID);
|
||||
case UrlShortenerType.Polr:
|
||||
return !string.IsNullOrEmpty(PolrAPIKey);
|
||||
case UrlShortenerType.CustomURLShortener:
|
||||
return CustomUploadersList != null && CustomUploadersList.IsValidIndex(CustomURLShortenerSelected);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -881,85 +881,16 @@ public UploadResult UploadFile(Stream stream, string fileName)
|
|||
|
||||
public UploadResult ShortenURL(string url)
|
||||
{
|
||||
URLShortener urlShortener = null;
|
||||
|
||||
URLShortenerService service = UploaderFactory.GetURLShortenerServiceByEnum(Info.TaskSettings.URLShortenerDestination);
|
||||
|
||||
if (service != null)
|
||||
{
|
||||
urlShortener = service.CreateShortener(Program.UploadersConfig);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (Info.TaskSettings.URLShortenerDestination)
|
||||
{
|
||||
case UrlShortenerType.Google:
|
||||
urlShortener = new GoogleURLShortener(Program.UploadersConfig.GoogleURLShortenerAccountType, APIKeys.GoogleAPIKey,
|
||||
Program.UploadersConfig.GoogleURLShortenerOAuth2Info);
|
||||
break;
|
||||
case UrlShortenerType.ISGD:
|
||||
urlShortener = new IsgdURLShortener();
|
||||
break;
|
||||
case UrlShortenerType.VGD:
|
||||
urlShortener = new VgdURLShortener();
|
||||
break;
|
||||
case UrlShortenerType.TINYURL:
|
||||
urlShortener = new TinyURLShortener();
|
||||
break;
|
||||
case UrlShortenerType.TURL:
|
||||
urlShortener = new TurlURLShortener();
|
||||
break;
|
||||
case UrlShortenerType.YOURLS:
|
||||
urlShortener = new YourlsURLShortener
|
||||
{
|
||||
APIURL = Program.UploadersConfig.YourlsAPIURL,
|
||||
Signature = Program.UploadersConfig.YourlsSignature,
|
||||
Username = Program.UploadersConfig.YourlsUsername,
|
||||
Password = Program.UploadersConfig.YourlsPassword
|
||||
};
|
||||
break;
|
||||
case UrlShortenerType.AdFly:
|
||||
urlShortener = new AdFlyURLShortener
|
||||
{
|
||||
APIKEY = Program.UploadersConfig.AdFlyAPIKEY,
|
||||
APIUID = Program.UploadersConfig.AdFlyAPIUID
|
||||
};
|
||||
break;
|
||||
case UrlShortenerType.CoinURL:
|
||||
urlShortener = new CoinURLShortener
|
||||
{
|
||||
UUID = Program.UploadersConfig.CoinURLUUID
|
||||
};
|
||||
break;
|
||||
case UrlShortenerType.QRnet:
|
||||
urlShortener = new QRnetURLShortener();
|
||||
break;
|
||||
case UrlShortenerType.VURL:
|
||||
urlShortener = new VURLShortener();
|
||||
break;
|
||||
case UrlShortenerType.TwoGP:
|
||||
urlShortener = new TwoGPURLShortener();
|
||||
break;
|
||||
case UrlShortenerType.Polr:
|
||||
urlShortener = new PolrURLShortener
|
||||
{
|
||||
API_HOST = Program.UploadersConfig.PolrAPIHostname,
|
||||
API_KEY = Program.UploadersConfig.PolrAPIKey
|
||||
};
|
||||
break;
|
||||
case UrlShortenerType.CustomURLShortener:
|
||||
CustomUploaderItem customUploader = GetCustomUploader(Program.UploadersConfig.CustomURLShortenerSelected);
|
||||
if (customUploader != null)
|
||||
{
|
||||
urlShortener = new CustomURLShortener(customUploader);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
URLShortener urlShortener = service.CreateShortener(Program.UploadersConfig);
|
||||
|
||||
if (urlShortener != null)
|
||||
{
|
||||
return urlShortener.ShortenURL(url);
|
||||
if (urlShortener != null)
|
||||
{
|
||||
return urlShortener.ShortenURL(url);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
Loading…
Reference in a new issue