All URL shorteners using URLShortenerService now

This commit is contained in:
Jaex 2016-03-22 19:41:56 +02:00
parent b4b7d3160c
commit fdb5b84b85
15 changed files with 206 additions and 90 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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