示例#1
0
 public void Configure(IApplicationBuilder app)
 {
     app.UseAuthentication();
     app.Use(_ => async context => {
         var requestContext = new CaberRequestContext {
             HttpContext = context
         };
         requestContext.RouteData = router.Route(requestContext);
         await handler.HandleAsync(requestContext);
     });
 }
示例#2
0
        public void MatchesRegisterRoute()
        {
            var httpContext = new DefaultHttpContext
            {
                Request = { Path = $"/register/{clientId}" }
            };
            var requestContext = new CaberRequestContext {
                HttpContext = httpContext
            };
            var routeData = router.Route(requestContext);

            Assert.That(routeData.Route, Is.InstanceOf <RegisterRoute>());
            Assert.That(routeData.Parameters, Does.Contain(RouteValue("client-uuid", clientId)));
        }
示例#3
0
 public Task ExecuteAsync(CaberRequestContext context)
 {
     context.WriteResponseMessage(statusCode, new object());
     return(Task.CompletedTask);
 }
示例#4
0
            public Task ExecuteAsync(CaberRequestContext context)
            {
                var action     = context.Services.GetService <RegisterAction>();
                var requestDto = new RequestDto();

                try
                {
                    context.ReadRequestMessage(requestDto);
                    ValidateRequest(requestDto, context.GetPeerPrincipal());
                }
                catch (Exception ex)
                {
                    context.Logger.BadRequest(ex, typeof(RegisterRoute));
                    context.BadRequest();
                    return(Task.CompletedTask);
                }

                var request = new RegisterAction.Request
                {
                    ClientIdentity = new CaberIdentity {
                        Uuid = requestDto.clientIdentity.uuid
                    },
                    ServerIdentity = new CaberIdentity {
                        Uuid = requestDto.serverIdentity.uuid
                    },
                    Environment = new CaberSharedEnvironment
                    {
                        HashAlgorithm = requestDto.environment.hashAlgorithm
                    },
                    Roots = requestDto.roots.Select(r => r.name).ToArray()
                };

                var response = action.Execute(request, context.GetPeerPrincipal());

                switch (response.Type)
                {
                case RegisterAction.ResponseType.Accepted:
                    context.WriteResponseMessage(StatusCodes.Status200OK, new SucceededResponseDto
                    {
                        serverIdentity = new CaberIdentityDto {
                            uuid = response.ServerIdentity.Uuid
                        },
                        acceptedRoots = response.AcceptedRoots.Select(r => new RootDto {
                            name = r
                        }).ToArray()
                    });
                    break;

                case RegisterAction.ResponseType.EnvironmentNotSupported:
                    context.WriteResponseMessage(StatusCodes.Status501NotImplemented, new NotImplementedResponseDto
                    {
                        serverIdentity = new CaberIdentityDto {
                            uuid = response.ServerIdentity.Uuid
                        },
                        environment = new EnvironmentDto {
                            hashAlgorithm = response.Environment.HashAlgorithm
                        },
                    });
                    break;

                default:
                    context.BugCheck();
                    break;
                }

                return(Task.CompletedTask);
            }