Ejemplo n.º 1
0
        public void LocationMessageReceivedEventArgs()
        {
            string s = @"<xml>
  <ToUserName><![CDATA[gh_712b448adf85]]></ToUserName>
<FromUserName><![CDATA[oI3UkuL9uZxTOuj--HHMSMTlO3ks]]></FromUserName>
<CreateTime>1490872329</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Location_X>23.134521</Location_X>
<Location_Y>113.358803</Location_Y>
<Scale>20</Scale>
<Label><![CDATA[位置信息]]></Label>
<MsgId>6403247895999455936</MsgId>
</xml>";

            var result = XmlConvert.DeserializeObject <LocationMessageReceivedEventArgs>(s);

            Assert.Equal("gh_712b448adf85", result.ToUserName);
            Assert.Equal("oI3UkuL9uZxTOuj--HHMSMTlO3ks", result.FromUserName);
            Assert.Equal(1490872329, WeixinTimestampHelper.FromLocalTime(result.CreateTime));
            Assert.Equal(ReceivedMsgType.text, result.MsgType);
            Assert.Equal((decimal)23.134521, result.Latitude);
            Assert.Equal((decimal)113.358803, result.Longitude);
            Assert.Equal(20, result.Scale);
            Assert.Equal("位置信息", result.Label);
            Assert.Equal(6403247895999455936, result.MsgId);
        }
Ejemplo n.º 2
0
        public async IAsyncEnumerable <(int Id, string Name)> FindCharacter(string characterName)
        {
            if (!CharacterCache.TryGetValue(characterName, out var id))
            {
                Log.Debug($@"Searching for character {characterName}...");
                using var charResponse = await HttpClient.GetAsync($@"api.php?function=search&in=charname&for={characterName}");

                await using var charInfoStream = await charResponse.Content.ReadAsStreamAsync();

                var charInfo = XmlConvert.DeserializeObject <SearchResponse <Member> >(charInfoStream);

                if (charInfo.Relevant != null)
                {
                    Log.Debug($@"{charInfo.Relevant.Results.Count} relevant matches found for {characterName}");
                    foreach (var entry in charInfo.Relevant.Results)
                    {
                        yield return(entry.Id, entry.Name);
                    }
                }
                else if (charInfo.Direct != null)
                {
                    Log.Debug($@"Direct match found for {characterName}");
                    CharacterCache[charInfo.Direct.Result.Name] = charInfo.Direct.Result.Id;
                    yield return(charInfo.Direct.Result.Id, charInfo.Direct.Result.Name);
                }
                else
                {
                    Log.Warn($@"No character matches found for {characterName}");
                }
            }
            else
            {
                yield return(id, characterName);
            }
        }
Ejemplo n.º 3
0
        public void TestDeserializeObject_Setting_Namespaces_Indented_OmitXmlDeclaration()
        {
            string xml = EmbeddedResourceLoader.LoadAsString(
                @"Sangmado.Inka.Serialization.UnitTests.TestXml.Employee-DennisGao-Indented-OmitXmlDeclaration.xml");

            var expected = XmlConvert.DeserializeObject <Employee>(xml);

            var actual = new Employee()
            {
                Company = new Company()
                {
                    Id   = 123,
                    Name = "Sangmado",
                },
                Person = new Person()
                {
                    Id        = 11111,
                    FullName  = "Dennis Gao",
                    FirstName = "Dennis",
                    LastName  = "Gao",
                },
            };

            Assert.IsNotNull(expected);
            Assert.IsNotNull(expected.Company);
            Assert.IsNotNull(expected.Person);
            Assert.AreEqual(expected.Company.Name, actual.Company.Name);
            Assert.AreEqual(expected.Person.FullName, actual.Person.FullName);
        }
