Utilizando el API de TinyUrl

Todos aquellos que frecuentamos Twitter estamos más que acostumbrados a ver direcciones cortas generadas por distintos proveedores. En este post voy a mostrar un pequeño ejemplo de cómo podríamos utilizar uno de estos proveedores, TinyUrl, para conseguir esas direcciones cortas desde nuestra aplicación.

En primer lugar he creado un pequeño formulario Ajax con ASP.NET MVC:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Tiny Url Maker
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">


        <% using (Ajax.BeginForm("MakeTinyUrl", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "tinyUrl" }))            {%>
        <%=Html.TextBox("url") %>
        <input id="btnMakeUrl" type="submit" value="Make tinyUrl" />
        <%             }%>
    


<div id="tinyUrl">
        <%Html.RenderPartial("TinyUrl"); %>
    </div>

</asp:Content>

Al pulsar en el botón, de manera asíncrona, llamaremos a la acción MakeTinyUrl donde llamaremos a la API disponible.

using System.IO;
using System.Net;
using System.Web.Mvc;

namespace TinyURLAPI.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewData["Message"] = "Welcome to ASP.NET MVC!";

            return View();
        }

        [HttpPost]
        public ActionResult MakeTinyUrl(string url)
        {
            var tinyUrl = WebRequest.Create("http://tinyurl.com/api-create.php?url=" + url);
            var shortUrl = tinyUrl.GetResponse();

            using (var reader = new StreamReader(shortUrl.GetResponseStream()))
            {
                ViewData["tinyUrl"] = reader.ReadToEnd();
            }
            return PartialView("TinyUrl");

        }
    }
}

Si arrancamos la aplicación e introducimos cualquier url, el resultado sería el siguiente:

Tiny-URL-MVC

¡Saludos!