From 843a07566b67fb10d23a6aa8d67992d0a3569f2a Mon Sep 17 00:00:00 2001 From: Daniel McAssey Date: Mon, 20 Jul 2015 15:51:34 +0100 Subject: [PATCH] Add LnkU URL Shortener --- ShareX.UploadersLib/Enums.cs | 2 + ShareX.UploadersLib/Favicons/LnkU.ico | Bin 0 -> 1150 bytes .../Forms/UploadersConfigForm.cs | 21 +++++- .../Properties/Resources.Designer.cs | 10 +++ ShareX.UploadersLib/Properties/Resources.resx | 3 + .../ShareX.UploadersLib.csproj | 5 ++ .../URLShorteners/LnkUURLShortener.cs | 69 ++++++++++++++++++ ShareX.UploadersLib/UploadersConfig.cs | 5 ++ ShareX/UploadTask.cs | 6 ++ 9 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 ShareX.UploadersLib/Favicons/LnkU.ico create mode 100644 ShareX.UploadersLib/URLShorteners/LnkUURLShortener.cs 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 0000000000000000000000000000000000000000..1c12613a79312df52fa10ea2542e1578f27ebb56 GIT binary patch literal 1150 zcmZ{jTS!z<6oyY1D(E38u%H*|A)=>(=%Jt}D0(QmVFi`gO*Bj_QR|_LN={i*Y6T&Z zV`WxDQ{jY_O`3SgO2@{=(b1a5oN;VM=a9F#|NVQsgjVP9?RC~(>tFkv#X6ESjdw(Z z#5GEapD9U^k|Zr7+~UsYK8++XHh=CYVSma3KqAYCAruTC6!eGT65`%fGM!9O{c%N% z9QP0Rqp#%=T>4@-^(y?byaQ{rGPdYn`Z3)c+8yML@0T6UrXuR^!u7cXa>q;Y9s`VB zBP)qGXX4;7fA`Sfz+k)40NHM${tn!x=a9`WG1&b9ZpT+Rf3zVK3VvYz!f`#Vc&F_| ztN&Ps=*_FpSf#k5zBH8M zVO}EZq#`5rFf!ARAy<)(gaezQE9aTO{RzFP5U^^2=IjZ5rRD|-Gxk!ShRn1hIF}NO zl(=0;Iw@yKQGa0JvgAjEJ^0IJr-$opXUXNq6 zjSZX$ponM?7#V_B4te`6a5QV-?&(C$i$drgUx!Ye3)80xxV|@`^HUidHYGH`DHQhq}WJOfVnhx(Wnddp>j(2QT=nTT1~M6}lSMkwM| zh0i^`dohYG9)#cLl^IJXOUR`8ol+-GcG*yN=X|*D>YFF={`Ea}IoLv7q|pBF8mk*c mTSGYO;(#-#9Hj>r+Y + /// 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)