view Agendas/trunk/src/Agendas.Blog/Impl/BlogPublicador.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 c3573defd18f
children 2a336a6a76b5
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, ex.Message, track.Usuario, false));
				}
			}
		}
	}
}