Exemple #1
0
        byte[] _2_Response(LxwResponse o)
        {
            var bytes = new byte[o.BodyStream.Length];

            o.BodyStream.Read(bytes, 0, bytes.Length);
            o.BodyStream.Seek(0, SeekOrigin.Begin);
            return(bytes);
        }
Exemple #2
0
        void _12_Response(LxwResponse o)
        {
            var folder = CreateWeiXinFilesFolder();

            using (var map = new Bitmap(o.BodyStream))
            {
                var type = o.ResponseHeader.ContentType.ToLower();
                //if(type.StartsWith("audio/"))
                //if (type.StartsWith("image/"))
                //if (type.StartsWith("audio/"))
                var ext = MimeMapping.GetExtByMime(type);
                map.Save(Path.Combine(folder, DateTime.Now.ToString("yyyyMMddHHmmssfff") + GenerateDeviceId() + ext), MimeMapping.GetImageFormat(ext));
            }
        }
Exemple #3
0
        void _14_Response(LxwResponse o)
        {
            var folder = CreateWeiXinFilesFolder();
            //Bitmap map = new Bitmap(o.BodyStream);
            var type = o.ResponseHeader.ContentType.ToLower();
            //if(type.StartsWith("audio/"))
            //if (type.StartsWith("image/"))
            //if (type.StartsWith("audio/"))
            var ext = MimeMapping.GetExtByMime(type);

            //写入文件
            using (var fs = new FileStream(Path.Combine(folder, DateTime.Now.ToString("yyyyMMddHHmmssfff") + GenerateDeviceId() + o.ResponseHeader.AttachmentFilername), FileMode.OpenOrCreate))
            {
                fs.Write(o.Body, 0, o.Body.Length);
            }
        }
Exemple #4
0
        void _4_Response(LxwResponse o)
        {
            var value = o.Value;

            if (value.IndexOf("pass_ticket") == -1)
            {
                throw new Exception("没有得到wxsid信息" + value);
            }

            var weixin = Xml2Json <WeiXinTicket>(value);

            //存储数据
            WEB.Add(SKEY, weixin.skey);
            WEB.Add(WXSID, weixin.wxsid);
            WEB.Add(WXUIN, weixin.wxuin);
            WEB.Add(PASS_TICKET, weixin.pass_ticket);
        }
Exemple #5
0
        bool _3_Response(LxwResponse o)
        {
            var result = o.Value;

            if (result.IndexOf("window.redirect_uri=") != -1)
            {
                var redirect_uri = SearchKey(result, "redirect_uri", "\"(.*?)\"");
                WEB.Add(REDIRECT_URL, redirect_uri);

                WEB.Add(NUMBER, "");
                if (redirect_uri.IndexOf("wx2.qq.com") != -1)
                {
                    WEB.Add(NUMBER, "2");
                }
                return(true);
            }
            return(false);
        }
Exemple #6
0
        void _5_Response(LxwResponse o)
        {
            var login = JsonConvert.DeserializeObject <WEBWXINITRootObject>(o.Value);

            if (login.BaseResponse.Ret != 0)
            {
                throw new Exception("没有返回正确的数据,webwxinit错误!");
            }

            // USER_INFO
            LoginUser = login.User;

            WEB.Add(SYNCKEY, string.Join("|", login.SyncKey.List.Select(kv => $"{kv.Key}_{kv.Val}")));
            WEB.Add(SYNCKEY_LONG, JsonConvert.SerializeObject(login.SyncKey));

            foreach (var item in login.ContactList.Where(c => string.IsNullOrEmpty(c.KeyWord)).OrderByDescending(c => c.ContactFlag))
            {
                USER_DI.Add((item.UserName, item));
            }
        }
Exemple #7
0
        void _8_Response(LxwResponse o)
        {
            var value = o.Value;

            if (value.IndexOf("\"SyncKey\": ") == -1)
            {
                throw new Exception("SyncKey 没有捕获到");
            }

            var root = JsonConvert.DeserializeObject <SyncRoot>(value);

            if (root.SyncKey != null && root.SyncKey.Count != null)
            {
                WEB.Add(SYNCKEY_LONG, JsonConvert.SerializeObject(root.SyncKey));
            }
            foreach (var item in root.AddMsgList)
            {
                var content = item.Content.Replace("&gt;", ">").Replace("&lt;", "<").Replace("<br/>", "");
                //处理消息
                _9_DoMessage(content, item, item.MsgId);
            }
        }
Exemple #8
0
        bool _7_Response(LxwResponse o)
        {
            string value = o.Value;

            if (value.Contains("1101"))
            {
                RecordMessage("µÇ¼ʧ°Ü£¬Çë¹Ø±ÕÖØг¢ÊÔ:" + WEB[SYNCKEY], null);
                return(false);
            }

            if (bFirst)
            {
                RecordMessage("µÇ¼³É¹¦!", null);
                bFirst = false;
            }
            //1=>window.synccheck={retcode:"0",selector:"2"}
            if (value.IndexOf("selector:\"0\"") == -1 && value.IndexOf("retcode:\"0\"") != -1)
            {
                _8_WEBWXSYNC();
            }

            return(true);
        }
 void _10_Response(LxwResponse o)
 {
     //不做任何处理
 }
Exemple #10
0
        private LxwResponse ReadResponse(Stream sm)
        {
            CancellationTokenSource cancelSource = new CancellationTokenSource();
            Task <string>           myTask       = Task.Factory.StartNew <string>(
                new Func <object, string>(ReadHeaderProcess),
                new TaskArguments(cancelSource, sm),
                cancelSource.Token);

            LxwResponse response = null;

            if (myTask.Wait(ReadTimeOut * 1000)) //尝试3秒时间读取协议头
            {
                //头部信息
                string header = myTask.Result;

                if (!string.IsNullOrEmpty(header))
                {
                    //代表继续接收信息,这部分信息先不考虑处理
                    if (header.StartsWith("HTTP/1.1 100"))
                    {
                        return(ReadResponse(sm));
                    }

                    //处理头文件信息
                    var responseHeader = new LxwResponseHeader(header, CookieMethod);

                    while (true)
                    {
                        if (responseHeader.ContentLength > 0)
                        {
                            var buff   = new byte[responseHeader.ContentLength];
                            int inread = sm.Read(buff, 0, buff.Length);
                            while (inread < buff.Length)
                            {
                                inread += sm.Read(buff, inread, buff.Length - inread);
                            }
                            response = new LxwResponse(buff, responseHeader);
                            break;
                        }

                        if (responseHeader.TransferEncoding)
                        {
                            var buff = ChunkedReadResponse(sm);
                            response = new LxwResponse(buff, responseHeader);
                            break;
                        }

                        {
                            //如果走到这里,就比较特殊了,可以不考虑
                            var buff = SpecialReadResponse(sm);
                            response = new LxwResponse(buff, responseHeader);
                            break;
                        }
                    }
                }
            }
            else
            {
                cancelSource.Cancel(); //超时的话,别忘记取消任务哦
            }
            return(response);
        }
Exemple #11
0
 string _17_Response(LxwResponse o)
 {
     return(JObject.Parse(o.Value)["MediaId"]?.Value <string>());
 }
Exemple #12
0
        void _1_Response(LxwResponse o)
        {
            var value = SearchKey(o.Value, "200", "\"(.*?)\"");

            WEB.Add(UUID, value);
        }
        MemberItem[] _6_Response(LxwResponse o)
        {
            var ro = JsonConvert.DeserializeObject <WEBWXGETCONTACTRootObject>(o.Value);

            return(ro.MemberList);
        }