示例#1
0
        public async Task <IActionResult> OnGetAsync()
        {
            var accessToken = await HttpContext.GetTokenAsync("access_token");

            clientHead = new ClientHead();

            if (!await _apiHelper.AuthCheck(accessToken, User.FindFirst("sub").Value))
            {
                return(RedirectToPage("/Logout"));
            }

            if (!string.IsNullOrWhiteSpace(Id))
            {
                var response = await _apiHelper.MakeAPICallAsync(accessToken, HttpMethod.Get, APITypes.CLIENT, $"Client/{Id}");

                if (response.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    clientHead = response.ContentAsType <ClientHead>();
                }
            }

            await PageConstructor(SaveStates.IGNORE, accessToken);

            SaveMessageModel = await _apiHelper.GenerateSaveMessageModel(accessToken);

            return(Page());
        }
        public IActionResult Patch(string id, [FromBody] JsonPatchDocument <ClientHead> clientHeadPatch)
        {
            try
            {
                if (Guid.TryParse(id, out Guid parsedId))
                {
                    //var userId = User.FindFirstValue("sub");

                    ClientHeader clientHeader = _unitOfWork.ClientHeaders.Get(parsedId);

                    ClientHead clientHead = _mapper.Map <ClientHead>(clientHeader);

                    clientHeadPatch.ApplyTo(clientHead);

                    _mapper.Map(clientHead, clientHeader);

                    _unitOfWork.Complete();

                    return(CreatedAtRoute("Get", new { id = _mapper.Map <ClientHead>(clientHeader).Id }, _mapper.Map <ClientHead>(clientHeader)));
                }
            }
            catch (Exception e)
            {
                string message = e.Message;
            }

            return(BadRequest());
        }
示例#3
0
        protected bool Read(MemoryStream stream, out List <object> message)
        {
            if (stream.Length > stream.Position)
            {
                _recentHead = ReadHead(stream);
                message     = ReadBody(_recentHead, stream);

                return(true);
            }
            else
            {
                message = new List <object>();
                return(false);
            }
        }
示例#4
0
        //private static string GetStringBetween(string strSource, string strStartTag, string strEndTag)
        //{
        //    int start, end;
        //    if(strSource.Contains(strStartTag) && strSource.Contains(strEndTag))
        //    {
        //        start = strSource.IndexOf(strStartTag, 0) + strStartTag.Length;
        //        end = strSource.IndexOf(strEndTag, start);
        //        return strSource.Substring(start, end - start);
        //    }

        //    return string.Empty;
        //}

        private ClientHead GenerateDummyClientHeadModel()
        {
            var dummyClientHead = new ClientHead();

            dummyClientHead.Id = Guid.Empty;

            var dummyClientCon = new ClientCon()
            {
                Id         = Guid.Empty,
                FirstName  = string.Empty,
                MiddleName = string.Empty,
                LastName   = string.Empty,
                Email      = string.Empty,
                Phone      = string.Empty
            };

            var dummyClientAddr = new ClientAddr()
            {
                ClientContactId = Guid.Parse("11111111-1111-1111-1111-111111111111"),
                Id           = Guid.Empty,
                AddressLine1 = string.Empty,
                AddressLine2 = string.Empty,
                AddressLine3 = string.Empty,
                AddressLine4 = string.Empty,
                AddressLine5 = string.Empty,
                Country      = string.Empty,
                Email1       = string.Empty,
                Email2       = string.Empty,
                Email3       = string.Empty,
                Phone1       = string.Empty,
                Phone2       = string.Empty,
                Phone3       = string.Empty,
                PostalCode   = string.Empty,
                Region       = string.Empty
            };

            dummyClientCon.ClientAddresses.Add(dummyClientAddr);

            dummyClientHead.ClientContacts.Add(dummyClientCon);

            return(dummyClientHead);
        }
        public IActionResult Post([FromBody] ClientHead clientHead)
        {
            try
            {
                if (clientHead.Id == Guid.Empty)
                {
                    //var userId = User.FindFirstValue("sub");

                    var clientHeader = _mapper.Map <ClientHeader>(clientHead);

                    _unitOfWork.ClientHeaders.Add(clientHeader);

                    _unitOfWork.Complete();

                    return(Created(new Uri($"{Request.Path}/{clientHeader.Id}", UriKind.Relative), _mapper.Map <ClientHead>(clientHeader)));
                }
            }
            catch (Exception e)
            {
                string message = e.Message;
            }

            return(BadRequest());
        }
