private string GetServiceNameByCaption(string caption) { if (!CurrentBotStructureInfo.InitializeServicesFromAttributes) { if (Services.TryGetValue(caption, out Type service)) { ServiceContractAttribute serviceAttribute = service.GetCustomAttribute <ServiceContractAttribute>(); return(serviceAttribute.Name); } else { return(caption); } } foreach (Type service in Services.Values) { ServiceContractAttribute serviceAttribute = service.GetCustomAttribute <ServiceContractAttribute>(); BotDisplayNameAttribute nameAttribute = service.GetCustomAttribute <BotDisplayNameAttribute>(); if (nameAttribute == null) { continue; } else if (nameAttribute.Content.Equals(caption, StringComparison.OrdinalIgnoreCase)) { return(serviceAttribute.Name); } } return(caption); }
private MethodInfo FindMethodByCaption(Type service, string caption) { foreach (MethodInfo item in service.GetFullServiceLevelMethods()) { if (CurrentBotStructureInfo.InitializeServicesFromAttributes) { BotDisplayNameAttribute nameAttribute = item.GetCustomAttribute <BotDisplayNameAttribute>(); if (nameAttribute == null) { continue; } if (nameAttribute.Content.Equals(caption, StringComparison.OrdinalIgnoreCase)) { return(item); } } else { if (item.Name.Equals(caption, StringComparison.OrdinalIgnoreCase)) { return(item); } } } return(null); }
private ParameterInfo FindParameterByName(MethodInfo methodInfo, string name, bool nameIsCaption) { BotDisplayNameAttribute nameAttribute = methodInfo.GetCustomAttribute <BotDisplayNameAttribute>(); foreach (ParameterInfo item in methodInfo.GetParameters()) { if (!nameIsCaption) { if (item.Name.Equals(name, StringComparison.OrdinalIgnoreCase)) { return(item); } } else { string parameterName = ""; if (CurrentBotStructureInfo.InitializeServicesFromAttributes) { if (nameAttribute != null) { parameterName = nameAttribute.FindValue(item.Name); //for take parameter attribute if (parameterName == null) { nameAttribute = null; } } //take attribute of parameter if (nameAttribute == null) { nameAttribute = item.GetCustomAttribute <BotDisplayNameAttribute>(); } if (nameAttribute == null) { continue; } //if parametername not found if (string.IsNullOrEmpty(parameterName)) { parameterName = nameAttribute.Content; } } else { parameterName = item.Name; } if (parameterName.Equals(name, StringComparison.OrdinalIgnoreCase)) { return(item); } } } return(null); }
/// <summary> /// get buttons of all services /// </summary> /// <returns></returns> private List <List <BotButtonInfo> > GetListOfServicesButtons(TelegramClientInfo clientInfo) { List <BotButtonInfo> columns = new List <BotButtonInfo>(); List <List <BotButtonInfo> > rows = new List <List <BotButtonInfo> >(); int columnIndex = 0; List <System.Type> services = _serverBase.GetListOfRegistredTypes().ToList(); for (int i = 0; i < services.Count; i++) { System.Type item = services[i]; ServiceContractAttribute attribute = item.GetCustomAttribute <ServiceContractAttribute>(); if (attribute.ServiceType != ServiceType.HttpService) { continue; } string serviceName = ""; if (CurrentBotStructureInfo.InitializeServicesFromAttributes) { BotDisplayNameAttribute nameAttribute = item.GetCustomAttribute <BotDisplayNameAttribute>(); if (nameAttribute == null) { continue; } //serviceName = nameAttribute.Content; } serviceName = attribute.Name; if (!CurrentBotStructureInfo.OnServiceGenerating(serviceName, clientInfo)) { continue; } if (!Services.ContainsKey(attribute.Name)) { Services.Add(serviceName, item); } if (columnIndex == 3) { columnIndex = 0; rows.Add(columns.ToList()); columns.Clear(); } columns.Add(GetServiceCaption(item)); columnIndex++; } if (rows.Count == 0) { rows.Add(columns); } return(rows); }
private string GetMethodCaption(MethodInfo method) { if (CurrentBotStructureInfo.InitializeServicesFromAttributes) { BotDisplayNameAttribute nameAttribute = method.GetCustomAttribute <BotDisplayNameAttribute>(); if (nameAttribute == null) { return("null"); } return(nameAttribute.Content); } else { return(method.Name); } }
/// <summary> /// get buttons of service /// </summary> /// <param name="service"></param> /// <returns></returns> private List <List <BotButtonInfo> > GetServiceMethodsButtons(Type service, TelegramClientInfo clientInfo) { List <BotButtonInfo> columns = new List <BotButtonInfo>(); List <List <BotButtonInfo> > rows = new List <List <BotButtonInfo> >(); int columnIndex = 0; List <MethodInfo> methods = service.GetFullServiceLevelMethods().ToList(); for (int i = 0; i < methods.Count; i++) { MethodInfo item = methods[i]; string methodName = ""; if (CurrentBotStructureInfo.InitializeServicesFromAttributes) { BotDisplayNameAttribute nameAttribute = item.GetCustomAttribute <BotDisplayNameAttribute>(); if (nameAttribute == null) { continue; } methodName = nameAttribute.Content; } else { methodName = item.Name; } //create new row after 2 columns if (columnIndex == 2) { columnIndex = 0; rows.Add(columns.ToList()); columns.Clear(); } columns.Add(methodName); columnIndex++; } if (rows.Count == 0) { rows.Add(columns); } rows.Add(new List <BotButtonInfo>() { new BotButtonInfo(CurrentBotStructureInfo.GetCancelButtonText(clientInfo)) }); return(rows); }
private string GetServiceCaption(Type service) { ServiceContractAttribute serviceAttribute = service.GetCustomAttribute <ServiceContractAttribute>(); if (CurrentBotStructureInfo.InitializeServicesFromAttributes) { BotDisplayNameAttribute nameAttribute = service.GetCustomAttribute <BotDisplayNameAttribute>(); if (nameAttribute == null) { return(serviceAttribute.Name); } return(nameAttribute.Content); } else { return(serviceAttribute.Name); } }
private string GetParameterCaption(MethodInfo method, ParameterInfo parameter) { BotDisplayNameAttribute nameAttribute = method.GetCustomAttribute <BotDisplayNameAttribute>(); string parameterName = ""; if (CurrentBotStructureInfo.InitializeServicesFromAttributes) { if (nameAttribute != null) { parameterName = nameAttribute.FindValue(parameter.Name); //for take parameter attribute if (parameterName == null) { nameAttribute = null; } } //take attribute of parameter if (nameAttribute == null) { nameAttribute = parameter.GetCustomAttribute <BotDisplayNameAttribute>(); } if (nameAttribute == null) { return("null"); } //if parametername not found if (string.IsNullOrEmpty(parameterName)) { parameterName = nameAttribute.Content; } } else { parameterName = parameter.Name; } return(parameterName); }
private List <List <BotButtonInfo> > GetMethodParametersButtons(MethodInfo method, TelegramClientInfo clientInfo) { List <BotButtonInfo> columns = new List <BotButtonInfo>(); List <List <BotButtonInfo> > rows = new List <List <BotButtonInfo> >(); int columnIndex = 0; List <ParameterInfo> parameters = method.GetParameters().ToList(); BotDisplayNameAttribute nameAttribute = method.GetCustomAttribute <BotDisplayNameAttribute>(); for (int i = 0; i < parameters.Count; i++) { ParameterInfo item = parameters[i]; string parameterName = ""; if (CurrentBotStructureInfo.InitializeServicesFromAttributes) { if (nameAttribute != null) { parameterName = nameAttribute.FindValue(item.Name); //for take parameter attribute if (parameterName == null) { nameAttribute = null; } } //take attribute of parameter if (nameAttribute == null) { nameAttribute = item.GetCustomAttribute <BotDisplayNameAttribute>(); } if (nameAttribute == null) { continue; } //if parametername not found if (string.IsNullOrEmpty(parameterName)) { parameterName = nameAttribute.Content; } } else { parameterName = item.Name; } if (columnIndex == 2) { columnIndex = 0; rows.Add(columns.ToList()); columns.Clear(); } columns.Add(parameterName); columnIndex++; } if (rows.Count == 0) { rows.Add(columns); } rows.Add(new List <BotButtonInfo>() { new BotButtonInfo(CurrentBotStructureInfo.GetSendButtonText(clientInfo)) }); rows.Add(new List <BotButtonInfo>() { new BotButtonInfo(CurrentBotStructureInfo.GetCancelButtonText(clientInfo)) }); return(rows); }