public void Base64MultiLine()
        {
            string        xml          = @"<?xml version=""1.0""?>
<methodCall>
  <methodName>TestHex</methodName>
  <params>
    <param>
      <value>
        <base64>AQIDBAUGBwgJ
AQIDBAUGBwg=</base64>
      </value>
    </param>
  </params>
</methodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, null);

            Assert.AreEqual(request.args[0].GetType(), typeof(byte[]),
                            "argument is byte[]");
            byte[] ret = (byte[])request.args[0];
            Assert.AreEqual(17, ret.Length, "argument is byte[17]");
            for (int i = 0; i < 9; i++)
            {
                Assert.AreEqual(i + 1, ret[i], "first 9 members are 1 to 9");
            }
            for (int i = 0; i < 8; i++)
            {
                Assert.AreEqual(i + 1, ret[i + 9], "last 8 members are 1 to 9");
            }
        }
        Stream TryInvoke(Stream requestStream)
        {
            var deserializer = new XmlRpcRequestDeserializer();
            var serviceAttr  = (XmlRpcServiceAttribute)Attribute.GetCustomAttribute(GetType(), typeof(XmlRpcServiceAttribute));

            if (serviceAttr != null)
            {
                SetSerializerSettings(serviceAttr, deserializer);
            }

            var xmlRpcReq = deserializer.DeserializeRequest(requestStream, GetType());

            XmlRpcResponse xmlRpcResp = null;

            if (xmlRpcReq.Method.Equals("system.multicall", StringComparison.OrdinalIgnoreCase))
            {
                var resultList = InvokeMulticall(xmlRpcReq);
                xmlRpcResp = new XmlRpcResponse(resultList.Where(x => x != null).ToArray());
            }
            else
            {
                var result = Invoke(xmlRpcReq);
                xmlRpcResp = new XmlRpcResponse(result);
            }

            var responseStream = new MemoryStream();
            var serializer     = new XmlRpcResponseSerializer();

            serializer.SerializeResponse(responseStream, xmlRpcResp);
            responseStream.Seek(0, SeekOrigin.Begin);
            return(responseStream);
        }
Exemple #3
0
        public void DeserializeObjectParamsStrings()
        {
            string xml =
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>Bar</methodName>
  <params>
    <param>
      <value>
        <string>one</string>
      </value>
    </param>
    <param>
      <value>
        <string>two</string>
      </value>
    </param>
  </params>
</methodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, this.GetType());

            Assert.AreEqual(request.method, "Bar", "method is Foo");
            Assert.AreEqual(request.args[0].GetType(), typeof(string[]),
                            "argument is string[]");
            Assert.AreEqual((string[])request.args[0], new string[] { "one", "two" },
                            "argument is params array \"one\", \"two\"");
        }
Exemple #4
0
        public void DeserializeObjectParams1()
        {
            string xml =
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>Foo1</methodName>
  <params>
    <param>
      <value>
        <i4>5678</i4>
      </value>
    </param>
    <param>
      <value>
        <i4>1</i4>
      </value>
    </param>
    <param>
      <value>
        <string>one</string>
      </value>
    </param>
  </params>
</methodCall>";
            StringReader  sr         = new StringReader(xml);
            var           serializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request    = serializer.DeserializeRequest(sr, this.GetType());

            Assert.AreEqual(request.method, "Foo1", "method is Foo");
            Assert.AreEqual((int)request.args[0], 5678, "first argument is int");
            Assert.AreEqual(request.args[1].GetType(), typeof(object[]),
                            "argument is object[]");
            Assert.AreEqual((object[])request.args[1], new object[] { 1, "one" },
                            "second argument is params array 1, \"one\"");
        }
