public override ActionParameterInfo[] GetActionParametersInfo(IStateKey stateKey, IActionKey actionKey)
        {
            string[] parameterNames = {};
            var      stateData      = m_StateManager.GetStateData((StateEntityKey)stateKey, false);

            switch (((IActionKeyWithGuid)actionKey).ActionGuid)
            {
            case var actionGuid when actionGuid == ActionScheduler.CollectGuid:
                parameterNames = Collect.parameterNames;
                break;

            case var actionGuid when actionGuid == ActionScheduler.NavigateGuid:
                parameterNames = Navigate.parameterNames;
                break;
            }

            var parameterInfo = new ActionParameterInfo[parameterNames.Length];

            for (var i = 0; i < parameterNames.Length; i++)
            {
                var traitBasedObjectId = stateData.GetTraitBasedObjectId(((ActionKey)actionKey)[i]);

#if DEBUG
                parameterInfo[i] = new ActionParameterInfo {
                    ParameterName = parameterNames[i], TraitObjectName = traitBasedObjectId.Name.ToString(), TraitObjectId = traitBasedObjectId.Id
                };
#else
                parameterInfo[i] = new ActionParameterInfo {
                    ParameterName = parameterNames[i], TraitObjectName = traitBasedObjectId.ToString(), TraitObjectId = traitBasedObjectId.Id
                };
#endif
            }

            return(parameterInfo);
        }
        private static List <ActionParameterInfo> GetActionParameters(MethodInfo action)
        {
            var result     = new List <ActionParameterInfo>();
            var parameters = action.GetParameters();

            foreach (var parameterInfo in parameters)
            {
                var param = new ActionParameterInfo();
                param.Name = parameterInfo.Name;
                param.Type = TypeConverter.GetTypeScriptName(parameterInfo.ParameterType);

                var bind = parameterInfo.GetCustomAttributes <BindAttribute>().FirstOrDefault();
                if (bind != null)
                {
                    param.Name = bind.Prefix ?? param.Name;
                }
                var fromBody = parameterInfo.GetCustomAttributes <FromBodyAttribute>().FirstOrDefault();
                // Parameters are from the URL unless specified by a [FromBody] attribute.
                param.FromUri = fromBody == null;

                //TODO: Support route parameters that are not 'id', might be hard as will need to parse routing setup
                if (parameterInfo.Name.Equals("id", StringComparison.OrdinalIgnoreCase))
                {
                    param.RouteProperty = true;
                }
                param.Name = param.Name.ToCamelCase();
                result.Add(param);
            }

            return(result);
        }
        private static List <ActionParameterInfo> GetActionParameters(MethodInfo action)
        {
            var result     = new List <ActionParameterInfo>();
            var parameters = action.GetParameters();

            foreach (var parameterInfo in parameters)
            {
                var param = new ActionParameterInfo();
                param.Name = param.OriginalName = parameterInfo.Name;
                param.Type = TypeConverter.GetTypeScriptName(parameterInfo.ParameterType);

                var bindAttribute = parameterInfo.GetCustomAttributes <BindAttribute>().FirstOrDefault();
                if (bindAttribute != null)
                {
                    param.Name = bindAttribute.Prefix ?? param.Name;
                }
                var fromBody = parameterInfo.GetCustomAttributes <FromBodyAttribute>().FirstOrDefault();
                // Parameters are from the URL unless specified by a [FromBody] attribute.
                param.FromUri = fromBody == null;

                param.Name = param.Name.ToCamelCase();
                result.Add(param);
            }

            return(result);
        }
        public override IActionParameterInfo[] GetActionParametersInfo(IStateKey stateKey, IActionKey actionKey)
        {
            string[] parameterNames = {};
            var      stateData      = m_StateManager.GetStateData((StateEntityKey)stateKey, false);

            switch (((IActionKeyWithGuid)actionKey).ActionGuid)
            {
            case var actionGuid when actionGuid == ActionScheduler.MoveDownGuid:
                parameterNames = MoveDown.parameterNames;
                break;

            case var actionGuid when actionGuid == ActionScheduler.MoveLeftGuid:
                parameterNames = MoveLeft.parameterNames;
                break;

            case var actionGuid when actionGuid == ActionScheduler.MoveRightGuid:
                parameterNames = MoveRight.parameterNames;
                break;

            case var actionGuid when actionGuid == ActionScheduler.MoveUpGuid:
                parameterNames = MoveUp.parameterNames;
                break;

            case var actionGuid when actionGuid == ActionScheduler.PickupKeyGuid:
                parameterNames = PickupKey.parameterNames;
                break;

            case var actionGuid when actionGuid == ActionScheduler.UseDoorLeftGuid:
                parameterNames = UseDoorLeft.parameterNames;
                break;

            case var actionGuid when actionGuid == ActionScheduler.UseDoorRightGuid:
                parameterNames = UseDoorRight.parameterNames;
                break;

            case var actionGuid when actionGuid == ActionScheduler.UseGateUpGuid:
                parameterNames = UseGateUp.parameterNames;
                break;
            }

            var parameterInfo = new IActionParameterInfo[parameterNames.Length];

            for (var i = 0; i < parameterNames.Length; i++)
            {
                var traitBasedObjectId = stateData.GetTraitBasedObjectId(((ActionKey)actionKey)[i]);

#if DEBUG
                parameterInfo[i] = new ActionParameterInfo {
                    ParameterName = parameterNames[i], TraitObjectName = traitBasedObjectId.Name.ToString(), TraitObjectId = traitBasedObjectId.Id
                };
#else
                parameterInfo[i] = new ActionParameterInfo {
                    ParameterName = parameterNames[i], TraitObjectName = traitBasedObjectId.ToString(), TraitObjectId = traitBasedObjectId.Id
                };
#endif
            }

            return(parameterInfo);
        }
