Beispiel #1
0
 public void Valid_Service_Names()
 {
     Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceName("taskever/task"));
     Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceName("taskever/tasks/task"));
     Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceName("taskever/taskService"));
     Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceName("taskever/tasks/taskService"));
     Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceName("taskever/tasks/task_service"));
     Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceName("taskever/myNameSpace1/MyNameSpace2/mynamespace3/myserviceName"));
     Assert.Equal(true, DynamicApiServiceNameHelper.IsValidServiceName("taskever/myName_Space1/MyName_Space2/mynamespace_3/myservice"));
 }
Beispiel #2
0
 public void Invalid_Service_Names()
 {
     Assert.Equal(false, DynamicApiServiceNameHelper.IsValidServiceName(""));
     Assert.Equal(false, DynamicApiServiceNameHelper.IsValidServiceName("task"));
     Assert.Equal(false, DynamicApiServiceNameHelper.IsValidServiceName("task_service"));
     Assert.Equal(false, DynamicApiServiceNameHelper.IsValidServiceName("taskever/task service"));
     Assert.Equal(false, DynamicApiServiceNameHelper.IsValidServiceName("taskever/123task_service"));
     Assert.Equal(false, DynamicApiServiceNameHelper.IsValidServiceName(" taskever/task_service"));
     Assert.Equal(false, DynamicApiServiceNameHelper.IsValidServiceName("taskever/ task_service"));
 }
        /// <summary>
        /// Creates a new instance of ApiControllerInfoBuilder.
        /// </summary>
        /// <param name="serviceName">Name of the controller</param>
        public ApiControllerBuilder(string serviceName)
        {
            if (string.IsNullOrWhiteSpace(serviceName))
            {
                throw new ArgumentException("serviceName null or empty!", "serviceName");
            }

            if (!DynamicApiServiceNameHelper.IsValidServiceName(serviceName))
            {
                throw new ArgumentException("serviceName is not properly formatted! It must contain a single-depth namespace at least! For example: 'myapplication/myservice'.", "serviceName");
            }

            _serviceName = serviceName;

            _actionBuilders = new Dictionary <string, ApiControllerActionBuilder <T> >();
            foreach (var methodInfo in DynamicApiControllerActionHelper.GetMethodsOfType(typeof(T)))
            {
                _actionBuilders[methodInfo.Name] = new ApiControllerActionBuilder <T>(this, methodInfo);
            }
        }
Beispiel #4
0
        /// <summary>
        /// Creates a new instance of ApiControllerInfoBuilder.
        /// </summary>
        /// <param name="serviceName">Name of the controller</param>
        /// <param name="iocResolver">Ioc resolver</param>
        public DefaultControllerBuilder(string serviceName, IIocResolver iocResolver, IControllerRegister defaultControllerManager)
        {
            Check.NotNull(iocResolver, nameof(iocResolver));

            if (string.IsNullOrWhiteSpace(serviceName))
            {
                throw new ArgumentException("serviceName null or empty!", "serviceName");
            }

            if (!DynamicApiServiceNameHelper.IsValidServiceName(serviceName))
            {
                throw new ArgumentException("serviceName is not properly formatted! It must contain a single-depth namespace at least! For example: 'myapplication/myservice'.", "serviceName");
            }

            _iocResolver = iocResolver;
            _defaultControllerManager = defaultControllerManager;

            ServiceName          = serviceName;
            ServiceInterfaceType = typeof(T);

            _actionBuilders = new Dictionary <string, TControllerActionBuilder>();
            var methodInfos = DynamicApiControllerActionHelper.GetMethodsOfType(typeof(T))
                              .Where(methodInfo => methodInfo.GetSingleAttributeOrNull <BlocksActionNameAttribute>() != null);

            foreach (var methodInfo in methodInfos)
            {
                var actionBuilder     = (TControllerActionBuilder)typeof(TControllerActionBuilder).New(this, methodInfo, iocResolver);
                var remoteServiceAttr = methodInfo.GetSingleAttributeOrNull <RemoteServiceAttribute>();
                if (remoteServiceAttr != null && !remoteServiceAttr.IsEnabledFor(methodInfo))
                {
                    actionBuilder.DontCreateAction();
                }
                var actionNameAttr = methodInfo.GetSingleAttributeOrNull <BlocksActionNameAttribute>();


                _actionBuilders[actionNameAttr.ActionName] =
                    actionBuilder;
            }
        }