Exemple #1
0
        public async Task <IHttpActionResult> PostModelMember(ModelMember modelMember)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.Members.Add(modelMember);

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (ModelMemberExists(modelMember.MemberId))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtRoute("DefaultApi", new { id = modelMember.MemberId }, modelMember));
        }
        private List <QueryParameter> GetInMemoryFilterQueryParameters()
        {
            var modelMembers = new List <ModelMember>();

            _expressions.ForEach(expression =>
            {
                MemberExpression memberExpression = expression.Body as MemberExpression ?? (expression.Body as UnaryExpression)?.Operand as MemberExpression;

                if (memberExpression != null)
                {
                    // Find the member.
                    var rawMemberExpression = memberExpression.ToString();
                    var depth   = rawMemberExpression.Count(x => x == '.');
                    string path = depth > 1 ? rawMemberExpression.Substring(rawMemberExpression.IndexOf('.') + 1) : memberExpression.Member.Name;

                    var member = _accessor.GetMembers().ToList().Single(x =>
                                                                        x.Name == (depth > 1 ? path.Substring(0, path.IndexOf('.')) : memberExpression.Member.Name));

                    var modelMember = new ModelMember(_type, _accessor, member, false);

                    _modelMemberList.Add(modelMember);
                    modelMembers.Add(modelMember);
                }
            });

            return(modelMembers.Select(m => new QueryParameter {
                MemberModel = m
            }).ToList());
        }
Exemple #3
0
        public async Task <IHttpActionResult> PutModelMember(Guid id, ModelMember modelMember)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != modelMember.MemberId)
            {
                return(BadRequest());
            }

            db.Entry(modelMember).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ModelMemberExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Exemple #4
0
 public IEnumerable <ConnectionBuilder <ModelConventionType <TSource>, object> > GetConnectionBuilderArguments <TSource>(
     ModelMember modelMember,
     ConnectionBuilder <ModelConventionType <TSource>, object> connectionBuilder)
 {
     return(new List <ConnectionBuilder <ModelConventionType <TSource>, object> > {
         GetConnectionBuilderArgument(modelMember, connectionBuilder)
     });
 }
Exemple #5
0
 protected override bool ShouldSerialize(ModelMember member)
 {
     if (member is Column column)
     {
         return(_columns.Contains(column));
     }
     return(member is ColumnList || member is Projection);
 }
 public IEnumerable <ConnectionBuilder <object> > GetConnectionBuilderArguments(
     ModelMember modelMember,
     ConnectionBuilder <object> connectionBuilder)
 {
     return(new List <ConnectionBuilder <object> > {
         GetConnectionBuilderArgument(modelMember, connectionBuilder)
     });
 }
Exemple #7
0
 protected override bool ShouldSerialize(ModelMember member)
 {
     if (member is Column column)
     {
         return(column.IsSupported());
     }
     return(true);
 }
Exemple #8
0
        public void DoNotUseNullWhenOptionalIsTrueButAttributeFlagIsNotSet()
        {
            var ta = TypeAccessor.Create(typeof(DtoWithOptional2));

            var modelMember = new ModelMember(null, null, ta.GetMembers().Single(), true);

            modelMember.UseNullWhenOptional().ShouldBeFalse();
        }
        public static void Verify(this Column column, Model model, Type declaringType, string name, Type originalDeclaringType, string originalName)
        {
            ModelMember modelProperty = column;

            modelProperty.Verify(model, declaringType, name);
            Assert.AreEqual(originalDeclaringType, column.OriginalDeclaringType);
            Assert.AreEqual(originalName, column.OriginalName);
        }
Exemple #10
0
 public ConnectionBuilder <object> GetConnectionBuilderArgument(
     ModelMember modelMember,
     ConnectionBuilder <object> connectionBuilder)
 {
     return(modelMember.IsOptional ?
            connectionBuilder.Argument <ModelConventionInputType <StringEqualFilter> >(modelMember.Name, modelMember.Description) :
            connectionBuilder.Argument <NonNullGraphType <ModelConventionInputType <StringEqualFilter> > >(modelMember.Name, modelMember.Description));
 }
