annotate Agendas/trunk/src/Agendas.Blog/Impl/PostWriterWebServiceAdapter.cs @ 99:3027c64344bd

agregado de llamadas a web service para crear posts en el blog de la comunidad agregado de tests sobre el publicador de blogs agregado de tests sobre el adapter del web service
author jorge.rowies
date Sat, 04 Jun 2011 22:33:05 -0300
parents
children 1d820f17fc75
rev   line source
99
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
1 using System;
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
2 using System.Globalization;
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
3 using System.Security.Cryptography;
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
4 using System.ServiceModel;
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
5 using Agendas.Blog.Exceptions;
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
6 using Agendas.Blog.PortalSitefinity;
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
7
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
8 namespace Agendas.Blog.Impl
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
9 {
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
10 public class PostWriterWebServiceAdapter : IPostWriterWebService
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
11 {
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
12 private readonly PostWriterWebServiceSoapClient _service;
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
13
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
14 public PostWriterWebServiceAdapter()
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
15 {
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
16 var postWriterUrl = System.Configuration.ConfigurationManager.AppSettings["PublicadorBlog.PostWriterServiceUrl"];
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
17 if (string.IsNullOrEmpty(postWriterUrl))
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
18 throw new PostWriterServiceUrlNotFoundException();
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
19
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
20 _service = new PortalSitefinity.PostWriterWebServiceSoapClient(new BasicHttpBinding(), new EndpointAddress(postWriterUrl));
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
21 }
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
22
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
23 private static string buildToken(string key, DateTime time)
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
24 {
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
25 var aux = key + time.ToString(CultureInfo.InvariantCulture);
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
26
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
27 var enc = System.Text.Encoding.ASCII.GetEncoder();
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
28
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
29 var data = new byte[aux.Length];
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
30 enc.GetBytes(aux.ToCharArray(), 0, aux.Length, data, 0, true);
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
31
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
32 var md5 = new MD5CryptoServiceProvider();
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
33 var result = md5.ComputeHash(data);
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
34
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
35 return BitConverter.ToString(result).Replace("-", "").ToLower();
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
36 }
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
37
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
38 public void WriteBlogPost(string postTitle, string postHtmlContent, string postAuthor, bool setPublicationDate)
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
39 {
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
40 var securityToken = getSecurityToken();
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
41 var blogName = System.Configuration.ConfigurationManager.AppSettings["PublicadorBlog.BlogName"];
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
42 if (string.IsNullOrEmpty(blogName))
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
43 throw new BlogNameNotFoundException();
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
44
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
45 _service.WriteBlogPost(securityToken, blogName, postTitle, postHtmlContent, postAuthor, setPublicationDate);
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
46 }
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
47
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
48 private static string getSecurityToken()
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
49 {
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
50 var masterKey = System.Configuration.ConfigurationManager.AppSettings["PublicadorBlog.BlogWriterMasterKey"];
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
51 if (string.IsNullOrEmpty(masterKey))
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
52 throw new BlogWriterMasterKeyNotFoundException();
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
53
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
54 var now = DateTime.UtcNow;
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
55 now = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0, 0);
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
56
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
57 return buildToken(masterKey, now);
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
58 }
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
59 }
3027c64344bd agregado de llamadas a web service para crear posts en el blog de la comunidad
jorge.rowies
parents:
diff changeset
60 }