view Agendas/trunk/src/Agendas.Blog/Impl/PostWriterWebServiceAdapter.cs @ 120:c3573defd18f

Agregado de Fecha, Usuario y Successful en TrackLog Modificacion de publicador de blog para usar TrackLog Agregado de TrackLog en el test de crud de eventos Fix en publicador de twitter para que no twitee si ya se encuentra en TrackLog pero con Successful en true
author Jorge@Jorge-PC
date Fri, 24 Jun 2011 21:18:21 -0300
parents 1d820f17fc75
children
line wrap: on
line source

using System;
using System.Globalization;
using System.Security.Cryptography;
using System.ServiceModel;
using Agendas.Blog.Exceptions;
using Agendas.Blog.PortalSitefinity;

namespace Agendas.Blog.Impl
{
  public class PostWriterWebServiceAdapter : IPostWriterWebService
  {
    private readonly BlogPublicadorConfig _config;
    private readonly PostWriterWebServiceSoapClient _service;

    public PostWriterWebServiceAdapter(BlogPublicadorConfig config)
    {
      _config = config;
      _service = new PortalSitefinity.PostWriterWebServiceSoapClient(new BasicHttpBinding(),
                                                                     new EndpointAddress(config.PostWriterServiceUrl));
    }

    private static string buildToken(string key, DateTime time)
    {
      var aux = key + time.ToString(CultureInfo.InvariantCulture);

      var enc = System.Text.Encoding.ASCII.GetEncoder();

      var data = new byte[aux.Length];
      enc.GetBytes(aux.ToCharArray(), 0, aux.Length, data, 0, true);

      var md5 = new MD5CryptoServiceProvider();
      var result = md5.ComputeHash(data);

      return BitConverter.ToString(result).Replace("-", "").ToLower();
    }

    public void WriteBlogPost(string postTitle, string postHtmlContent, string postAuthor, bool setPublicationDate)
    {
      var securityToken = getSecurityToken();
      _service.WriteBlogPost(securityToken, _config.BlogName, postTitle, postHtmlContent, postAuthor, setPublicationDate);
    }

    private string getSecurityToken()
    {
      var now = DateTime.UtcNow;
      now = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0, 0);

      return buildToken(_config.BlogWriterMasterKey, now);
    }
  }
}