diff --git a/ShareX.UploadersLib/Enums.cs b/ShareX.UploadersLib/Enums.cs index 3370fcd12..1da253f40 100644 --- a/ShareX.UploadersLib/Enums.cs +++ b/ShareX.UploadersLib/Enums.cs @@ -154,6 +154,8 @@ public enum UrlShortenerType NLCM, [Description("adf.ly")] AdFly, + [Description("lnku.co")] + LnkU, CustomURLShortener // Localized } diff --git a/ShareX.UploadersLib/Favicons/LnkU.ico b/ShareX.UploadersLib/Favicons/LnkU.ico new file mode 100644 index 000000000..1c12613a7 Binary files /dev/null and b/ShareX.UploadersLib/Favicons/LnkU.ico differ diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs index 87ea0d04d..34a5cb422 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs @@ -95,6 +95,7 @@ private void FormSettings() AddIconToTab(tpImageShack, Resources.ImageShack); AddIconToTab(tpImgur, Resources.Imgur); AddIconToTab(tpJira, Resources.jira); + AddIconToTab(tpLnkU, Resources.LnkU); AddIconToTab(tpMediaFire, Resources.MediaFire); AddIconToTab(tpMega, Resources.Mega); AddIconToTab(tpMinus, Resources.Minus); @@ -582,6 +583,10 @@ public void LoadSettings(UploadersConfig uploadersConfig) txtAdflyAPIKEY.Text = Config.AdFlyAPIKEY; txtAdflyAPIUID.Text = Config.AdFlyAPIUID; + // lnku.co + + txtLnkUAPIKEY.Text = Config.LnkUAPIKEY; + #endregion URL Shorteners #region Other Services @@ -2133,13 +2138,21 @@ private void llAdflyLink_LinkClicked(object sender, LinkLabelLinkClickedEventArg #endregion adf.ly - #endregion URL Shorteners + #region LnkU.co - #region Other Uploaders + private void txtLnkUAPIKEY_TextChanged(object sender, EventArgs e) + { + Config.LnkUAPIKEY = txtLnkUAPIKEY.Text; + } + #endregion - #region Twitter + #endregion URL Shorteners - private void btnTwitterAdd_Click(object sender, EventArgs e) + #region Other Uploaders + + #region Twitter + + private void btnTwitterAdd_Click(object sender, EventArgs e) { OAuthInfo oauth = new OAuthInfo(); Config.TwitterOAuthInfoList.Add(oauth); diff --git a/ShareX.UploadersLib/Properties/Resources.Designer.cs b/ShareX.UploadersLib/Properties/Resources.Designer.cs index 2a4013038..7c871da52 100644 --- a/ShareX.UploadersLib/Properties/Resources.Designer.cs +++ b/ShareX.UploadersLib/Properties/Resources.Designer.cs @@ -421,6 +421,16 @@ internal static System.Drawing.Icon Lambda { } } + /// + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). + /// + internal static System.Drawing.Icon LnkU { + get { + object obj = ResourceManager.GetObject("LnkU", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/ShareX.UploadersLib/Properties/Resources.resx b/ShareX.UploadersLib/Properties/Resources.resx index df4cd2c1f..44bad0af8 100644 --- a/ShareX.UploadersLib/Properties/Resources.resx +++ b/ShareX.UploadersLib/Properties/Resources.resx @@ -461,4 +461,7 @@ Created folders: ..\Favicons\hubic.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Favicons\LnkU.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/ShareX.UploadersLib/ShareX.UploadersLib.csproj b/ShareX.UploadersLib/ShareX.UploadersLib.csproj index 39bf84235..8d50483ae 100644 --- a/ShareX.UploadersLib/ShareX.UploadersLib.csproj +++ b/ShareX.UploadersLib/ShareX.UploadersLib.csproj @@ -289,6 +289,7 @@ + @@ -745,6 +746,10 @@ + + + + diff --git a/ShareX.UploadersLib/URLShorteners/LnkUURLShortener.cs b/ShareX.UploadersLib/URLShorteners/LnkUURLShortener.cs new file mode 100644 index 000000000..91a76282e --- /dev/null +++ b/ShareX.UploadersLib/URLShorteners/LnkUURLShortener.cs @@ -0,0 +1,69 @@ +#region License Information (GPL v3) + +/* + ShareX - A program that allows you to take screenshots and share any file type + Copyright © 2007-2015 ShareX Developers + + 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 . +*/ + +#endregion License Information (GPL v3) + +using Newtonsoft.Json; +using System.Collections.Generic; + +namespace ShareX.UploadersLib.URLShorteners +{ + public sealed class LnkUURLShortener : URLShortener + { + private const string API_ENDPOINT = "https://api-ssl.bitly.com/"; + public string API_KEY { get; set; } + + public override UploadResult ShortenURL(string url) + { + UploadResult result = new UploadResult { URL = url }; + + Dictionary args = new Dictionary(); + args.Add("apikey", API_KEY); + args.Add("action" , "shorten"); + args.Add("url", url); + + string response = SendRequest(HttpMethod.GET, API_ENDPOINT, args); + + if (!string.IsNullOrEmpty(response)) + { + LnkUURLShortenerResponse jsonResponse = JsonConvert.DeserializeObject(response); + + if (jsonResponse != null) + { + result.ShortenedURL = jsonResponse.shorturl; + } + } + + return result; + } + } + + public class LnkUURLShortenerResponse + { + public string shortcode { get; set; } + public string site { get; set; } + public string shorturl { get; set; } + public string fullurl { get; set; } + public string title { get; set; } + } +} diff --git a/ShareX.UploadersLib/UploadersConfig.cs b/ShareX.UploadersLib/UploadersConfig.cs index d5c854f55..e09077373 100644 --- a/ShareX.UploadersLib/UploadersConfig.cs +++ b/ShareX.UploadersLib/UploadersConfig.cs @@ -275,6 +275,9 @@ public class UploadersConfig : SettingsBase public string AdFlyAPIKEY = String.Empty; public string AdFlyAPIUID = String.Empty; + // lnku.co + public string LnkUAPIKEY = string.Empty; + #endregion URL shorteners #region URL sharing services @@ -428,6 +431,8 @@ public bool IsValid(UrlShortenerType destination) 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.LnkU: + return !string.IsNullOrEmpty(LnkUAPIKEY); case UrlShortenerType.CustomURLShortener: return CustomUploadersList != null && CustomUploadersList.IsValidIndex(CustomURLShortenerSelected); } diff --git a/ShareX/UploadTask.cs b/ShareX/UploadTask.cs index 0a34c6fa4..ac92f80f0 100644 --- a/ShareX/UploadTask.cs +++ b/ShareX/UploadTask.cs @@ -1075,6 +1075,12 @@ public UploadResult ShortenURL(string url) APIUID = Program.UploadersConfig.AdFlyAPIUID }; break; + case UrlShortenerType.LnkU: + urlShortener = new LnkUURLShortener + { + API_KEY = Program.UploadersConfig.LnkUAPIKEY + }; + break; case UrlShortenerType.CustomURLShortener: CustomUploaderItem customUploader = GetCustomUploader(Program.UploadersConfig.CustomURLShortenerSelected); if (customUploader != null)