view Agendas/trunk/src/Agendas.Blog/Impl/BlogPublicador.cs @ 184:2a336a6a76b5

Agregando log al track cuando fallan los publicadores
author nelopauselli
date Mon, 08 Aug 2011 22:32:12 -0300
parents 734d3f0853bf
children
line wrap: on
line source

using System;
using System.Collections.Generic;
using System.Linq;
using AltNetHispano.Agendas.Configurations;
using AltNetHispano.Agendas.Domain;

namespace Agendas.Blog.Impl
{
	public class BlogPublicador : IPublicador
	{
		private readonly IPostWriterFactory _postWriterFactory;

		public BlogPublicador()
			: this(
				new PostWriterFactory(
					new PostWriterWebServiceAdapter(
						new BlogPublicadorConfig(AgendasConfigurationManager.Publicadores.Blog.Writer.PostWriterServiceUrl,
						                         AgendasConfigurationManager.Publicadores.Blog.Writer.BlogName,
						                         AgendasConfigurationManager.Publicadores.Blog.Writer.BlogWriterMasterKey))))
		{
		}

		public BlogPublicador(IPostWriterFactory postWriterFactory)
		{
			_postWriterFactory = postWriterFactory;
		}

		public void Publicar(IEnumerable<Track> tracks)
		{
			if (!AgendasConfigurationManager.Publicadores.Blog.Enabled) return;

			foreach (var track in tracks)
			{
				if (track.Logs.Any(l => l.Propietario == TrackLogPropietario.Blog && l.Successful)) continue;

				try
				{
					_postWriterFactory.GetPostWriter(track.Accion).WritePost(track);
					track.LogAdd(new TrackLog(TrackLogPropietario.Blog, string.Empty, track.Usuario, true));
				}
				catch (Exception ex)
				{
					track.LogAdd(new TrackLog(TrackLogPropietario.Blog, track.Usuario, ex));
				}
			}
		}
	}
}