Exemple #5
0
        public void DeserializeObjectInvalidParams()
        {
            string xml =
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>Bar</methodName>
  <params>
    <param>
      <value>
        <string>string one</string>
      </value>
    </param>
    <param>
      <value>
        <i4>2</i4>
      </value>
    </param>
  </params>
</methodCall>";
            StringReader sr           = new StringReader(xml);
            var          deserializer = new XmlRpcRequestDeserializer();

            try
            {
                XmlRpcRequest request = deserializer.DeserializeRequest(sr,
                                                                        this.GetType());
                Assert.Fail("Should detect invalid type of parameter #2");
            }
            catch (XmlRpcTypeMismatchException)
            {
            }
        }
 public void MissingMethodCall()
 {
     string        xml          = @"<?xml version=""1.0"" ?> <elem/>";
     StringReader  sr           = new StringReader(xml);
     var           deserializer = new XmlRpcRequestDeserializer();
     XmlRpcRequest request      = deserializer.DeserializeRequest(sr, null);
 }
        public void TooManyParameters()
        {
            string xml = @"<?xml version=""1.0""?>
<methodCall>
<methodName>blogger.getUsersBlogs</methodName>
<params>
<param>
<value>
<string>ffffffabffffffce6dffffff93ffffffac29ffffffc9fffffff826ffffffdefffff
fc9ff\
ffffe43c0b763036ffffffa0fffffff3ffffffa963377716</string>
</value>
</param>
<param>
<value>
<string>myusername</string>
</value>
</param>
<param>
<value>
<string>mypassword</string>
</value>
</param>
</params>
</methodCall>";

            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, GetType());
        }
        public void InvalidXml()
        {
            string        xml          = @"<?xml version=""1.0"" ?> 
<methodCall> </duffMmethodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, null);
        }
        public void StructProperties()
        {
            string xml = @"<?xml version=""1.0""?>
<methodCall>
  <methodName>Foo</methodName>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>member1</name>
            <value>
              <i4>1</i4>
            </value>
          </member>
          <member>
            <name>member2</name>
            <value>
              <i4>2</i4>
            </value>
          </member>
          <member>
            <name>member-3</name>
            <value>
              <i4>3</i4>
            </value>
          </member>
          <member>
            <name>member-4</name>
            <value>
              <i4>4</i4>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>";

            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, null);

            Assert.AreEqual(request.args[0].GetType(), typeof(XmlRpcStruct),
                            "argument is XmlRpcStruct");
            XmlRpcStruct xrs = (XmlRpcStruct)request.args[0];

            Assert.IsTrue(xrs.Count == 4, "XmlRpcStruct has 4 members");
            Assert.IsTrue(xrs.ContainsKey("member1") && (int)xrs["member1"] == 1,
                          "member1");
            Assert.IsTrue(xrs.ContainsKey("member2") && (int)xrs["member2"] == 2,
                          "member2");
            Assert.IsTrue(xrs.ContainsKey("member-3") && (int)xrs["member-3"] == 3,
                          "member-3");
            Assert.IsTrue(xrs.ContainsKey("member-4") && (int)xrs["member-4"] == 4,
                          "member-4");
        }
        public void MissingParams()
        {
            string        xml          = @"<?xml version=""1.0"" ?> 
<methodCall>
<methodName>TestString</methodName> 
</methodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, null);
        }
        public void NoParam1()
        {
            string        xml        = @"<?xml version=""1.0"" ?> 
<methodCall>
<methodName>MethodNoArgs</methodName> 
<params/>
</methodCall>";
            StringReader  sr         = new StringReader(xml);
            var           serializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request    = serializer.DeserializeRequest(sr, this.GetType());
        }
Exemple #12
0
        /// <summary>Classes Main method.</summary>
        /// <remarks>This method opens an XML file as a <c>StreamReader</c> and then asks
        /// <c>XmlRpcRequestDeserializer.Parse</c> to deserialize it into an <c>XmlRpcRequest</c>. The
        /// resultant request is now displayed.
        /// </remarks>
        public static void Main(String[] args)
        {
            Logger.Delegate = new Logger.LoggerDelegate(WriteEntry);
            XmlRpcRequestDeserializer deserializer = new XmlRpcRequestDeserializer();

            Console.WriteLine("Attempting to deserialize " + args[0]);
            StreamReader  input = new StreamReader(args[0]);
            XmlRpcRequest req   = (XmlRpcRequest)deserializer.Deserialize(input);

            Console.WriteLine(req);
        }
