Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Google/GUrlShortenerAdapter.cs @ 214:7d838e7d83b3
Se soluciona ticket 176. Se agrega validación para que no se pueda agendar otro evento con el mismo título, buscando los eventos que no estén en estado propuesto.
author | alabra |
---|---|
date | Wed, 24 Aug 2011 19:49:18 -0300 |
parents | e6abe8e1a794 |
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; } } }