public void SerializeRequest()
        {
            Stream        stm = new MemoryStream();
            XmlRpcRequest req = new XmlRpcRequest();

            req.args   = new Object[] { IntEnum.Two };
            req.method = "Foo";
            var ser = new XmlRpcRequestSerializer();

            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            string     reqstr = tr.ReadToEnd();

            Assert.AreEqual(
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>Foo</methodName>
  <params>
    <param>
      <value>
        <i4>2</i4>
      </value>
    </param>
  </params>
</methodCall>", reqstr);
        }
Exemple #2
0
        public void SerializeRequestNil()
        {
            Stream        stm = new MemoryStream();
            XmlRpcRequest req = new XmlRpcRequest();

            req.args   = new Object[] { null, 1234567 };
            req.method = "NilMethod";
            req.mi     = this.GetType().GetMethod("NilMethod");
            var ser = new XmlRpcRequestSerializer();

            ser.Indentation = 4;
            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            string     reqstr = tr.ReadToEnd();

            Assert.AreEqual(
                @"<?xml version=""1.0""?>
<methodCall>
    <methodName>NilMethod</methodName>
    <params>
        <param>
            <value>
                <nil />
            </value>
        </param>
        <param>
            <value>
                <i4>1234567</i4>
            </value>
        </param>
    </params>
</methodCall>", reqstr);
        }
        public void SerializeRequestWithEnumStringParam()
        {
            Stream        stm = new MemoryStream();
            XmlRpcRequest req = new XmlRpcRequest();

            req.args   = new Object[] { IntEnum.Two };
            req.method = "EnumMethod1";
            req.mi     = this.GetType().GetMethod("EnumMethod1");
            var ser = new XmlRpcRequestSerializer();

            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            string     reqstr = tr.ReadToEnd();

            Assert.AreEqual(
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>EnumMethod1</methodName>
  <params>
    <param>
      <value>
        <string>Two</string>
      </value>
    </param>
  </params>
</methodCall>", reqstr);
        }
        public void SerializeWithMappingOnType()
        {
            Stream        stm = new MemoryStream();
            XmlRpcRequest req = new XmlRpcRequest();

            req.args   = new object[] { IntEnum.Four };
            req.method = "Bar";
            var proxy = XmlRpcProxyGen.Create <TestMethods2>();

            req.mi = proxy.GetType().GetMethod("Bar");
            var ser = new XmlRpcRequestSerializer();

            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            string     reqstr = tr.ReadToEnd();

            Assert.AreEqual(
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>Bar</methodName>
  <params>
    <param>
      <value>
        <string>Four</string>
      </value>
    </param>
  </params>
</methodCall>", reqstr);
        }
Exemple #5
0
        private static IXmlRpcRequest Parse(String xmlrpcRequest)
        {
            XmlTextReader           reader = new XmlTextReader(new MemoryStream(Encoding.UTF8.GetBytes(xmlrpcRequest)));
            XmlRpcRequestSerializer parser = new XmlRpcRequestSerializer();

            return(parser.ReadRequest(reader, null, new TypeSerializerFactory()));
        }
Exemple #6
0
        public void SerializeObjectParams()
        {
            Stream        stm = new MemoryStream();
            XmlRpcRequest req = new XmlRpcRequest();

            req.args   = new Object[] { new object[] { 1, "one" } };
            req.method = "Foo";
            req.mi     = typeof(IFoo).GetMethod("Foo");
            var ser = new XmlRpcRequestSerializer();

            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            string     reqstr = tr.ReadToEnd();

            Assert.AreEqual(
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>Foo</methodName>
  <params>
    <param>
      <value>
        <i4>1</i4>
      </value>
    </param>
    <param>
      <value>
        <string>one</string>
      </value>
    </param>
  </params>
</methodCall>", reqstr);
        }
Exemple #7
0
        public object Invoke(MethodInfo methodInfo, params object[] parameters)
        {
            var request = XmlRpcClientProtocol.MakeXmlRpcRequest(methodInfo, parameters);

            using var memoryStream = new MemoryStream();
            var serializer = new XmlRpcRequestSerializer(Configuration);

            serializer.SerializeRequest(memoryStream, request);

            memoryStream.Seek(0, SeekOrigin.Begin);
            using var requestMessage = new HttpRequestMessage()
                  {
                      Method  = HttpMethod.Post,
                      Content = new StreamContent(memoryStream)
                  };

            using var response = _client.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead, CancellationToken.None).ConfigureAwait(false).GetAwaiter().GetResult();
            response.EnsureSuccessStatusCode();

            using var responseStream = response.Content.ReadAsStreamAsync().ConfigureAwait(false).GetAwaiter().GetResult();
            var deserializer   = new XmlRpcResponseDeserializer(Configuration);
            var responseAnswer = deserializer.DeserializeResponse(responseStream, request.MethodInfo.ReturnType);

            return(responseAnswer.ReturnValue);
        }
Exemple #8
0
        public void WriteXmlRpcRequest()
        {
            XmlRpcRequest           request    = new XmlRpcRequest("examples.getStateName", new Object[] { 41, "32" });
            StringBuilder           sb         = new StringBuilder();
            XmlTextWriter           writer     = new XmlTextWriter(new StringWriter(sb));
            XmlRpcRequestSerializer serializer = new XmlRpcRequestSerializer();

            serializer.WriteRequest(writer, request, null, new TypeSerializerFactory());//.WriteRequest(writer, request, null, new TypeSerializerFactory());
            Assert.IsEqualTo(sb.ToString(), @"<?xml version=""1.0"" encoding=""utf-16""?><methodCall><methodName>examples.getStateName</methodName><params><param><value><i4>41</i4></value></param><param><value><string>32</string></value></param></params></methodCall>");
        }
Exemple #9
0
 public override string ToRawString(Direction direction)
 {
     if (direction == Direction)
     {
         StringBuilder sb = new StringBuilder(4096);
         if (m_headers != null)
         {
             if (m_headers.ContainsKey("method"))
             {
                 sb.Append(m_headers["method"]);
                 sb.Append(": ");
                 sb.Append(Host);
                 sb.AppendLine();
             }
             m_headers.Remove("host");
             foreach (KeyValuePair <string, string> kvp in m_headers)
             {
                 if (kvp.Key == "method")
                 {
                     continue;
                 }
                 sb.Append(kvp.Key);
                 sb.Append(' ');
                 sb.Append(kvp.Value);
                 sb.AppendLine();
             }
             sb.AppendLine();
         }
         using (MemoryStream ms = new MemoryStream(1024))
         {
             using (XmlTextWriter xml = new XmlTextWriter(ms, new UTF8Encoding(false)))
             {
                 if (Data is XmlRpcResponse)
                 {
                     var xrpcr = new XmlRpcResponseSerializer();
                     xrpcr.Serialize(xml, Data);
                 }
                 else
                 {
                     var xrpcr = new XmlRpcRequestSerializer();
                     xrpcr.Serialize(xml, Data);
                 }
                 xml.Flush();
                 sb.Append(UTF8Encoding.UTF8.GetString(ms.ToArray()));
             }
         }
         return(sb.ToString());
     }
     else
     {
         return(string.Empty);
     }
 }
        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 #11
0
        public void SerializeRequestStructArrayWithNil()
        {
            Stream        stm = new MemoryStream();
            XmlRpcRequest req = new XmlRpcRequest();

            req.args = new Object[] { new StructWithArray {
                                          ints = new int?[] { 1, null, 3 }
                                      } };
            req.method = "NilMethod";
            req.mi     = this.GetType().GetMethod("NilMethod");
            var ser = new XmlRpcRequestSerializer();

            ser.Indentation = 4;
            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            string     reqstr = tr.ReadToEnd();

            Assert.AreEqual(
                @"<?xml version=""1.0""?>
<methodCall>
    <methodName>NilMethod</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>", reqstr);
        }
Exemple #12
0
        public void SerializeRequestArrayWithNull()
        {
            Stream        stm = new MemoryStream();
            XmlRpcRequest req = new XmlRpcRequest();

            string[] array = new string[] { "AAA", null, "CCC" };
            req.args   = new Object[] { array };
            req.method = "ArrayMethod";
            req.mi     = this.GetType().GetMethod("ArrayMethod");
            var ser = new XmlRpcRequestSerializer();

            ser.Indentation = 4;
            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            string     reqstr = tr.ReadToEnd();

            Assert.AreEqual(
                @"<?xml version=""1.0""?>
<methodCall>
    <methodName>ArrayMethod</methodName>
    <params>
        <param>
            <value>
                <array>
                    <data>
                        <value>
                            <string>AAA</string>
                        </value>
                        <value>
                            <nil />
                        </value>
                        <value>
                            <string>CCC</string>
                        </value>
                    </data>
                </array>
            </value>
        </param>
    </params>
</methodCall>", reqstr);
        }
Exemple #13
0
        public void SerializeIntNoParams()
        {
            Stream        stm = new MemoryStream();
            XmlRpcRequest req = new XmlRpcRequest();

            req.args   = new object[] { new int[] { 1, 2, 3 } };
            req.method = "BarNotParams";
            req.mi     = typeof(IFoo).GetMethod("BarNotParams");
            var ser = new XmlRpcRequestSerializer();

            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            string     reqstr = tr.ReadToEnd();

            Assert.AreEqual(
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>BarNotParams</methodName>
  <params>
    <param>
      <value>
        <array>
          <data>
            <value>
              <i4>1</i4>
            </value>
            <value>
              <i4>2</i4>
            </value>
            <value>
              <i4>3</i4>
            </value>
          </data>
        </array>
      </value>
    </param>
  </params>
</methodCall>", reqstr);
        }
Exemple #14
0
        public void SerializeMassimo()
        {
            object[] param1 = new object[] { "test/Gain1", "Gain", 1, 1,
                                             new double[] { 0.5 } };
            object[] param2 = new object[] { "test/METER", "P1", 1, 1,
                                             new double[] { -1.0 } };
            Stream        stm = new MemoryStream();
            XmlRpcRequest req = new XmlRpcRequest();

            req.args = new Object[] { "IFTASK",
                                      new object[] { param1, param2 } };
            req.method = "Send_Param";
            req.mi     = this.GetType().GetMethod("Send_Param");
            var ser = new XmlRpcRequestSerializer();

            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            string     reqstr = tr.ReadToEnd();

            Assert.AreEqual(massimoRequest, reqstr);
        }
Exemple #15
0
        public void SerializeZeroParametersNoParams()
        {
            Stream        stm = new MemoryStream();
            XmlRpcRequest req = new XmlRpcRequest();

            req.args   = new Object[0];
            req.method = "FooZeroParameters";
            req.mi     = typeof(IFoo).GetMethod("FooZeroParameters");
            var ser = new XmlRpcRequestSerializer();

            ser.UseEmptyParamsTag = false;
            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            string     reqstr = tr.ReadToEnd();

            Assert.AreEqual(
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>FooZeroParameters</methodName>
</methodCall>", reqstr);
        }
        public void SerializeWithMappingOnInterface()
        {
            Stream        stm = new MemoryStream();
            XmlRpcRequest req = new XmlRpcRequest();

            req.args = new Object[]
            {
                IntEnum.Zero,
                new IntEnum[] { IntEnum.One, IntEnum.Two },
                new ItfEnumClass
                {
                    IntEnum  = ItfEnum.One,
                    intEnum  = ItfEnum.Two,
                    IntEnums = new ItfEnum[] { ItfEnum.One, ItfEnum.Two },
                    intEnums = new ItfEnum[] { ItfEnum.Three, ItfEnum.Four },
                }
            };
            req.method = "MappingOnMethod";
            req.mi     = this.GetType().GetMethod("MappingOnMethod");
            var ser = new XmlRpcRequestSerializer();

            ser.SerializeRequest(stm, req);
            stm.Position = 0;
            TextReader tr     = new StreamReader(stm);
            string     reqstr = tr.ReadToEnd();

            Assert.AreEqual(
                @"<?xml version=""1.0""?>
<methodCall>
  <methodName>MappingOnMethod</methodName>
  <params>
    <param>
      <value>
        <string>Zero</string>
      </value>
    </param>
    <param>
      <value>
        <array>
          <data>
            <value>
              <string>One</string>
            </value>
            <value>
              <string>Two</string>
            </value>
          </data>
        </array>
      </value>
    </param>
    <param>
      <value>
        <struct>
          <member>
            <name>IntEnum</name>
            <value>
              <string>One</string>
            </value>
          </member>
          <member>
            <name>IntEnums</name>
            <value>
              <array>
                <data>
                  <value>
                    <string>One</string>
                  </value>
                  <value>
                    <string>Two</string>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>intEnum</name>
            <value>
              <string>Two</string>
            </value>
          </member>
          <member>
            <name>intEnums</name>
            <value>
              <array>
                <data>
                  <value>
                    <string>Three</string>
                  </value>
                  <value>
                    <string>Four</string>
                  </value>
                </data>
              </array>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>", reqstr);
        }
Exemple #17
0
        private IXmlRpcRequest GetRequest(IXmlRpcStreamRequestConfig config, Stream inputStream)
        {
            XmlRpcRequestSerializer parser = new XmlRpcRequestSerializer();

            return(parser.ReadRequest(new XmlTextReader(inputStream), config, TypeSerializerFactory));
        }
Exemple #18
0
        public void ParseXmlRpcRequest()
        {
            String        xmlrpcRequest = @"<methodCall>
        <methodName>sample</methodName>
        <params>
            <param><value>eW91IGNhbid0IHJlYWQgdGhpcyE=</value></param>
            <param><value><i4>3</i4></value></param>
            <param><value><int>-7</int></value></param>
            <param><value><i8>1234567890</i8></value></param>
            <param><value><boolean>1</boolean></value></param>
            <param><value><boolean>false</boolean></value></param>
            <param><value><string>hello xmlrpc</string></value></param>
            <param><value><double>-3.145</double></value></param>
            <param><value><dateTime.iso8601>19980717T14:08:55</dateTime.iso8601></value></param>
            <param><value><base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64></value></param>
            <param><value>
                <array>
                   <data>
                      <value><i4>12</i4></value>
                      <value><string>Egypt</string></value>
                      <value><boolean>0</boolean></value>
                      <value><i4>-31</i4></value>
                    </data>
                </array>
            </value></param>
            <param><value>
                <struct>
                    <member>
                        <name>lowerBound</name>
                        <value><i4>18</i4></value>
                    </member>
                    <member>
                        <name>upperBound</name>
                        <value><i4>139</i4></value>
                    </member>
                </struct>
            </value></param>
        </params>
    </methodCall>";
            XmlTextReader reader        = new XmlTextReader(new MemoryStream(Encoding.UTF8.GetBytes(xmlrpcRequest)));
            //IXmlRpcRequest request = new XmlRpcRequestSerializer(null, new TypeFactory(), reader);
            XmlRpcRequestSerializer parser  = new XmlRpcRequestSerializer();
            IXmlRpcRequest          request = parser.ReadRequest(reader, null, new TypeSerializerFactory());

            Assert.IsEqualTo(request.MethodName, "sample");
            Assert.IsEqualTo(request.Parameters[0], "eW91IGNhbid0IHJlYWQgdGhpcyE=");
            Assert.IsEqualTo(request.Parameters[1], 3);
            Assert.IsEqualTo(request.Parameters[2], -7);
            Assert.IsEqualTo(request.Parameters[3], 1234567890L);
            Assert.IsEqualTo(request.Parameters[4], true);
            Assert.IsEqualTo(request.Parameters[5], false);
            Assert.IsEqualTo(request.Parameters[6], "hello xmlrpc");
            Assert.IsEqualTo(request.Parameters[7], -3.145D);
            Assert.IsEqualTo(request.Parameters[8], new DateTime(1998, 7, 17, 14, 8, 55));
            Assert.IsSequenceEqualTo((Byte[])request.Parameters[9], Convert.FromBase64String("eW91IGNhbid0IHJlYWQgdGhpcyE="));

            Object[] array = (Object[])request.Parameters[10];
            Assert.IsEqualTo(array[0], 12);
            Assert.IsEqualTo(array[1], "Egypt");
            Assert.IsEqualTo(array[2], false);
            Assert.IsEqualTo(array[3], -31);

            IDictionary <String, Object> map = (IDictionary <String, Object>)request.Parameters[11];

            Assert.IsEqualTo(map["lowerBound"], 18);
            Assert.IsEqualTo(map["upperBound"], 139);
            //Assert.IsEqualTo(request.Parameters[10],);
        }