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")); }
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); } }
/// <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; } }