public XmlRpcResponse DeserializeResponse(XmlReader rdr, Type returnType) { try { IEnumerator <Node> enumerator = new XmlRpcParser().ParseResponse(rdr).GetEnumerator(); enumerator.MoveNext(); if (enumerator.Current is FaultNode) { throw DeserializeFault(enumerator); } if (returnType == typeof(void) || !enumerator.MoveNext()) { return(new XmlRpcResponse { retVal = null }); } Node current = enumerator.Current; object obj = MapValueNode(enumerator, returnType, new MappingStack("response"), MappingAction.Error); return(new XmlRpcResponse { retVal = obj }); } catch (XmlException ex) { throw new XmlRpcIllFormedXmlException("Response contains invalid XML", ex); } }
public void ParseResponse(string xml) { var rdr = XmlReader.Create(new StringReader(xml)); var iter = new XmlRpcParser().ParseResponse(rdr).GetEnumerator(); Assert.IsTrue(iter.MoveNext() && iter.Current is ResponseNode); Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue && (iter.Current as StringValue).Value == "South Dakota"); Assert.IsFalse(iter.MoveNext()); }
public object ParseValueElement(XmlReader rdr, Type valType, MappingStack mappingStack, MappingAction mappingAction) { IEnumerator <Node> enumerator = new XmlRpcParser().ParseValue(rdr).GetEnumerator(); enumerator.MoveNext(); return(MapValueNode(enumerator, valType, mappingStack, mappingAction)); }
public void ParseRequest(string xml) { var rdr = XmlReader.Create(new StringReader(xml)); var iter = new XmlRpcParser().ParseRequest(rdr).GetEnumerator(); Assert.IsTrue(iter.MoveNext()); Assert.IsInstanceOf <MethodName>(iter.Current); Assert.AreEqual("examples.getValues", (iter.Current as MethodName).Name); Assert.IsTrue(iter.MoveNext() && iter.Current is ParamsNode); Assert.IsTrue(iter.MoveNext() && iter.Current is IntValue && (iter.Current as IntValue).Value == "41"); Assert.IsTrue(iter.MoveNext() && iter.Current is IntValue && (iter.Current as IntValue).Value == "-12"); Assert.IsTrue(iter.MoveNext() && iter.Current is LongValue && (iter.Current as LongValue).Value == "123456789012"); Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue && (iter.Current as StringValue).Value == "Hello World"); Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue && (iter.Current as StringValue).Value == "Hello World"); Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue && (iter.Current as StringValue).Value == " "); Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue && (iter.Current as StringValue).Value == ""); Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue && (iter.Current as StringValue).Value == ""); Assert.IsTrue(iter.MoveNext() && iter.Current is DoubleValue && (iter.Current as DoubleValue).Value == "-12.214"); Assert.IsTrue(iter.MoveNext() && iter.Current is DateTimeValue && (iter.Current as DateTimeValue).Value == "19980717T14:08:55"); Assert.IsTrue(iter.MoveNext() && iter.Current is Base64Value && (iter.Current as Base64Value).Value == "eW91IGNhbid0IHJlYWQgdGhpcyE="); Assert.IsTrue(iter.MoveNext() && iter.Current is StructValue); Assert.IsTrue(iter.MoveNext() && iter.Current is StructMember && (iter.Current as StructMember).Value == "lowerBound"); Assert.IsTrue(iter.MoveNext() && iter.Current is IntValue && (iter.Current as IntValue).Value == "18"); Assert.IsTrue(iter.MoveNext() && iter.Current is StructMember && (iter.Current as StructMember).Value == "upperBound"); Assert.IsTrue(iter.MoveNext() && iter.Current is IntValue && (iter.Current as IntValue).Value == "139"); Assert.IsTrue(iter.MoveNext()); Assert.IsTrue(iter.Current is EndStructValue); Assert.IsTrue(iter.MoveNext()); Assert.IsTrue(iter.Current is ArrayValue); Assert.IsTrue(iter.MoveNext() && iter.Current is IntValue && (iter.Current as IntValue).Value == "12"); Assert.IsTrue(iter.MoveNext() && iter.Current is StringValue && (iter.Current as StringValue).Value == "Egypt"); Assert.IsTrue(iter.MoveNext() && iter.Current is BooleanValue && (iter.Current as BooleanValue).Value == "0"); Assert.IsTrue(iter.MoveNext() && iter.Current is IntValue && (iter.Current as IntValue).Value == "-31"); Assert.IsTrue(iter.MoveNext()); Assert.IsTrue(iter.Current is EndArrayValue); Assert.IsFalse(iter.MoveNext()); }