/// <summary> /// Request template for URL /// </summary> /// <param name="eService"></param> /// <returns></returns> private static string GetRequestTemplate(ShortURLProvider eService) { string strRequest = string.Empty; switch (eService) { case ShortURLProvider.Isgd: strRequest = "http://is.gd/api.php?longurl={0}"; break; case ShortURLProvider.Bitly: strRequest = "http://bit.ly/api?url={0}";; break; case ShortURLProvider.Tinyurl: strRequest = "http://tinyurl.com/api-create.php?url={0}"; break; case ShortURLProvider.Trim: strRequest = "http://tr.im/api/trim_url.xml?url={0}"; break; default: break; } return(strRequest); }
/// <summary> /// try to use different services to shorten the given url /// </summary> /// <param name="url"></param> /// <param name="eService"></param> /// <returns></returns> public static string DoShortenURL(string url, ShortURLProvider eService) { // return empty strings if not valid if (!IsValidURL(url)) return string.Empty; string requestUrl = string.Format(GetRequestTemplate(eService), url); WebRequest request = HttpWebRequest.Create(requestUrl); request.Proxy = null; string strResult = null; try { using (Stream responseStream = request.GetResponse().GetResponseStream()) { StreamReader reader = new StreamReader(responseStream, Encoding.ASCII); strResult = reader.ReadToEnd(); if (!IsValidURL(strResult)) return string.Empty; } } catch (Exception) { strResult = url; } // if converted is longer than original, return original if (strResult.Length > url.Length) strResult = url; //if the previous service didn't work, try Tr.im: if (strResult.CompareTo(url) == 0) strResult = GetShortURLbyXML(url); return strResult; }
/// <summary> /// try to use different services to shorten the given url /// </summary> /// <param name="url"></param> /// <param name="eService"></param> /// <returns></returns> public static string DoShortenURL(string url, ShortURLProvider eService) { // return empty strings if not valid if (!IsValidURL(url)) { return(string.Empty); } string requestUrl = string.Format(GetRequestTemplate(eService), url); WebRequest request = HttpWebRequest.Create(requestUrl); request.Proxy = null; string strResult = null; try { using (Stream responseStream = request.GetResponse().GetResponseStream()) { StreamReader reader = new StreamReader(responseStream, Encoding.ASCII); strResult = reader.ReadToEnd(); if (!IsValidURL(strResult)) { return(string.Empty); } } } catch (Exception) { strResult = url; } // if converted is longer than original, return original if (strResult.Length > url.Length) { strResult = url; } //if the previous service didn't work, try Tr.im: if (strResult.CompareTo(url) == 0) { strResult = GetShortURLbyXML(url); } return(strResult); }
/* Request template for URL */ private static string GetRequestTemplate(ShortURLProvider eService) { string strRequest = null; switch (eService) { case ShortURLProvider.Isgd: strRequest = "http://is.gd/api.php?longurl={0}"; break; case ShortURLProvider.Bitly: strRequest = "http://bit.ly/api?url={0}"; ; break; case ShortURLProvider.Tinyurl: strRequest = "http://tinyurl.com/api-create.php?url={0}"; break; default: break; } return strRequest; }
//public static string randomizeShortURLProvider() //{ // string[] providers = {"Tinyurl", "Bitly", "Isgd"}; // Random rnd = new Random(); // string random = string.Empty; // for (int i = 0; i <= 3; i++) // { // random = providers[rnd.Next(0, 3)].ToString(); // } // return random; //} public static string ShortenURL(string strUrl, ShortURLProvider eService) { // return empty strings if not valid if (!IsValidURL(strUrl)) { return ""; } string requestUrl = string.Format(GetRequestTemplate(eService), strUrl); WebRequest request = HttpWebRequest.Create(requestUrl); request.Proxy = null; string strResult = null; try { using (Stream responseStream = request.GetResponse().GetResponseStream()) { StreamReader reader = new StreamReader(responseStream, Encoding.ASCII); strResult = reader.ReadToEnd(); if (!IsValidURL(strResult)) { WebException w = new WebException(strResult); throw w; } } } catch (Exception) { return strUrl; // eat it and return original url } // if converted is longer than original, return original if (strResult.Length > strUrl.Length) strResult = strUrl; return strResult; }