Fixing errors that Live Writer was logging on the client.

Fixing errors that Live Writer was having with our datetime format, that we were having with the datetime string Live Writer was giving us and correctly setting an empty response to metaWeblog.getCategories from Orchard.Tags

--HG--
branch : dev
This commit is contained in:
Nathan Heskew
2010-12-14 11:49:42 -08:00
parent 8935efc96c
commit 7113067437
4 changed files with 9 additions and 5 deletions

View File

@@ -27,7 +27,8 @@ namespace Orchard.Core.XmlRpc.Controllers {
new XElement(XName.Get("clientType", ManifestUri), "Metaweblog"), new XElement(XName.Get("clientType", ManifestUri), "Metaweblog"),
new XElement(XName.Get("supportsKeywords", ManifestUri), "No"), new XElement(XName.Get("supportsKeywords", ManifestUri), "No"),
new XElement(XName.Get("supportsCategories", ManifestUri), "No"), new XElement(XName.Get("supportsCategories", ManifestUri), "No"),
new XElement(XName.Get("supportsFileUpload", ManifestUri), "No")); new XElement(XName.Get("supportsFileUpload", ManifestUri), "No"),
new XElement(XName.Get("supportsCustomDate", ManifestUri), "No"));
foreach (var handler in _xmlRpcHandlers) foreach (var handler in _xmlRpcHandlers)
handler.SetCapabilities(options); handler.SetCapabilities(options);

View File

@@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using System.Linq; using System.Linq;
using System.Xml.Linq; using System.Xml.Linq;
using Orchard.Core.XmlRpc.Models; using Orchard.Core.XmlRpc.Models;
@@ -23,7 +24,9 @@ namespace Orchard.Core.XmlRpc.Services {
{"double", x=>new XRpcData<double> { Value = (double)x }}, {"double", x=>new XRpcData<double> { Value = (double)x }},
{"dateTime.iso8601", x=> { {"dateTime.iso8601", x=> {
DateTime parsedDateTime; DateTime parsedDateTime;
if(!DateTime.TryParse(x.Value, out parsedDateTime)) { // try parsing a "normal" datetime string then try what live writer gives us
if(!DateTime.TryParse(x.Value, out parsedDateTime)
&& !DateTime.TryParseExact(x.Value, "yyyyMMddTHH:mm:ss", DateTimeFormatInfo.CurrentInfo, DateTimeStyles.None, out parsedDateTime)) {
parsedDateTime = DateTime.Now; parsedDateTime = DateTime.Now;
} }
return new XRpcData<DateTime> {Value = parsedDateTime}; return new XRpcData<DateTime> {Value = parsedDateTime};

View File

@@ -18,8 +18,8 @@ namespace Orchard.Core.XmlRpc.Services {
{typeof(bool), p=>new XElement("boolean", (bool)p.Value?"1":"0")}, {typeof(bool), p=>new XElement("boolean", (bool)p.Value?"1":"0")},
{typeof(string), p=>new XElement("string", p.Value)}, {typeof(string), p=>new XElement("string", p.Value)},
{typeof(double), p=>new XElement("double", (double)p.Value)}, {typeof(double), p=>new XElement("double", (double)p.Value)},
{typeof(DateTime), p=>new XElement("dateTime.iso8601", ((DateTime)p.Value).ToString("o"))}, {typeof(DateTime), p=>new XElement("dateTime.iso8601", ((DateTime)p.Value).ToString("yyyy-MM-ddTHH:mm:ssZ"))},
{typeof(DateTime?), p=>new XElement("dateTime.iso8601", ((DateTime?)p.Value).Value.ToString("o"))}, {typeof(DateTime?), p=>new XElement("dateTime.iso8601", ((DateTime?)p.Value).Value.ToString("yyyy-MM-ddTHH:mm:ssZ"))},
{typeof(byte[]), p=>new XElement("base64", Convert.ToBase64String((byte[])p.Value))}, {typeof(byte[]), p=>new XElement("base64", Convert.ToBase64String((byte[])p.Value))},
{typeof(XRpcStruct), p=>Map((XRpcStruct)p.Value)}, {typeof(XRpcStruct), p=>Map((XRpcStruct)p.Value)},
{typeof(XRpcArray), p=>Map((XRpcArray)p.Value)}, {typeof(XRpcArray), p=>Map((XRpcArray)p.Value)},

View File

@@ -41,7 +41,7 @@ namespace Orchard.Tags.Services {
switch (context.Request.MethodName) { switch (context.Request.MethodName) {
case "metaWeblog.getCategories": // hack... because live writer still asks for it... case "metaWeblog.getCategories": // hack... because live writer still asks for it...
if (context.Response == null) if (context.Response == null)
context.Response = new XRpcMethodResponse(); context.Response = new XRpcMethodResponse().Add(new XRpcArray());
break; break;
case "wp.getTags": case "wp.getTags":
var tags = MetaWeblogGetTags( var tags = MetaWeblogGetTags(