Exemple #11
0
        public async Task <IHttpActionResult> GetModelMember(Guid id)
        {
            ModelMember modelMember = await db.Members.FindAsync(id);

            if (modelMember == null)
            {
                return(NotFound());
            }

            return(Ok(modelMember));
        }
Exemple #12
0
 ClientItem CheckUserExist(ModelMember member)
 {
     foreach (ClientItem item in clientList)
     {
         if (item.clientMember.netname == member.netname)
         {
             return(item);
         }
     }
     return(null);
 }
        public void CanHandleSearchModelFilters()
        {
            Type         t                  = typeof(SearchModel);
            TypeAccessor ta                 = TypeAccessor.Create(t);
            var          member             = ta.GetMembers().ToList().Single(x => x.Name == "Filters");
            var          filtersMemberModel = new ModelMember(null, null, member, false);

            var qa = new SearchFilterModelQueryArgument();

            qa.CanHandle(filtersMemberModel).ShouldBeTrue();
        }
Exemple #14
0
 public IEnumerable <QueryArgument> GetArguments(ModelMember modelMember)
 {
     return(new List <QueryArgument>
     {
         new QueryArgument <ListGraphType <ModelConventionInputType <FieldNameValueFilter> > >
         {
             Name = modelMember.Name,
             Description = modelMember.Description
         }
     });
 }
Exemple #15
0
 ClientItem GetUser(ModelMember member)
 {
     foreach (ClientItem ci in clientList)
     {
         if (ci.clientMember.netname == member.netname && ci.clientMember.ipaddress == member.ipaddress)
         {
             return(ci);
         }
     }
     return(null);
 }
Exemple #16
0
 protected internal override bool ShouldSerialize(ModelMember member)
 {
     for (int i = 0; i < _filters.Length; i++)
     {
         if (!_filters[i].ShouldSerialize(member))
         {
             return(false);
         }
     }
     return(true);
 }
Exemple #17
0
 private QueryArgument GetArgument(ModelMember modelMember)
 {
     return(modelMember.IsOptional ?
            (QueryArgument) new QueryArgument <ModelConventionInputType <DateFilter> >
     {
         Name = modelMember.Name,
         Description = modelMember.Description
     } : new QueryArgument <NonNullGraphType <ModelConventionInputType <DateFilter> > >
     {
         Name = modelMember.Name,
         Description = modelMember.Description
     });
 }
Exemple #18
0
        private void SendOneDatagram()
        {
            int maxLength = int.Parse(cb_MaxDatagramSize.Text) * 10240;

            Random rnd            = new Random();
            int    datagramLength = rnd.Next(1, maxLength);

            //就这里,弄个类的序列化。
            DbTools     db = new DbTools();
            ModelMember m  = new ModelMember();

            m.email     = "赵钦@sina.com";
            m.hdinfo    = HardWare.getHardCode();
            m.logintime = DateTime.Now;
            string datagramText = db.ClasstoString(m, "VCDS");

            datagramText = "<" + datagramText + ">";
            //if (ck_ErrorDatagram.Checked && datagramLength < maxLength * 0.20)  // 产生一个无 > 的包
            //{
            //    datagramText = "<" + tb_ClientName.Text.Trim() + ",".PadRight(datagramLength, 'a');
            //} else if (ck_ErrorDatagram.Checked && datagramLength > maxLength * 0.80)  // 产生一个无 < 的包
            //{
            //    datagramText = tb_ClientName.Text.Trim() + ",".PadRight(datagramLength, 'a') + ">";
            //} else  // 正常包
            //{
            //    string header = "<" + tb_ClientName.Text.Trim() + ",";
            //    string tailer = ",".PadRight(datagramLength, 'a') + ">";
            //    datagramText = header + (header.Length + tailer.Length + 10).ToString("0000000000") + tailer;  // 第二个字节是长度
            //}

            byte[] datagram = Encoding.ASCII.GetBytes(datagramText);

            try {
                m_socketClient.Client.Send(datagram);

                this.RefreshSendCount();
                this.AddInfo("send text len = " + datagramText.Length.ToString());

                if (ck_AsyncReceive.Checked)  // 异步接收回答
                {
                    m_socketClient.Client.BeginReceive(m_receiveBuffer, 0, m_receiveBuffer.Length, SocketFlags.None, this.EndReceiveDatagram, this);
                }
                else
                {
                    this.Receive();
                }
            } catch (Exception err) {
                this.AddInfo("send exception: " + err.Message);
                this.CloseClientSocket();
            }
        }
