Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs @ 158:734d3f0853bf
Manejando configuración de los publicadores con una sección propia en los .config
Agregando la opción de habilitar / deshabilitar un publicador
author | nelopauselli |
---|---|
date | Fri, 05 Aug 2011 16:55:18 -0300 |
parents | 17531db40d4e |
children | beeb48ddb44a |
line wrap: on
line source
using System.Collections.Generic; using System.Linq; using AltNetHispano.Agendas.Configurations; using AltNetHispano.Agendas.Domain; using AltNetHispano.Agendas.Twitter.Writers; namespace AltNetHispano.Agendas.Twitter { public class TwitterPublicador : IPublicador { private readonly IDictionary<Accion, ITwitterWriter> _writers; private readonly ITwitterAdapter _twitterAdapter; public TwitterPublicador() : this(new TwitterAdapter()) { } public TwitterPublicador(ITwitterAdapter twitterAdapter) { _writers = new Dictionary<Accion, ITwitterWriter> { {Accion.Proponer, new ProponerTwitterWriter()}, {Accion.Agendar, new AgendarTwitterWriter()}, {Accion.Confirmar, new ConfirmarTwitterWriter()}, {Accion.Publicar, new PublicarTwitterWriter()} }; _twitterAdapter = twitterAdapter; } private const int LIMITE_MENSAJE = 140; public void Publicar(IEnumerable<Track> tracks) { if (!AgendasConfigurationManager.Publicadores.Twitter.Enabled) return; foreach (var track in tracks) { //Si ya hicimos el twitt de este track, no volvemos a hacerlo if (track.Logs.Any(l => l.Propietario == TrackLogPropietario.Twitter && l.Successful)) continue; var twitt = BuildTwitt(track); if (!string.IsNullOrWhiteSpace(twitt)) { string message; bool success = _twitterAdapter.Update(twitt, out message); track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, message, track.Usuario, success)); } } } private string BuildTwitt(Track track) { ITwitterWriter writer; if (!_writers.TryGetValue(track.Accion, out writer)) return string.Empty; string body = writer.Write(track); return body.Length > LIMITE_MENSAJE ? body.Substring(0, LIMITE_MENSAJE - 1) : body; } } }