view Agendas/trunk/src/Agendas.Google/GUrlShortenerAdapter.cs @ 190:e6abe8e1a794

Mejoras menores en shorten url
author nelopauselli
date Tue, 09 Aug 2011 09:45:07 -0300
parents fe47f11f5f20
children 806fd94727ce
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() as HttpWebResponse;

			if (response != null && response.StatusCode == HttpStatusCode.OK)
			{
				var stream = response.GetResponseStream();

				if (stream != null)
				{
					using (var reader = new StreamReader(stream))
					{
						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;
		}
	}
}