Exemple #19
0
        public async Task <IHttpActionResult> DeleteModelMember(Guid id)
        {
            ModelMember modelMember = await db.Members.FindAsync(id);

            if (modelMember == null)
            {
                return(NotFound());
            }

            db.Members.Remove(modelMember);
            await db.SaveChangesAsync();

            return(Ok(modelMember));
        }
Exemple #20
0
        public QueryArgument GetArgument(ModelMember modelMember)
        {
            return(modelMember.IsOptional ?

                   new QueryArgument <ModelConventionInputType <StringEqualFilter> >
            {
                Name = modelMember.Name,
                Description = modelMember.Description
            } :

                   (QueryArgument) new QueryArgument <NonNullGraphType <ModelConventionInputType <StringEqualFilter> > >
            {
                Name = modelMember.Name,
                Description = modelMember.Description
            });
        }
Exemple #21
0
 public IEnumerable <QueryArgument> GetArguments(ModelMember modelMember)
 {
     return(new List <QueryArgument> {
         GetArgument(modelMember)
     });
 }
Exemple #22
0
 private ConnectionBuilder <ModelConventionType <TSource>, object> GetConnectionBuilderArgument <TSource>(ModelMember modelMember, ConnectionBuilder <ModelConventionType <TSource>, object> connectionBuilder)
 {
     return(modelMember.IsOptional ?
            connectionBuilder.Argument <ModelConventionInputType <GuidFilter> >(modelMember.Name, modelMember.Description) :
            connectionBuilder.Argument <NonNullGraphType <ModelConventionInputType <GuidFilter> > >(modelMember.Name, modelMember.Description));
 }
Exemple #23
0
        public ContextValue GetContextValue(IResolveFieldContext <object> context, ModelMember modelMember, ContextValueSetRule rule)
        {
            var name = modelMember.Name;

            var contextValue = new ContextValue();

            if (rule == null || !rule.DisableSetSelectValues)
            {
                contextValue.PopulateSelectValues(context);
            }

            if (context.Arguments == null)
            {
                return(contextValue);
            }

            var args = context.Arguments;

            if (args.ContainsKey(name))
            {
                if (args[name] is Dictionary <string, object> arg)
                {
                    if (modelMember.IsGuid)
                    {
                        contextValue.Values = new List <object> {
                            Guid.Parse(arg.First().Value.ToString())
                        };
                    }
                    else
                    {
                        var val = arg.First().Value;
                        if (modelMember.IsOptional && modelMember.UseNullWhenOptional() && val == null)
                        {
                            return(contextValue);
                        }

                        contextValue.Values = new List <object> {
                            val
                        };
                    }

                    if (contextValue.Values == null)
                    {
                        throw new ArgumentNullException($"{name}.Value");
                    }

                    string comparison = arg.First().Key;
                    if (comparison == Constants.Equal)
                    {
                        contextValue.Comparison = Comparisons.Equal;
                        return(contextValue);
                    }

                    if (comparison == Constants.Contains && contextValue.GetFirstValue() is string)
                    {
                        contextValue.Comparison = Comparisons.StringContains;
                        return(contextValue);
                    }

                    if (comparison == Constants.StartsWith && contextValue.GetFirstValue() is string)
                    {
                        contextValue.Comparison = Comparisons.StringStartsWith;
                        return(contextValue);
                    }

                    if (comparison == Constants.EndsWith && contextValue.GetFirstValue() is string)
                    {
                        contextValue.Comparison = Comparisons.StringEndsWith;
                        return(contextValue);
                    }

                    if (comparison == Constants.NotEqual && (
                            contextValue.GetFirstValue() is int ||
                            contextValue.GetFirstValue() is DateTime))
                    {
                        contextValue.Comparison = Comparisons.NotEqual;
                        return(contextValue);
                    }

                    if (comparison == Constants.GreaterThan && (
                            contextValue.GetFirstValue() is int ||
                            contextValue.GetFirstValue() is DateTime))
                    {
                        contextValue.Comparison = Comparisons.GreaterThan;
                        return(contextValue);
                    }

                    if (comparison == Constants.GreaterEqualThan && (
                            contextValue.GetFirstValue() is int ||
                            contextValue.GetFirstValue() is DateTime))
                    {
                        contextValue.Comparison = Comparisons.GreaterEqualThan;
                        return(contextValue);
                    }

                    if (comparison == Constants.LessThan && (
                            contextValue.GetFirstValue() is int ||
                            contextValue.GetFirstValue() is DateTime))
                    {
                        contextValue.Comparison = Comparisons.LessThan;
                        return(contextValue);
                    }

                    if (comparison == Constants.LessEqualThan && (
                            contextValue.GetFirstValue() is int ||
                            contextValue.GetFirstValue() is DateTime))
                    {
                        contextValue.Comparison = Comparisons.LessEqualThan;
                        return(contextValue);
                    }
                    throw new NotImplementedException($"Comparison: {comparison} is not implemented for type {contextValue.GetFirstValue().GetType().Name}.");
                }

                if (args[name] is IEnumerable <object> listArg)
                {
                    var searchFilterModels = new List <object>();
                    foreach (Dictionary <string, object> item in listArg)
                    {
                        if (item.ContainsKey(Constants.FieldName) &&
                            item.ContainsKey(Constants.FieldValue))
                        {
                            searchFilterModels.Add(new SearchFilterModel
                            {
                                FieldName = (string)item[Constants.FieldName],
                                Value     = (string)item[Constants.FieldValue],
                                Comprison = (Comparisons)(int)item[Constants.Comparison]
                            });
                        }
                    }

                    contextValue.Values = searchFilterModels;
                    return(contextValue);
                }

                if (args[name] is null)
                {
                    return(contextValue);
                }

                throw new NotImplementedException($"{name} type not supported.");
            }

            return(contextValue);
        }
