Search in sources :

Example 16 with Route

use of io.vertx.ext.web.Route in project mbed-cloud-sdk-java by ARMmbed.

the class TestServer method defineResetRoute.

private void defineResetRoute() {
    Route route = router.route(HttpMethod.POST, "/reset").produces(APPLICATION_JSON);
    route.blockingHandler(routingContext -> {
        execute(205, routingContext, new ServerAction() {

            @Override
            public Object execute() throws Exception {
                engine.reset();
                return null;
            }
        }, false);
    });
}
Also used : JsonObject(io.vertx.core.json.JsonObject) Route(io.vertx.ext.web.Route) UnknownAPIException(com.arm.mbed.cloud.sdk.testserver.internal.model.UnknownAPIException) ServerCacheException(com.arm.mbed.cloud.sdk.testserver.cache.ServerCacheException) APICallException(com.arm.mbed.cloud.sdk.testutils.APICallException) MissingInstanceException(com.arm.mbed.cloud.sdk.testserver.cache.MissingInstanceException)

Example 17 with Route

use of io.vertx.ext.web.Route in project mbed-cloud-sdk-java by ARMmbed.

the class TestServer method defineListInstanceMethodsRoute.

private void defineListInstanceMethodsRoute() {
    Route route = router.route(HttpMethod.GET, "/instances/:" + PARAM_INSTANCE + "/methods").produces(APPLICATION_JSON);
    route.blockingHandler(routingContext -> {
        String instanceId = routingContext.request().getParam(PARAM_INSTANCE);
        execute(200, routingContext, new ServerAction() {

            @Override
            public Object execute() throws Exception {
                return engine.listInstanceMethods(instanceId).stream().map(m -> m.toSdkApi()).collect(Collectors.toList());
            }
        }, false);
    });
}
Also used : JsonObject(io.vertx.core.json.JsonObject) Route(io.vertx.ext.web.Route) UnknownAPIException(com.arm.mbed.cloud.sdk.testserver.internal.model.UnknownAPIException) ServerCacheException(com.arm.mbed.cloud.sdk.testserver.cache.ServerCacheException) APICallException(com.arm.mbed.cloud.sdk.testutils.APICallException) MissingInstanceException(com.arm.mbed.cloud.sdk.testserver.cache.MissingInstanceException)

Example 18 with Route

use of io.vertx.ext.web.Route in project vertx-swagger by bobxwang.

the class RestApiVerticle method configRoute.

