Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Google/GUrlShortenerAdapter.cs @ 241:a7daa939ef0c
Probando de armar tests de Agendas.Web
author | juanjose.montesdeocaarbos |
---|---|
date | Wed, 05 Oct 2011 07:43:09 -0300 |
parents | 806fd94727ce |
children |
line wrap: on
line source
using System; 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) { if (url == null) throw new ArgumentNullException("url"); else if (string.IsNullOrWhiteSpace(url)) throw new ArgumentException(); 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; } } }