Mercurial > altnet-hispano
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 } |