Example #5
0
        public static List <ActionParameterInfo> GetActionParameters(MethodInfo action)
        {
            var result     = new List <ActionParameterInfo>();
            var parameters = action.GetParameters();

            foreach (var parameterInfo in parameters)
            {
                var param = new ActionParameterInfo();
                param.Name = parameterInfo.Name;
                param.Type = TypeConverter.GetTypeScriptName(parameterInfo.ParameterType);
                if (parameterInfo.ParameterType.IsEnum)
                {
                    param.Type = "Enums." + param.Type;
                }

                var bind = parameterInfo.GetCustomAttributes(false)
                           .FirstOrDefault(a => a.GetType().FullName == "Microsoft.AspNetCore.Mvc.BindAttribute");

                if (bind != null)
                {
                    param.Name = (bind.GetPropertyValue("Prefix") as string) ?? param.Name;
                }
                var fromBody = parameterInfo.GetCustomAttributes(false)
                               .FirstOrDefault(a => a.GetType().FullName == "Microsoft.AspNetCore.Mvc.FromBodyAttribute");
                // Parameters are from the URL unless specified by a [FromBody] attribute.
                param.FromUri = fromBody == null;

                //TODO: Support route parameters that are not 'id', might be hard as will need to parse routing setup
                if (parameterInfo.Name.Equals("id", StringComparison.OrdinalIgnoreCase))
                {
                    param.RouteProperty = true;
                }
                param.Name    = param.Name.ToCamelCase();
                param.ClrType = parameterInfo.ParameterType;
                result.Add(param);
            }

            return(result);
        }
Example #6
0
        public List <ActionParameterInfo> GetActionParameters(Type request, ServiceStackRouteInfo routeInfo)
        {
            var result = new List <ActionParameterInfo>();

            foreach (var parameter in routeInfo.RouteParameters)
            {
                var param    = new ActionParameterInfo();
                var property = request.GetProperty(parameter) ?? request.GetProperty(parameter.ToPascalCase());
                param.Name = property?.Name ?? parameter;
                param.Type = property == null ? "any" : TypeConverter.GetTypeScriptName(property.PropertyType);
                if (property != null && (property.PropertyType.IsEnum || Nullable.GetUnderlyingType(property.PropertyType)?.IsEnum == true))
                {
                    param.Type = "Enums." + param.Type;
                }
                param.FromUri = true;
                param.ClrType = property?.PropertyType;

                param.Name = (property?.Name ?? parameter).ToCamelCase();
                result.Add(param);
            }

            return(result);
        }