Exemple #13
0
        public void DeserializeMassimo()
        {
            StringReader  sr           = new StringReader(massimoRequest);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, this.GetType());

            Assert.AreEqual(request.method, "Send_Param", "method is Send_Param");
            Assert.AreEqual(typeof(string), request.args[0].GetType(),
                            "argument is string");
            Assert.AreEqual(typeof(object[]), request.args[1].GetType(),
                            "argument is object[]");
        }
        public void DateTimeLocales()
        {
            CultureInfo oldci = Thread.CurrentThread.CurrentCulture;

            try
            {
                foreach (string locale in Utils.GetLocales())
                {
                    try
                    {
                        CultureInfo ci = new CultureInfo(locale);
                        Thread.CurrentThread.CurrentCulture = ci;
                        if (ci.LCID == 0x401 || // ar-SA  (Arabic - Saudi Arabia)
                            ci.LCID == 0x465 || // div-MV (Dhivehi - Maldives)
                            ci.LCID == 0x41e)   // th-TH  (Thai - Thailand)
                        {
                            break;
                        }

                        DateTime dt = new DateTime(1900, 01, 02, 03, 04, 05);
                        while (dt < DateTime.Now)
                        {
                            Stream        stm = new MemoryStream();
                            XmlRpcRequest req = new XmlRpcRequest();
                            req.args   = new Object[] { dt };
                            req.method = "Foo";
                            var ser = new XmlRpcRequestSerializer();
                            ser.SerializeRequest(stm, req);
                            stm.Position = 0;

                            var           deserializer = new XmlRpcRequestDeserializer();
                            XmlRpcRequest request      = deserializer.DeserializeRequest(stm, null);

                            Assert.IsTrue(request.args[0] is DateTime,
                                          "argument is DateTime");
                            DateTime dt0 = (DateTime)request.args[0];
                            Assert.AreEqual(dt0, dt, "DateTime argument 0");
                            dt += new TimeSpan(100, 1, 1, 1);
                        }
                    }
                    catch (Exception ex)
                    {
                        Assert.Fail(String.Format("unexpected exception {0}: {1}",
                                                  locale, ex.Message));
                    }
                }
            }
            finally
            {
                Thread.CurrentThread.CurrentCulture = oldci;
            }
        }
Exemple #15
0
        [Ignore("Unsupported due to migration")] // [ExpectedException(typeof(XmlRpcInvalidParametersException))]
        public void DeserializeObjectParamsInsufficientParams()
        {
            string xml =
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>Foo1</methodName>
  <params>
  </params>
</methodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, this.GetType());
        }
        public void EmptyParam1()
        {
            string        xml        = @"<?xml version=""1.0"" ?> 
<methodCall>
<methodName>TestString</methodName> 
<params>
  <param/>
</params>
</methodCall>";
            StringReader  sr         = new StringReader(xml);
            var           serializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request    = serializer.DeserializeRequest(sr, null);
        }
 public void ISO_8859_1()
 {
     using (Stream stm = new FileStream("testdocuments/iso-8859-1_request.xml",
                                        FileMode.Open, FileAccess.Read))
     {
         var           deserializer = new XmlRpcRequestDeserializer();
         XmlRpcRequest request      = deserializer.DeserializeRequest(stm, null);
         Assert.AreEqual(request.args[0].GetType(), typeof(string),
                         "argument is string");
         Assert.AreEqual((string)request.args[0], "hæ hvað segirðu þá",
                         "argument is 'hæ hvað segirðu þá'");
     }
 }
        public void FlatXml()
        {
            string        xml          = @"<?xml version=""1.0"" ?><methodCall><methodName>TestString</methodName><params><param><value>test string</value></param></params></methodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, null);

            Assert.AreEqual(request.method, "TestString", "method is TestString");
            Assert.AreEqual(request.args[0].GetType(), typeof(string),
                            "argument is string");
            Assert.AreEqual((string)request.args[0], "test string",
                            "argument is 'test string'");
        }
        public void NoParam2()
        {
            string        xml          = @"<?xml version=""1.0"" ?> 
<methodCall>
  <methodName>MethodNoArgs</methodName> 
  <params>
  </params>
</methodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, this.GetType());
            //Console.WriteLine("");
        }
Exemple #20
0
        [Ignore("Unsupported due to migration")] // [ExpectedException(typeof(XmlRpcInvalidXmlRpcException))]
        public void DeserializeLinisgreEmptyParam()
        {
            string xml =
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>Linisgre</methodName>
  <params>
    <param/>
  </params>
</methodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, this.GetType());
        }
        public void ZeroLengthMethodName()
        {
            string        xml          = @"<?xml version=""1.0"" ?> 
<methodCall>
<methodName></methodName> 
<params>
  <param>
    <value>test string</value>
  </param>
</params>
</methodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, null);
        }
        public void NegativeOverflowI8()
        {
            string        xml          = @"<?xml version=""1.0"" ?> 
<methodCall>
<methodName>TestInt</methodName> 
<params>
  <param>
    <value><i8>-9999999999999999999999999999999999999999999</i8></value>
  </param>
</params>
</methodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, null);
        }
        public void TwoLeadingSpace()
        {
            string xml = @"<?xml version=""1.0""?>
<methodCall><methodName>rtx.EchoString</methodName>
<params>
<param><value>  ddd</value></param>
</params></methodCall>";

            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, GetType());

            Assert.AreEqual(request.args[0].GetType(), typeof(string),
                            "argument is string");
            Assert.AreEqual("  ddd", request.args[0]);
        }
