view Agendas/trunk/src/Agendas.Google/GUrlShortenerAdapter.cs @ 189:fe47f11f5f20

Adapter para url shorten de google
author nelopauselli
date Tue, 09 Aug 2011 09:38:28 -0300
parents
children e6abe8e1a794
line wrap: on
line source

using System.IO;
using System.Net;
using AltNetHispano.Agendas.Configurations;

namespace AltNetHispano.Agendas.Google
{
	public class GUrlShortenerAdapter
	{
		private readonly ShortenConfigurationElement _config;

		public GUrlShortenerAdapter()
		{
			_config = AgendasConfigurationManager.Publicadores.Google.Shorten;
		}

		public string GetShortUrl(string url)
		{
			WebRequest request = WebRequest.Create(_config.UrlAPI);
			request.Method = WebRequestMethods.Http.Post;
			request.ContentType = "application/json";
			
			using(var writer = new StreamWriter(request.GetRequestStream()))
			{
				var json = string.Format("{{\"longUrl\": \"{0}\"}}", url);
				writer.Write(json);
			}

			var response = request.GetResponse();

			using(var reader = new StreamReader(response.GetResponseStream()))
			{
				const string prefix = "\"id\": \"";

				var json = reader.ReadToEnd();

				var start = json.IndexOf(prefix) + prefix.Length;
				if (start>prefix.Length)
				{
					var length = json.IndexOf("\",", start) - start;

					if (length>0)
						return json.Substring(start, length);
				}
			}
			return string.Empty;
		}
	}
}