示例#6
0
        protected List <object> ReadBody(ClientHead head, MemoryStream stream)
        {
            ///此处对读取 BODYSTEAM做了一些优化,如果有问题请注意排查 2015 08 21
            //byte[] bodyBuffer = new byte[head.BodyLength];
            //int bodyBufferOffset = 0;
            //stream.Read(bodyBuffer, 0, (int)head.BodyLength);

            byte[] bodyBuffer = stream.GetBuffer();

            int bodyBufferOffset = (int)stream.Position;

            int bodyLen = (int)head.BodyLength;

            if (bodyLen < 0)
            {
                bodyLen = 0;
            }

            stream.Position = bodyBufferOffset + bodyLen;

            ///bodylen大于零才去读MESSAGE

            //if (bodyLen > 0) //去掉吧,有些协议的长度就是为零
            {
                List <object> msgs = new List <object>();
                if (head.Format == ClientHeadFormatType.Protobuf)
                {
                    bool isLua    = false;
                    bool isCSharp = false;
                    if (__Proxy.__LuaPBProcessor.ContainsKey(head.CmdId) && _router.getPBType(head.Serial) == PBTYPE.LuaPB || _router.getPBType(head.Serial) == PBTYPE.Both)
                    {
                        byte[] buff = new byte[bodyLen];
                        //stream.Write(buff, bodyBufferOffset, bodyLen);
                        stream.Position = bodyBufferOffset;
                        stream.Read(buff, 0, bodyLen);
                        stream.Position = bodyBufferOffset + bodyLen;
                        msgs.Add(buff);
                        //return buff;
                        isLua = true;
                    }


                    if (_typeProvider.ContainsKey(head.CmdId) && _router.getPBType(head.Serial) == PBTYPE.CSharpPB || _router.getPBType(head.Serial) == PBTYPE.Both)
                    {
                        ReceiveMessageStream.Write(bodyBuffer, bodyBufferOffset, bodyLen);
                        ReceiveMessageStream.Position = 0;

                        Type messageType;
                        TypeProvider.TryGetValue(head.CmdId, out messageType);

                        if (DefineExt.Net_Log_Level > 0)
                        {
                            Debuger.Log(string.Format("Received Package 0x{0}({4}), Body Length = {1}, Message Id = {2}, Serial Id = {3}.", _recentHead.CmdId.ToString("X2"), _recentHead.BodyLength.ToString(), _recentHead.MessageId, _recentHead.Serial, _recentHead.CmdId));
                            ///解析详细的字段
                            ///todo..
                        }

                        if (messageType == null)
                        {
                            ReceiveMessageStream.SetLength(0);
                            if (_router.getPBType(head.Serial) == PBTYPE.CSharpPB)
                            {
                                Debuger.LogWarning(@"返回cmdID消息类型未注册。请在NetworkManager.registerTypes()方法中添加cmdID到返回消息类型的映射。
        CmdId = 0x" + _recentHead.CmdId.ToString("X2") + "(" + _recentHead.CmdId + ")");
                                //return null;
                            }
                        }
                        else
                        {
                            object message = null;
                            message = Serializer.NonGeneric.Deserialize(messageType, ReceiveMessageStream);
                            ReceiveMessageStream.SetLength(0);

                            if ((DefineExt.Net_Log_Level & DefineExt.LOG_FULL_RECV_PROTO_INFO) > 0)
                            {
                                Debuger.Log(String.Format("Receive ----> cmd={0}, serial={1}, proto={2}", head.CmdId, head.Serial, KHUtil.GetProtoStr(message, messageType.FullName)));
                            }

                            msgs.Add(message);

                            isCSharp = true;
                        }
                    }


                    // Update by Chicheng
                    if (msgManager.IsActivate && msgManager.IsSerializeToLocal)
                    {
                        Type messageType;
                        TypeProvider.TryGetValue(head.CmdId, out messageType);

                        // Debug.LogWarning("把读到的消息包序列化到本地");
                        RemoteModel remoteModel = RemoteModel.Instance;
                        ulong       timeStamp   = remoteModel.CurrentTime;
                        if (isCSharp && isLua)
                        {
                            serializeToLocalWithType(msgs, messageType, head.CmdId, timeStamp, head.Serial, MessageSource.CSharpAndLua);
                        }
                        else if (isLua)
                        {
                            serializeToLocalWithType(msgs, null, head.CmdId, timeStamp, head.Serial, MessageSource.Lua);
                        }
                        else if (isCSharp)
                        {
                            if (messageType != null)
                            {
                                serializeToLocalWithType(msgs, messageType, head.CmdId, 0, head.Serial, MessageSource.CSharp);
                            }
                            else
                            {
                                Debug.LogWarning("丢弃" + head.Serial);
                            }
                        }
                    }
                }
                return(msgs);
            }
        }
示例#7
0
 protected ClientHead ReadHead(MemoryStream stream)
 {
     stream.Read(HeadBuffer, 0, ClientHead.HeadLength);
     return(ClientHead.ConvertFromByte(HeadBuffer));
 }