Exemple #24
0
        public static FieldInformation ConstructFieldInformation(ModelMember member, object defaultInstance)
        {
            object[] attributes   = member.GetCustomAttributes(false);
            string[] attributeIds = new string[attributes.Length];
            for (int i = 0; i < attributes.Length; i++)
            {
                attributeIds[i] = attributes.GetType().Name;
            }

            FieldInformation fieldInformation;

            if (typeof(InputSocket).IsAssignableFrom(member.ValueType))
            {
                fieldInformation = new FieldInformation()
                {
                    Type         = "InputSocket",
                    Attributes   = attributeIds,
                    DefaultValue = new JValue((object)null),
                    Format       = FieldFormat.Object,
                };
            }
            else
            {
                object defaultValue = null;

                if (defaultInstance != null)
                {
                    defaultValue = member.GetValue(defaultInstance);
                }

                string typeName = member.ValueType.Name;

                try
                {
                    fieldInformation = new FieldInformation
                    {
                        Type         = typeName,
                        Attributes   = attributeIds,
                        DefaultValue = new JValue(defaultValue),
                        Format       = FieldFormat.Object,
                    };
                }
                catch
                {
                    fieldInformation = new FieldInformation
                    {
                        Type         = typeName,
                        Attributes   = attributeIds,
                        DefaultValue = JObject.FromObject(defaultValue),
                        Format       = FieldFormat.Object,
                    };
                }

                if (typeof(IDictionary).IsAssignableFrom(member.ValueType))
                {
                    fieldInformation.Format = FieldFormat.Dictionary;
                    fieldInformation.Type   = member.ValueType.GetGenericArguments()[1].Name;

                    fieldInformation.ValueFormat = new FieldInformation()
                    {
                        Type   = member.ValueType.GetGenericArguments()[1].Name,
                        Format = FieldFormat.Object
                    };
                }
                else if (member.ValueType.IsArray)
                {
                    var elementType = member.ValueType.GetElementType();

                    fieldInformation.Format = FieldFormat.List;
                    fieldInformation.Type   = elementType.Name;

                    fieldInformation.ValueFormat = new FieldInformation()
                    {
                        Type   = elementType.Name,
                        Format = FieldFormat.Object
                    };
                }
                else if (member.ValueType.IsGenericType &&
                         !member.ValueType.IsGenericTypeDefinition &&
                         member.ValueType.GetGenericTypeDefinition() == typeof(List <>))
                {
                    var elementType = member.ValueType.GenericTypeArguments[0];

                    fieldInformation.Format = FieldFormat.List;
                    fieldInformation.Type   = elementType.Name;

                    fieldInformation.ValueFormat = new FieldInformation()
                    {
                        Type   = elementType.Name,
                        Format = FieldFormat.Object
                    };
                }
                else
                {
                    fieldInformation.Format = FieldFormat.Object;
                }
            }

            return(fieldInformation);
        }
