Exemplo n.º 1
0
        /// <summary>
        /// Allows callers to add a service via HTTP requests by providing a
        /// specially formatted service description.
        /// </summary>
        public static async Task AddService(HttpContext context, Func <Task> next)
        {
            RequiresArgument.NotNull(context, "context");
            RequiresArgument.NotNull(next, "next");

            if (!context.Request.Matches("POST", "/__vs/services"))
            {
                await next.Invoke();

                return;
            }

            var serviceDesc = await ParseServiceDescription(context.Request);

            RequestRequires.NotNullOrWhiteSpace(serviceDesc.Method, "An HTTP method, i.e. GET, POST, PUT, DELETE, etc., must be provided");
            RequestRequires.NotNullOrWhiteSpace(serviceDesc.Path, "A path must be provided. For example /api/myResources/53");

            var service = new Service(serviceDesc);

            if (services.TryAdd(service))
            {
                await context.Response.Ok(service.Id.ToString());
            }
            else
            {
                throw new BadRequestException("Unable to add service. A service with the same ID or the same request filter already exists.");
            }
        }
Exemplo n.º 2
0
 public void RequestRequires_NotNullOrWhiteSpace_DoesNothingOnNonNullValue()
 {
     // Act
     RequestRequires.NotNullOrWhiteSpace("lorem ipsum", "Value cannot be null.");
 }
Exemplo n.º 3
0
 public void RequestRequires_NotNullOrWhiteSpace_ThrowsOnNullOrWhiteSpaceValue()
 {
     // Act
     RequestRequires.NotNullOrWhiteSpace("   \t  ", "Value cannot be null or white space.");
 }