Exemple #24
0
        public void DeserializeZeroParameters()
        {
            string xml =
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>FooZeroParameters</methodName>
  <params />
</methodCall>";
            StringReader  sr         = new StringReader(xml);
            var           serializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request    = serializer.DeserializeRequest(sr,
                                                                     this.GetType());

            Assert.AreEqual(request.method, "FooZeroParameters",
                            "method is FooZeroParameters");
            Assert.AreEqual(0, request.args.Length, "no arguments");
        }
        public void InvalidInteger()
        {
            string        xml          = @"<?xml version=""1.0"" ?> 
<methodCall>
<methodName>TestInt</methodName> 
<params>
  <param>
    <value><i4>12kiol</i4></value>
  </param>
</params>
</methodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, null);

            Assert.Fail("Invalid integer should cause exception");
        }
Exemple #26
0
        public void DeserializeParamsEmpty()
        {
            string xml =
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>Foo</methodName>
  <params/>
</methodCall>";
            StringReader  sr         = new StringReader(xml);
            var           serializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request    = serializer.DeserializeRequest(sr, this.GetType());

            Assert.AreEqual(request.method, "Foo", "method is Foo");
            Assert.AreEqual(request.args[0].GetType(), typeof(object[]),
                            "argument is obj[]");
            Assert.AreEqual((request.args[0] as object[]).Length, 0,
                            "argument is empty array of object");
        }
        public void TooFewParameters()
        {
            string xml = @"<?xml version=""1.0""?>
<methodCall>
<methodName>blogger.getUsersBlogs</methodName>
<params>
<param>
<value>
<string>myusername</string>
</value>
</param>
</params>
</methodCall>";

            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, GetType());
        }
        public void Class()
        {
            string xml = @"<?xml version=""1.0""?>
<methodCall>
  <methodName>TestClassMethod</methodName>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>_int</name>
            <value>
              <i4>456</i4>
            </value>
          </member>
          <member>
            <name>_string</name>
            <value>
              <string>Test Class</string>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>";

            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, GetType());

            Assert.AreEqual(request.args[0].GetType(), typeof(TestClass),
                            "argument is TestClass");
//      XmlRpcStruct xrs = (XmlRpcStruct)request.args[0];
//      Assert.IsTrue(xrs.Count == 4, "XmlRpcStruct has 4 members");
//      Assert.IsTrue(xrs.ContainsKey("member1") && (int)xrs["member1"] == 1,
//        "member1");
//      Assert.IsTrue(xrs.ContainsKey("member2") && (int)xrs["member2"] == 2,
//        "member2");
//      Assert.IsTrue(xrs.ContainsKey("member-3") && (int)xrs["member-3"] == 3,
//        "member-3");
//      Assert.IsTrue(xrs.ContainsKey("member-4") && (int)xrs["member-4"] == 4,
//        "member-4");
        }
Exemple #29
0
        public void DeserializeRequestStructWithNil()
        {
            string        xml          = @"<?xml version=""1.0""?>
<methodCall>
    <methodName>StructWithArrayMethod</methodName>
    <params>
        <param>
            <value>
                <struct>
                    <member>
                        <name>ints</name>
                        <value>
                            <array>
                                <data>
                                    <value>
                                        <i4>1</i4>
                                    </value>
                                    <value>
                                        <nil />
                                    </value>
                                    <value>
                                        <i4>3</i4>
                                    </value>
                                </data>
                            </array>
                        </value>
                    </member>
                </struct>
            </value>
        </param>
    </params>
</methodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, this.GetType());

            Assert.AreEqual(request.method, "StructWithArrayMethod", "method is TestString");
            Assert.AreEqual(1, request.args.Length);
            Assert.IsInstanceOf <StructWithArray>(request.args[0], "argument is StructWithArray");
            int?[] arg = ((StructWithArray)request.args[0]).ints;
            Assert.AreEqual(1, arg[0]);
            Assert.IsNull(arg[1]);
            Assert.AreEqual(3, arg[2]);
        }
        public void ZeroI8()
        {
            string        xml          = @"<?xml version=""1.0"" ?> 
<methodCall>
  <methodName>TestInt</methodName> 
  <params>
    <param>
      <value><i8>0</i8></value>
    </param>
  </params>
</methodCall>";
            StringReader  sr           = new StringReader(xml);
            var           deserializer = new XmlRpcRequestDeserializer();
            XmlRpcRequest request      = deserializer.DeserializeRequest(sr, null);

            Assert.AreEqual(request.args[0].GetType(), typeof(long),
                            "argument is long");
            Assert.AreEqual((long)request.args[0], 0, "argument is 0");
        }