Exemple #25
0
 public bool CanHandle(ModelMember modelMember)
 {
     return(modelMember.IsDate);
 }
Exemple #26
0
 public IEnumerable <ConnectionBuilder <ModelConventionType <TSource>, object> > GetConnectionBuilderArguments <TSource>(ModelMember modelMember, ConnectionBuilder <ModelConventionType <TSource>, object> connectionBuilder)
 {
     throw new System.NotImplementedException();
 }
Exemple #27
0
 public bool CanHandle(ModelMember modelMember)
 {
     return(modelMember.Member.Type == typeof(List <SearchFilterModel>));
 }
Exemple #28
0
        /// <summary>
        /// 接收消息
        /// </summary>
        /// <param name="clientSocket"></param>
        private static void ReceiveMessage(object clientSocket)
        {
            Program p = new Program();
            Socket  myClientSocket = (Socket)clientSocket;

            byte[]      mmbytes = SocketHelper.ReceiveVarData(myClientSocket);
            ModelMember member  = null;

            try {
                member = (ModelMember)db.BytetoClass(mmbytes, "VCDS");
                string ipaddress = IPAddress.Parse(((IPEndPoint)myClientSocket.RemoteEndPoint).Address.ToString()).ToString();

                switch (member.strCommand)
                {
                case "login":
                    EchoHelper.Echo("接收客户端(" + ipaddress + ")登录名:" + member.netname + "密码:" + member.netpass, "接收信息", EchoHelper.EchoType.普通信息);

                    //用户cookies服务器端验证。
                    if (p.ValidateUser(ref member))
                    {
                        member.strCommand    = "login";
                        member.bLoginSuccess = true;
                    }
                    else
                    {
                        member.strCommand    = "exit";
                        member.bLoginSuccess = false;
                    }

                    ClientItem tmp = null;
                    if ((tmp = p.CheckUserExist(member)) != null && member.bLoginSuccess && member.ipaddress != tmp.clientMember.ipaddress)
                    {
                        //此时用户名和密码同时相同,开始踢客户端.
                        tmp.clientMember.strCommand = "exit";
                        tmp.clientMember.strMessage = "您的账户在另一地点登录:" + ipaddress + ",您被迫下线!建议您修改密码!";
                        byte[] senddata = db.ClasstoByte(tmp.clientMember, "VCDS");
                        if (!tmp.clientSocket.Connected)
                        {
                            tmp.clientSocket.Connect(tmp.clientSocket.RemoteEndPoint);
                        }
                        member = tmp.clientMember.CopyTo();
                        //删除前一客户端
                        clientList.Remove(tmp);
                        EchoHelper.Echo(member.netname + "(" + member.ipaddress + "),被踢下线了!", "用户验证", EchoHelper.EchoType.错误信息);
                        SocketHelper.SendVarData(tmp.clientSocket, senddata);
                        tmp.clientSocket.Shutdown(SocketShutdown.Both);
                        tmp.clientSocket.Close();
                    }

                    //记录当前客户端.
                    member.ipaddress = ipaddress;
                    ClientItem cur = new ClientItem()
                    {
                        clientMember = member, clientSocket = myClientSocket
                    };

                    byte[] curdata = db.ClasstoByte(member, "VCDS");
                    SocketHelper.SendVarData(myClientSocket, curdata);
                    if (member.bLoginSuccess)
                    {
                        clientList.Add(cur);
                    }
                    break;

                case "closeform":
                    member.ipaddress = ipaddress;
                    if ((tmp = p.GetUser(member)) != null)
                    {
                        clientList.Remove(tmp);
                        EchoHelper.Echo(member.netname + "(" + member.ipaddress + "),下线了.", "用户验证", EchoHelper.EchoType.任务信息);
                        //member.strCommand = "quit";
                        //byte[] quitdatas = db.ClasstoByte(member, "VCDS");
                        //SocketHelper.SendVarData(tmp.clientSocket, quitdatas);
                    }
                    break;

                default:
                    break;
                }
            } catch (Exception ex) {
                EchoHelper.Echo("quit" + ex.Message, "exception", EchoHelper.EchoType.异常信息);
            }
        }
