private void setRequest(List <RestfulRequestMetaData> list, RestfulRequestMetaData requestMetaData, RestfulServiceMetaData requestGroupMetaData) { var t = 1; for (int i = 0; i < list.Count; i++) { if (requestMetaData.Name == list[i].Name) { t++; requestMetaData.Name = requestMetaData.Name + t.ToString(); i = 0; } } t = 1; for (int i = 0; i < list.Count; i++) { if (requestMetaData.Path == list[i].Path) { t++; requestMetaData.Path = requestMetaData.Path + t.ToString(); i = 0; } } }
private RestfulRequestMetaData resolveRequest(Method method, string groupPath, string groupMethod) { var metaData = new RestfulRequestMetaData(); metaData.Method = method; foreach (var item in method.Attributes) { var attrType = item[0].GetType(); if (attrType == typeof(RestfulIgnoreAttribute)) { return(null); } else if (attrType == typeof(PathAttribute)) { metaData.Path = ((PathAttribute)item[0]).Path; } else if (attrType == typeof(GetAttribute)) { metaData.HttpMethod = HttpMethods.GET; } else if (attrType == typeof(PostAttribute)) { metaData.HttpMethod = HttpMethods.POST; } else if (attrType == typeof(DescriptionAttribute)) { metaData.Description = ((DescriptionAttribute)item[0]).Description; } else if (attrType == typeof(RestfulIgnoreAttribute)) { return(null); } else if (attrType == typeof(BeforeInterceptorAttribute)) { foreach (var before in item) { metaData.BeforeInterceptors.Add(((BeforeInterceptorAttribute)before).FilterType); } } else if (attrType == typeof(AfterInterceptorAttribute)) { foreach (var after in item) { metaData.AfterInterceptors.Add(((AfterInterceptorAttribute)after).FilterType); } } else if (attrType == typeof(AroundInterceptorAttribute)) { foreach (var around in item) { metaData.AroundInterceptors.Add(((AroundInterceptorAttribute)around).FilterType); } } else if (attrType == typeof(ErrorInterceptor)) { foreach (var error in item) { metaData.ErrorInterceptors.Add(((ErrorInterceptor)error).FilterType); } } else if (attrType == typeof(SerializationModeAtribute)) { metaData.SerializeMode = ((SerializationModeAtribute)item[0]).SerializeMode; } else if (attrType == typeof(AliasAttribute)) { metaData.Name = ((AliasAttribute)item[0]).Alias; } else if (attrType == typeof(MaxConcurrencyAttribute)) { metaData.MaxConcurrency = ((MaxConcurrencyAttribute)item[0]).MaxConcurrency; } else if (attrType == typeof(AlternativeAttribute)) { metaData.AlternativeService = ((AlternativeAttribute)item[0]).Path; } } if (metaData.Name == null) { metaData.Name = method.Name; } if (metaData.HttpMethod == null) { metaData.HttpMethod = groupMethod; } if (metaData.Path == null) { metaData.Path = groupPath + "/" + metaData.Name.ToLower(); } var ls = new List <RestfulRequestParameterMetaData>(); foreach (var item in method.Parameters) { var parameterMetaData = new RestfulRequestParameterMetaData(); parameterMetaData.RelatedType = item.ParameterType; var parameterFromSetted = false; foreach (var attr in item.Attributes) { var attrType = item.GetType(); if (attrType == typeof(BodyAttribute)) { parameterMetaData.FromBody = true; parameterFromSetted = true; } else if (attrType == typeof(QueryStringAttribute)) { parameterMetaData.QueryStringKey = ((QueryStringAttribute)attr[0]).Name; parameterFromSetted = true; } else if (attrType == typeof(DataAttribute)) { parameterMetaData.DataKey = ((DataAttribute)attr[0]).Name; } else if (attrType == typeof(FormAttribute)) { parameterMetaData.DataKey = ((FormAttribute)attr[0]).Name; } else if (attrType == typeof(PathVariableAttribute)) { parameterMetaData.PathVariableKey = ((PathVariableAttribute)attr[0]).VaribleName; parameterFromSetted = true; } else if (attrType == typeof(DefaultValueAttribute)) { parameterMetaData.DefaultValue = ((DefaultValueAttribute)attr[0]).Value; } else if (attrType == typeof(NotNullAttribute)) { parameterMetaData.NotNull = true; } else if (attrType == typeof(DefaultImplementAttribute)) { parameterMetaData.ImplType = ((DefaultImplementAttribute)attr[0]).Impl; } } if (!parameterFromSetted) { if (metaData.HttpMethod == HttpMethods.GET) { parameterMetaData.QueryStringKey = item.Name; } else { parameterMetaData.FromBody = true; } } ls.Add(parameterMetaData); } metaData.Parameters = ls.ToArray(); return(metaData); }