private void configRoute(final Router router) {
    router.get("/logout").handler(context -> {
        context.clearUser();
        context.response().setStatusCode(302).putHeader("Location", "/").end();
    });
    AuthProvider authProvider = ChainAuth.create();
    AuthHandler basicAuthHandler = BasicAuthHandler.create(authProvider);
    router.route("/private/*").handler(basicAuthHandler);
    Route route = router.route(HttpMethod.GET, "/private/path/");
    route.handler(ctx -> ctx.response().end(new JsonObject().put("rs", new Date().toString()).encodePrettily()));
    router.route(HttpMethod.GET, "/some/path/").handler(routingContext -> {
        HttpServerResponse response = routingContext.response();
        // 由于我们会在不同的处理器里写入响应,因此需要启用分块传输,仅当需要通过多个处理器输出响应时才需要
        response.setChunked(true);
        response.write("route1\n");
        // 1 秒后调用下一个处理器
        routingContext.vertx().setTimer(1000, tid -> routingContext.next());
    });
    router.route(HttpMethod.GET, "/some/path/").handler(routingContext -> {
        HttpServerResponse response = routingContext.response();
        response.write("route2\n");
        // 1 秒后调用下一个处理器
        routingContext.vertx().setTimer(1000, tid -> routingContext.next());
    });
    router.route(HttpMethod.GET, "/some/path/").handler(routingContext -> {
        HttpServerResponse response = routingContext.response();
        response.write("route3");
        // 结束响应
        routingContext.response().end();
    });
    router.route(HttpMethod.GET, "/long/time").blockingHandler(ctx -> {
        // call other service maybe long time, so here we using block pattern
        try {
            Thread.sleep(5000l);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        ctx.response().end(new JsonObject().put("rs", new Date().toString()).encodePrettily());
    });
    // 如果您需要在一个阻塞处理器中处理一个 multipart 类型的表单数据,您需要首先使用一个非阻塞的处理器来调用 setExpectMultipart(true)
    router.post("/some/longtime/endpoint").handler(ctx -> {
        ctx.request().setExpectMultipart(true);
        ctx.next();
    }).blockingHandler(ctx -> {
    // 执行某些阻塞操作
    });
}
Also used : AuthHandler(io.vertx.ext.web.handler.AuthHandler) BasicAuthHandler(io.vertx.ext.web.handler.BasicAuthHandler) Route(io.vertx.ext.web.Route) AuthHandler(io.vertx.ext.web.handler.AuthHandler) ChainAuth(io.vertx.ext.auth.ChainAuth) Date(java.util.Date) ApiImplicitParam(io.swagger.annotations.ApiImplicitParam) Router(io.vertx.ext.web.Router) Autowired(org.springframework.beans.factory.annotation.Autowired) RoutingContext(io.vertx.ext.web.RoutingContext) Scope(org.springframework.context.annotation.Scope) AuthProvider(io.vertx.ext.auth.AuthProvider) BasicAuthHandler(io.vertx.ext.web.handler.BasicAuthHandler) Component(org.springframework.stereotype.Component) BBRouter(com.bob.vertx.swagger.BBRouter) HttpMethod(io.vertx.core.http.HttpMethod) HttpServerResponse(io.vertx.core.http.HttpServerResponse) AbstractVerticle(io.vertx.core.AbstractVerticle) JsonObject(io.vertx.core.json.JsonObject) ApiImplicitParams(io.swagger.annotations.ApiImplicitParams) ConfigurableBeanFactory(org.springframework.beans.factory.config.ConfigurableBeanFactory) HttpServerResponse(io.vertx.core.http.HttpServerResponse) JsonObject(io.vertx.core.json.JsonObject) AuthProvider(io.vertx.ext.auth.AuthProvider) Route(io.vertx.ext.web.Route) Date(java.util.Date)

Example 19 with Route

use of io.vertx.ext.web.Route in project vertx-web by vert-x3.

the class OpenAPI3RouterFactoryImpl method getRouter.

@Override
public Router getRouter() {
    Router router = Router.router(vertx);
    router.route().handler(options.getBodyHandler());
    List<Handler<RoutingContext>> globalSecurityHandlers = securityHandlers.solveSecurityHandlers(spec.getSecurity(), this.getOptions().isRequireSecurityHandlers());
    for (OperationValue operation : operations.values()) {
        // If user don't want 501 handlers and the operation is not configured, skip it
        if (!options.isMountNotImplementedHandler() && !operation.isConfigured())
            continue;
        List<Handler> handlersToLoad = new ArrayList<>();
        List<Handler> failureHandlersToLoad = new ArrayList<>();
        // Resolve security handlers
        handlersToLoad.addAll(globalSecurityHandlers);
        handlersToLoad.addAll(securityHandlers.solveSecurityHandlers(operation.getOperationModel().getSecurity(), this.getOptions().isRequireSecurityHandlers()));
        // Generate ValidationHandler
        Handler<RoutingContext> validationHandler = new OpenAPI3RequestValidationHandlerImpl(operation.getOperationModel(), operation.getParameters(), this.spec);
        handlersToLoad.add(validationHandler);
        // Check validation failure handler
        if (this.options.isMountValidationFailureHandler())
            failureHandlersToLoad.add(this.options.getValidationFailureHandler());
        // Check if path is set by user
        if (operation.isConfigured()) {
            handlersToLoad.addAll(operation.getUserHandlers());
            failureHandlersToLoad.addAll(operation.getUserFailureHandlers());
        } else {
            handlersToLoad.add(this.options.getNotImplementedFailureHandler());
        }
        // Now add all handlers to route
        OpenAPI3PathResolver pathResolver = new OpenAPI3PathResolver(operation.getPath(), operation.getParameters());
        Route route = router.routeWithRegex(operation.getMethod(), pathResolver.solve().toString());
        // Set produces/consumes
        Set<String> consumes = new HashSet<>();
        Set<String> produces = new HashSet<>();
        if (operation.getOperationModel().getRequestBody() != null && operation.getOperationModel().getRequestBody().getContent() != null)
            consumes.addAll(operation.getOperationModel().getRequestBody().getContent().keySet());
        if (operation.getOperationModel().getResponses() != null)
            for (ApiResponse response : operation.getOperationModel().getResponses().values()) if (response.getContent() != null)
                produces.addAll(response.getContent().keySet());
        for (String ct : consumes) route.consumes(ct);
        for (String ct : produces) route.produces(ct);
        if (options.isMountResponseContentTypeHandler() && produces.size() != 0)
            route.handler(ResponseContentTypeHandler.create());
        route.setRegexGroupsNames(new ArrayList<>(pathResolver.getMappedGroups().values()));
        for (Handler handler : handlersToLoad) route.handler(handler);
        for (Handler failureHandler : failureHandlersToLoad) route.failureHandler(failureHandler);
    }
    return router;
}
Also used : Router(io.vertx.ext.web.Router) BodyHandler(io.vertx.ext.web.handler.BodyHandler) ResponseContentTypeHandler(io.vertx.ext.web.handler.ResponseContentTypeHandler) Handler(io.vertx.core.Handler) ApiResponse(io.swagger.v3.oas.models.responses.ApiResponse) RoutingContext(io.vertx.ext.web.RoutingContext) Route(io.vertx.ext.web.Route)

Example 20 with Route

use of io.vertx.ext.web.Route in project vertx-web by vert-x3.

the class TemplateHandlerImplTest method testSetIndex.

@Test
public void testSetIndex() {
    TemplateEngine templateEngine = mock(TemplateEngine.class);
    RoutingContext routingContext = mock(RoutingContext.class);
    when(routingContext.normalisedPath()).thenReturn("/");
    Route currentRoute = mock(Route.class);
    when(currentRoute.getPath()).thenReturn("/");
    when(routingContext.currentRoute()).thenReturn(currentRoute);
    TemplateHandler templateHandler = new TemplateHandlerImpl(templateEngine, "templates", "ext");
    templateHandler.setIndexTemplate("home");
    templateHandler.handle(routingContext);
    verify(templateEngine).render(any(), eq("templates"), eq("/home"), any());
}
Also used : TemplateEngine(io.vertx.ext.web.templ.TemplateEngine) TemplateHandlerImpl(io.vertx.ext.web.handler.impl.TemplateHandlerImpl) RoutingContext(io.vertx.ext.web.RoutingContext) TemplateHandler(io.vertx.ext.web.handler.TemplateHandler) Route(io.vertx.ext.web.Route) Test(org.junit.Test)

Aggregations

Route (io.vertx.ext.web.Route)30 JsonObject (io.vertx.core.json.JsonObject)17 ServerCacheException (com.arm.mbed.cloud.sdk.testserver.cache.ServerCacheException)14 UnknownAPIException (com.arm.mbed.cloud.sdk.testserver.internal.model.UnknownAPIException)14 APICallException (com.arm.mbed.cloud.sdk.testutils.APICallException)14 MissingInstanceException (com.arm.mbed.cloud.sdk.testserver.cache.MissingInstanceException)13 RoutingContext (io.vertx.ext.web.RoutingContext)10 Router (io.vertx.ext.web.Router)7 HttpMethod (io.vertx.core.http.HttpMethod)4 AbstractVerticle (io.vertx.core.AbstractVerticle)3 Handler (io.vertx.core.Handler)3 HttpServerResponse (io.vertx.core.http.HttpServerResponse)3 TemplateHandler (io.vertx.ext.web.handler.TemplateHandler)3 TemplateHandlerImpl (io.vertx.ext.web.handler.impl.TemplateHandlerImpl)3 TemplateEngine (io.vertx.ext.web.templ.TemplateEngine)3 Date (java.util.Date)3 Map (java.util.Map)3 Set (java.util.Set)3 Test (org.junit.Test)3 APIMethodResult (com.arm.mbed.cloud.sdk.testserver.internal.model.APIMethodResult)2