Exemple #29
0
 public bool CanHandle(ModelMember modelMember)
 {
     return(modelMember.IsGuid);
 }
Exemple #30
0
        private bool ValidateUser(ref ModelMember member)
        {
            member.IS_X_PostKing = false;

            //验证是否具有发帖权限
            string testpostUrl = "http://www.renzhe.org/forum.php?mod=post&action=newthread&fid=36";

            string html = new xkHttp().httpGET(testpostUrl, ref member.cookies);

            if (html.Contains("发表帖子 - 忍者X2站群 -  忍者软件"))
            {
                EchoHelper.Echo("恭喜您,权限核对成功,您已被授权使用忍者X2站群!", "用户验证", EchoHelper.EchoType.任务信息);
                member.strMessage    = "恭喜您,权限核对成功,您已被授权使用忍者X2站群!";
                member.IS_X_PostKing = true;
            }
            else if (html.Contains("抱歉,您需要设置自己的头像后才能进行本操作"))
            {
                EchoHelper.Echo("请完善您的(基本资料、头像),即在论坛上发个帖子激活一下。授权论坛:www.renzhe.org!", "用户验证", EchoHelper.EchoType.任务信息);
                member.strMessage = "请完善您的(基本资料、头像),即在论坛上发个帖子激活一下。授权论坛:www.renzhe.org!";
            }
            else if (html.Contains("请先绑定手机号码"))
            {
                EchoHelper.Echo("请先绑定手机号码,授权论坛:www.renzhe.org!", "用户验证", EchoHelper.EchoType.任务信息);
                member.strMessage = "请先绑定手机号码,授权论坛:www.renzhe.org!";
            }
            else if (html.Contains("<s>商业授权用户</s>"))
            {
                EchoHelper.Echo("您的账户已过期,请到论坛充值续费!", "用户验证", EchoHelper.EchoType.任务信息);
                member.strMessage = "您的账户已过期,请到论坛充值续费!";
            }
            else if (html.Contains("超时"))
            {
                EchoHelper.Echo("链接服务超时!", "用户验证", EchoHelper.EchoType.任务信息);
                member.strMessage = "链接服务超时!";
            }
            else if (html.Contains("没有权限在该版块发帖"))
            {
                EchoHelper.Echo("用户登录验证失败,请重新登录!", "用户验证", EchoHelper.EchoType.任务信息);
                member.strMessage = "用户登录验证失败,请重新登录!";
            }
            else if (html.Contains("无法解析此远程名称"))
            {
                EchoHelper.Echo("域名解析出现问题,请检查您的网络设置!", "用户验证", EchoHelper.EchoType.任务信息);
                member.strMessage = "域名解析出现问题,请检查您的网络设置!";
            }
            else
            {
                EchoHelper.Echo("验证失败,原因未知!", "用户验证", EchoHelper.EchoType.任务信息);
                member.strMessage = "验证失败,原因未知!";
                FilesHelper.Write_File(Application.StartupPath + "\\log\\" + DateTime.Now.Ticks.ToString() + ".txt", html);
            }

            if (member.group.Contains("商业授权用户"))
            {
                member.IS_X_WordPressBuild = true;
            }
            else
            {
                member.IS_X_WordPressBuild = false;
            }
            return(member.IS_X_PostKing);
        }