Ejemplo n.º 4
0
        private static Guid?GetErrorLogSection()
        {
            try
            {
                var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;

                string pathToConfigFile = Path.Combine(baseDirectory, "web.config");

                var configMap = new ExeConfigurationFileMap
                {
                    ExeConfigFilename = pathToConfigFile
                };
                var config       = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
                var elmahSection = config.GetSection("elmah/errorLog");
                var xml          = elmahSection.SectionInformation.GetRawXml();
                var obj          = XmlConvert.DeserializeObject <ErrorLogXml>(xml);
                if (string.IsNullOrEmpty(obj?.LogId))
                {
                    return(null);
                }
                return(new Guid(obj.LogId));
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Se obtiene la información de la
        /// </summary>
        /// <returns></returns>
        public async Task <T> Get()
        {
            try
            {
                //Se hace un Get resquest, génerico y asíncrono.
                var response = await httpclient.GetAsync(new Uri(url));

                if (response.IsSuccessStatusCode)
                {
                    //se lee el contenido de la respuesta.
                    string content = await response.Content.ReadAsStringAsync();

                    //se obtiene un modelo del tipo T del contenido de la respuesta.
                    var desObject = XmlConvert.DeserializeObject <T>(content);
                    return(desObject);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }


            return(null);;
        }
        public void MustSerializable_ResponseTextMessage()
        {
            string excepted = @"<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1490872329</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>";

            var o = new ResponseMessageText
            {
                ToUserName   = "******",
                FromUserName = "******",
                CreateTime   = WeixinTimestampHelper.ToLocalTime(1490872329),
                Content      = "你好"
            };

            var result = XmlConvert.SerializeObject(o);

            var deserializedExcepted = XmlConvert.DeserializeObject <ResponseMessageText>(excepted);
            var reserializedExcepted = XmlConvert.SerializeObject(deserializedExcepted);

            Assert.Equal(reserializedExcepted, result);
        }
Ejemplo n.º 7
0
        public static void DeserializeObject_Invalid()
        {
            Assert.Throws <ArgumentNullException>("type", () => XmlConvert.DeserializeObject(null, "<xml></xml>")); //Type is null
            Assert.Throws <ArgumentNullException>("xml", () => XmlConvert.DeserializeObject(typeof(string), null)); //Xml is null

            Assert.Throws <XmlException>(() => XmlConvert.DeserializeObject(typeof(string), "hello"));              //Xml is invalid
        }
Ejemplo n.º 8
0
        public static void Deserialize_InvalidDictionaryXml_IgnoresInvalid()
        {
            string xml = @"
<CollectionObject>
    <DictionaryValue>
        <Element>
            <Key>a</Key>
            <Value>1</Value>
        </Element>
        <Element>
            <Key>b</Key>
        </Element>
        <Element>
            <Value>3</Value>
        </Element>
        <Element>
        </Element>
        <Element>
            <Key>e</Key>
            <Value>5</Value>
        </Element>
    </DictionaryValue>
</CollectionObject>";

            CollectionObject co = XmlConvert.DeserializeObject <CollectionObject>(xml);

            Assert.Equal(2, co.DictionaryValue.Count);
        }
Ejemplo n.º 9
0
        public static void Deserialize_NoXmlElement_NullProperty()
        {
            string xml = @"<BasicObject></BasicObject>";

            BasicObject co = XmlConvert.DeserializeObject <BasicObject>(xml);

            Assert.Null(co.StringValue);
        }
Ejemplo n.º 10
0
        public static void Refresh()
        {
            if (!File.Exists(SettingsPath))
            {
                File.WriteAllText(SettingsPath, XmlConvert.Serialize(new T()));
            }

            _instance = XmlConvert.DeserializeObject <T>(File.ReadAllText(SettingsPath));
        }
Ejemplo n.º 11
0
        public static async Task <T> ReadXml <T>(string fileName) where T : new()
        {
            if (!File.Exists(fileName))
            {
                throw new FileNotFoundException(fileName);
            }
            var result = await Read(fileName);

            return(XmlConvert.DeserializeObject <T>(result.toString(), XmlConvertOptions.ExcludeTypes));
        }
Ejemplo n.º 12
0
        private async Task ROSASTradeAsync(SoapDocument soapDocument)
        {
            string message = string.Empty;
            string xmlStr  = soapDocument.Args.FirstOrDefault(o => o.LocalName == "serviceParas")?.Value;

            try
            {
                var xmlServiceParas = XmlConvert.DeserializeObject <HebeiESBServiceParas>(xmlStr);

                if (xmlServiceParas == null || xmlServiceParas.ProvinceData.Count() == 0)
                {
                    throw new Exception("解析serviceParas失败");
                }

                bool isSuccess = true;
                var  ftpConfig = AppSettings.FtpSection.FirstOrDefault(o => o.Provider == "HebeiESB");
                foreach (var p in xmlServiceParas.ProvinceData)
                {
                    if (string.IsNullOrWhiteSpace(p.Path))
                    {
                        continue;
                    }
                    var success = await FtpUtil.Download(new FtpConfig
                    {
                        Host           = p.Ip,
                        UserName       = p.User,
                        Password       = p.Password,
                        Port           = 21,
                        RemotePath     = p.Path,
                        BaseDirectory  = ftpConfig.BaseDirectory,
                        LocalDirectory = ftpConfig.LocalDirectory,
                        RenameFormat   = ftpConfig.RenameFormat,
                        CategoryMaps   = ftpConfig.CategoryMaps
                    });

                    isSuccess &= success;
                    string successString = success ? "成功" : "失败";
                    message += string.Format($"下载{successString}:ftp://{p.User}:{p.Password}@{p.Ip}{p.Path}", p, successString);
                }

                if (!isSuccess)
                {
                    await ErrorRequestAsync(null, message);
                }
                else
                {
                    await SuccessRequestAsync(null, message : message);
                }
            }
            catch (Exception ex)
            {
                Logger.Error($"[HBESBService]ROSASTrade异常:--{ex.Message}", ex);
                await ErrorRequestAsync(null, ex.Message);
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 加载本地游戏配置。
        /// </summary>
        public void Load()
        {
            var asset = Resources.Load("Config/" + mConfigFileName) as TextAsset;

            if (asset == null)
            {
                Debug.LogWarning("gameconfig not exist.");
                return;
            }
            GameConfig = XmlConvert.DeserializeObject <GameConfig>(asset.text);
        }
Ejemplo n.º 14
0
        public static void Deserialize_EmptyCollectionXml_CreatesEmptyCollection()
        {
            string xml = @"
<CollectionObject>
    <CollectionValue>
    </CollectionValue>
</CollectionObject>";

            CollectionObject co = XmlConvert.DeserializeObject <CollectionObject>(xml);

            Assert.Equal(0, co.CollectionValue.Count);
        }
        public void MustSerializable_ResponseNewsMessage()
        {
            string excepted = @"<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1490872329</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>2</ArticleCount>
<Articles>
<item>
<Title><![CDATA[title1]]></Title> 
<Description><![CDATA[description1]]></Description>
<PicUrl><![CDATA[picurl]]></PicUrl>
<Url><![CDATA[url]]></Url>
</item>
<item>
<Title><![CDATA[title]]></Title>
<Description><![CDATA[description]]></Description>
<PicUrl><![CDATA[picurl]]></PicUrl>
<Url><![CDATA[url]]></Url>
</item>
</Articles>
</xml>";

            var o = new ResponseMessageNews
            {
                ToUserName   = "******",
                FromUserName = "******",
                CreateTime   = WeixinTimestampHelper.ToLocalTime(1490872329),
            };

            o.Articles.Add(new Article
            {
                Title       = "title1",
                Description = "description1",
                PicUrl      = "picurl",
                Url         = "url"
            });
            o.Articles.Add(new Article
            {
                Title       = "title",
                Description = "description",
                PicUrl      = "picurl",
                Url         = "url"
            });

            var result = XmlConvert.SerializeObject(o);

            var deserializedExcepted = XmlConvert.DeserializeObject <ResponseMessageNews>(excepted);
            var reserializedExcepted = XmlConvert.SerializeObject(deserializedExcepted);

            Assert.Equal(reserializedExcepted, result);
        }
Ejemplo n.º 16
0
        public async Task <T> SendRequest <T>(ApiMethodEnum apiMethod, ApiSerializerEnum serializer, string url, Dictionary <string, string> headers = null, object body = null) where T : class
        {
            var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

            httpWebRequest.ContentType            = "application/json";
            httpWebRequest.Method                 = apiMethod.ToString();
            httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;


            if (headers != null)
            {
                foreach (var(key, value) in headers)
                {
                    httpWebRequest.Headers.Add(key, value);
                }
            }

            if (body != null)
            {
                await using var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream());
                var json = JsonConvert.SerializeObject(body, Formatting.None);
                streamWriter.Write(json);
                streamWriter.Flush();
                streamWriter.Close();
            }

            using var response = (HttpWebResponse) await httpWebRequest.GetResponseAsync();

            await using var stream = response.GetResponseStream();
            using var reader       = new StreamReader(stream ?? throw new InvalidOperationException());
            var apiResult = await reader.ReadToEndAsync();

            if (string.IsNullOrEmpty(apiResult))
            {
                return(null);
            }

            switch (serializer)
            {
            case ApiSerializerEnum.None:
                return((T)Convert.ChangeType(apiResult, typeof(T)));

            case ApiSerializerEnum.Json:
                return(JsonConvert.DeserializeObject <T>(apiResult));

            case ApiSerializerEnum.XML:
                return(XmlConvert.DeserializeObject <T>(apiResult));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Ejemplo n.º 17
0
        public async Task <IPingResponse> PlacementCheckAsync(IPingRequest request)
        {
            var urlString    = $"{AffiliateServiceEndpoint}/Ping?{request.ToQuerystring()}";
            var xmlString    = await new HttpClient().GetStringAsync(new Uri(urlString)).ConfigureAwait(false);
            var pingResponse = XmlConvert.DeserializeObject <PingResponse>(StripNamespacesFromPingResponseRoot(xmlString));

            if (!pingResponse.IsSuccess)
            {
                ErrorSignal.FromCurrentContext().Raise(new Exception($"AffiliateProxyService:PlacementCheckAsync - {pingResponse.RejectedReason} | {request.ToQuerystring()}"));
            }

            return(pingResponse);
        }
Ejemplo n.º 18
0
        public void ControllerXmlAPI()
        {
            TestController.TestSub sub = new TestController.TestSub()
            {
                IntProperty    = 123,
                StringProperty = SimpleControllerData
            };

            string raw  = client.UploadString($"{Address}/controller/TestPostXML", XmlConvert.SerializeObject(sub));
            var    data = XmlConvert.DeserializeObject <APIWrap>(raw).As <TestSub>();

            Assert.AreEqual(SimpleControllerData, data.Result.StringProperty, $"Received data incorrect, Exception: {data.Exception?.Message}");
        }
Ejemplo n.º 19
0
        public async Task <IPostResponse> SubmitLeadAsync(IPostRequest request)
        {
            var urlString    = $"{SemServiceEndpoint}/Post?{request.ToQuerystring()}";
            var xmlString    = await new HttpClient().GetStringAsync(new Uri(urlString)).ConfigureAwait(false);
            var postResponse = XmlConvert.DeserializeObject <PostResponse>(StripNamespacesFromPostResponseRoot(xmlString));

            if (!postResponse.IsSuccess)
            {
                ErrorSignal.FromCurrentContext().Raise(new Exception($"SEMProxyService:SubmitLeadAsync - {postResponse.RejectedReason} | {request.ToQuerystring()}"));
            }

            return(postResponse);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// 获取城市天气详情信息
        /// </summary>
        /// <param name="cityId">天气城市代号</param>
        /// <returns>城市天气详情信息</returns>
        public CityWeather GetCityWeather(string cityId)
        {
            string getUrl     = string.Format("http://wthrcdn.etouch.cn/WeatherApi?citykey={0}", cityId);
            string weatherXml = SimulateRequest.HttpClientGet(getUrl, true);

            if (string.IsNullOrWhiteSpace(weatherXml))
            {
                throw new WeatherException(-200, "请求到的天气数据Xml为空!");
            }
            CityWeather cityWeather = XmlConvert.DeserializeObject <CityWeather>(weatherXml);

            return(cityWeather);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Deserializes the specified <paramref name="value" /> into an object of <paramref name="valueType"/>.
        /// </summary>
        /// <param name="value">The stream from which to deserialize the object graph.</param>
        /// <param name="valueType">The type of the deserialized object.</param>
        /// <returns>An object of <paramref name="valueType"/>.</returns>
        /// <remarks>This method will deserialize, in the order specified, using one of either:<br />
        /// 1. the explicitly defined <see cref="XmlFormatterOptions.ReaderFormatter" /> delegate<br />
        /// 2. the implicit or explicit defined delegate in <see cref="XmlFormatterOptions.ReaderFormatters" /> dictionary<br />
        /// 3. if neither was specified, a default XML reader implementation will be used.</remarks>
        public override object Deserialize(Stream value, Type valueType)
        {
            var serializer = Options.Converter;

            if (serializer == null)
            {
                var formatter = Options.ParseReaderFormatter(valueType);
                serializer = DynamicXmlConverter.Create(null, formatter, options =>
                {
                    options.ReaderSettings = Options.ReaderSettings;
                    options.RootName       = Options.RootName;
                });
            }
            return(XmlConvert.DeserializeObject(value, valueType, serializer));
        }
        public void ReceivedEventArgs_Compatible()
        {
            IServiceCollection services = new ServiceCollection();

            services.Configure((Action <WeixinWelcomePageOptions>)(options =>
            {
                options.AppId          = "wxaf5aa2d87ff3b700";
                options.WebsiteToken   = "MdPhLRFuJ9X48WWQDHJA3nxIK";
                options.EncodingAESKey = "5o7tcB4nbWtcX76QyF1fi90FBt4ZxFD8N6oND0tHVa4";
            }));
            services.AddLogging();
            services.AddScoped <IWeixinMessageEncryptor, WeixinMessageEncryptor>();
            var sp             = services.BuildServiceProvider();
            var _encryptor     = sp.GetRequiredService <IWeixinMessageEncryptor>();
            var _loggerFactory = sp.GetRequiredService <ILoggerFactory>();
            var _logger        = _loggerFactory.CreateLogger("test");

            var xml = @" <xml>
<ToUserName><![CDATA[gh_08dc1481d8cc]]></ToUserName>
<FromUserName><![CDATA[oEylh5ksJ9m44qL7nXvHu0npUTww]]></FromUserName>
<CreateTime>1553425488</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[好]]></Content>
<MsgId>22239703566971011</MsgId>
<Encrypt><![CDATA[jF3WhwHgtyZ95HvHcWqaRLlbr0OkTNPY4ngqrbyZqyhoMWt1PnTnyXruXTdDxOlzVHdS3e1SPzneMNVInqPRWT9DkQuPuud3rJHv9VQc4efnQdGhtVXP5h2XXXqEVcDKTlaJj5fqcECF+KURkfAM+zlZI3PdqgsAq1v1sHsm2FeM8SeQ4IVlzJvPIiLVyjSxXJB4e0Wzy3VRqS5L4FWHzyEcEs90D0YmeIdHEsUjzcvEhX46MiAJyyzf8lq6GnuxxFFuAieUNLgVV7Y+LjhFY2ylNw8qI3/f/dL3hkm8Qr+IwYOvofqPVMVTgGcrTDTexvpRg8+gALeMGNYsDtjUpYKHeT02hZwFSRM/Bz4aXJ3AFiuL8pbC6u0WbFkfz0D+IIHRqKwnsqwFs97KlemI5Aa+8avcOWyuuqkxzE8L8Ic=]]></Encrypt>
</xml>";

            // HTTP/1.0 POST http://wx.steamlet.com/wx?signature=77b27c5651d7ec874f87d9ec7f953b922810f476&timestamp=1553425488&nonce=580423986&openid=oEylh5ksJ9m44qL7nXvHu0npUTww&encrypt_type=aes&msg_signature=a76bb4d3348628369b38e8fecebf5f0545d48786 text/xml 764
            var timestamp     = "1553425488";
            var nonce         = "580423986";
            var msg_signature = "a76bb4d3348628369b38e8fecebf5f0545d48786";
            var encrypt_type  = "aes";

            var received = XmlConvert.DeserializeObject <ReceivedEventArgs>(xml);

            if (encrypt_type == "aes")
            {
                var decryptedXml = _encryptor.Decrypt(msg_signature, timestamp, nonce, xml);
                Debug.WriteLine("Request Body[Decrypted]({0}): {1}", decryptedXml?.Length, decryptedXml);

                xml = decryptedXml;
            }

            var result = XmlConvert.DeserializeObject <ReceivedEventArgs>(xml);

            Assert.Equal("gh_08dc1481d8cc", result.ToUserName);
            Assert.Equal(ReceivedMsgType.text, result.MsgType);
        }
Ejemplo n.º 23
0
        public async Task PrefetchCharacterIds()
        {
            Log.Debug("Prefetching character ids...");
            using var response = await HttpClient.GetAsync(@"api.php?function=points");

            await using var responseStream = await response.Content.ReadAsStreamAsync();

            var info = XmlConvert.DeserializeObject <Response>(responseStream);

            foreach (var character in info.Players.Player)
            {
                CharacterCache[character.Name] = character.Id;
            }

            Log.Debug("Prefetch complete.");
        }
Ejemplo n.º 24
0
        public LocalXmlFileActorConfiguration(string localXmlFilePath)
        {
            if (string.IsNullOrEmpty(localXmlFilePath))
            {
                throw new ArgumentNullException("localXmlFilePath");
            }
            if (!File.Exists(localXmlFilePath))
            {
                throw new FileNotFoundException("Cannot find the xml actor configuration file.", localXmlFilePath);
            }
            _localXmlFilePath = localXmlFilePath;

            var fileContent = File.ReadAllText(_localXmlFilePath);

            _configuration = XmlConvert.DeserializeObject <XmlActorConfiguration>(fileContent);
        }
Ejemplo n.º 25
0
        public void SubscribeEventReceivedEventArgs()
        {
            string s = @"<xml><ToUserName><![CDATA[gh_712b448adf85]]></ToUserName>
<FromUserName><![CDATA[oI3UkuL9uZxTOuj--HHMSMTlO3ks]]></FromUserName>
<CreateTime>1490872329</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
</xml>";

            var result = XmlConvert.DeserializeObject <SubscribeEventReceivedEventArgs>(s);

            Assert.Equal("gh_712b448adf85", result.ToUserName);
            Assert.Equal("oI3UkuL9uZxTOuj--HHMSMTlO3ks", result.FromUserName);
            Assert.Equal(1490872329, WeixinTimestampHelper.FromLocalTime(result.CreateTime));
            Assert.Equal(ReceivedMsgType.@event, result.MsgType);
            Assert.Equal(ReceivedEventType.subscribe, result.Event);
        }
Ejemplo n.º 26
0
        public void ReceivedEventArgs()
        {
            string s = @"<xml>
  <ToUserName><![CDATA[gh_712b448adf85]]></ToUserName>
<FromUserName><![CDATA[oI3UkuL9uZxTOuj--HHMSMTlO3ks]]></FromUserName>
<CreateTime>1490872329</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[中文字符]]></Content>
<MsgId>6403247895999455936</MsgId>
</xml>";

            var result = XmlConvert.DeserializeObject <ReceivedEventArgs>(s);

            Assert.Equal("gh_712b448adf85", result.ToUserName);
            Assert.Equal("oI3UkuL9uZxTOuj--HHMSMTlO3ks", result.FromUserName);
            Assert.Equal(1490872329, WeixinTimestampHelper.FromLocalTime(result.CreateTime));
            Assert.Equal(ReceivedMsgType.text, result.MsgType);
        }
        public T DecodeMessage <T>(byte[] data, int dataOffset, int dataLength)
        {
            if (data == null)
            {
                throw new CannotDeserializeMessageException("The data which is to be deserialized cannot be null.");
            }

            if (CompressionEnabled)
            {
                string xml = Encoding.UTF8.GetString(GZipCompression.Decompress(data, dataOffset, dataLength));
                return(XmlConvert.DeserializeObject <T>(xml));
            }
            else
            {
                string xml = Encoding.UTF8.GetString(data, dataOffset, dataLength);
                return(XmlConvert.DeserializeObject <T>(xml));
            }
        }
Ejemplo n.º 28
0
        public static void SerializeDeserializeObject_Equal_Success <T>(T obj1, XmlConvertOptions options) where T : new()
        {
            T      obj2 = default(T);
            T      obj3 = default(T);
            string xml  = null;

            // Serializing and deserializing strings
            if (options == XmlConvertOptions.None)
            {
                xml  = XmlConvert.SerializeObject(obj1);
                obj2 = XmlConvert.DeserializeObject <T>(xml);
                obj3 = (T)XmlConvert.DeserializeObject(obj1.GetType(), xml);
            }
            else
            {
                xml  = XmlConvert.SerializeObject(obj1, options);
                obj2 = XmlConvert.DeserializeObject <T>(xml, options);
                obj3 = (T)XmlConvert.DeserializeObject(obj1.GetType(), xml, options);
            }

            Assert.Equal(obj1, obj2);
            Assert.Equal(obj1, obj3);

            // Serializing and deserializing XElements
            XElement element = null;

            if (options == XmlConvertOptions.None)
            {
                element = XmlConvert.SerializeXElement(obj1);
                obj2    = XmlConvert.DeserializeXElement <T>(element);
                obj3    = (T)XmlConvert.DeserializeXElement(obj1.GetType(), element);
            }
            else
            {
                element = XmlConvert.SerializeXElement(obj1, options);
                obj2    = XmlConvert.DeserializeXElement <T>(element, options);
                obj3    = (T)XmlConvert.DeserializeXElement(obj1.GetType(), element, options);
            }

            Assert.Equal(obj1, obj2);
            Assert.Equal(obj1, obj3);
        }
        public void ReceivedEventArgs_aes()
        {
            IServiceCollection services = new ServiceCollection();

            services.Configure((Action <WeixinWelcomePageOptions>)(options =>
            {
                options.AppId          = "wxaf5aa2d87ff3b700";
                options.WebsiteToken   = "MdPhLRFuJ9X48WWQDHJA3nxIK";
                options.EncodingAESKey = "5o7tcB4nbWtcX76QyF1fi90FBt4ZxFD8N6oND0tHVa4";
            }));
            services.AddLogging();
            services.AddScoped <IWeixinMessageEncryptor, WeixinMessageEncryptor>();
            var sp             = services.BuildServiceProvider();
            var _encryptor     = sp.GetRequiredService <IWeixinMessageEncryptor>();
            var _loggerFactory = sp.GetRequiredService <ILoggerFactory>();
            var _logger        = _loggerFactory.CreateLogger("test");

            var xml = @"<xml>
<ToUserName><![CDATA[gh_08dc1481d8cc]]></ToUserName>
<Encrypt><![CDATA[+4+tcgOSZlVj8aW3DpoKQzIuZm9UxFT8f5O1bqX7SIF5FxhMlqSaWZ8Gqq1pIK4Web0nQQ8VxMM12DqDB8M77GdcvjAHfJbO6qkXFpb9z+8bSik8G1QQUzYMyWrZby1DAH+cZov6sMnJzdCWYRJ/TL4pxuDFlfxIRomIZxvq74CEyJ5TnuJ3LGor1n9ZJ3LJU7Av7zJrcdHBYdG12uz2dHddqBNiaeOrnNLCNHmrbJDSwz0p2QlBtthtH0WXG1QwPLBFoDFLAjVwFMFUh3+B2Nk8RT1rgFQ7CIItRr6vWCUwh9rifBJFA4b0Js24Y5Sd0/ZIPUzwZeeCpxL6iTsLHgEcm7DxKU2v/IVYt6ABR4kyk7myHbMIlY5gCbk7JBlGjW1fCXlOF0cOTxh1/Ar7Ombx/zBhOG5+O4gPGFZGMAI=]]></Encrypt>
</xml>";

            // http://wx.steamlet.com/wx?signature=51631d92ac7c9e7abb663ec2d5d7399e175ecc0d&timestamp=1553419390&nonce=1180353179&openid=oEylh5ksJ9m44qL7nXvHu0npUTww&encrypt_type=aes&msg_signature=6b09992cbda171f56d43698acbee5c8667056e18
            var timestamp     = "1553419390";
            var nonce         = "1180353179";
            var msg_signature = "6b09992cbda171f56d43698acbee5c8667056e18";
            var encrypt_type  = "aes";

            if (encrypt_type == "aes")
            {
                var decryptedXml = _encryptor.Decrypt(msg_signature, timestamp, nonce, xml);
                _logger.LogDebug("Request Body[Decrypted]({0}): {1}", decryptedXml?.Length, decryptedXml);

                xml = decryptedXml;
            }

            var result = XmlConvert.DeserializeObject <ReceivedEventArgs>(xml);

            Assert.Equal("gh_08dc1481d8cc", result.ToUserName);
            Assert.Equal(ReceivedMsgType.text, result.MsgType);
        }
Ejemplo n.º 30
0
        public void ImageMessageReceivedEventArgs()
        {
            string s = @"<xml>
  <ToUserName><![CDATA[gh_712b448adf85]]></ToUserName>
<FromUserName><![CDATA[oI3UkuL9uZxTOuj--HHMSMTlO3ks]]></FromUserName>
<CreateTime>1490872329</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<PicUrl><![CDATA[this is a url]]></PicUrl>
<MediaId><![CDATA[media_id]]></MediaId>
<MsgId>6403247895999455936</MsgId>
</xml>";

            var result = XmlConvert.DeserializeObject <ImageMessageReceivedEventArgs>(s);

            Assert.Equal("gh_712b448adf85", result.ToUserName);
            Assert.Equal("oI3UkuL9uZxTOuj--HHMSMTlO3ks", result.FromUserName);
            Assert.Equal(1490872329, WeixinTimestampHelper.FromLocalTime(result.CreateTime));
            Assert.Equal(ReceivedMsgType.text, result.MsgType);
            Assert.Equal("this is a url", result.PicUrl);
            Assert.Equal("media_id", result.MediaId);
            Assert.Equal(6403247895999455936, result.MsgId);
        }