Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
 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);
     }
 }
Ejemplo n.º 6
0
        /// <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);
        }
Ejemplo n.º 7
0
        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);
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }