com.linecorp.armeria.common.HttpResponse.from()方法的使用及代码示例

x33g5p2x  于2022-01-20 转载在 其他  
字(10.6k)|赞(0)|评价(0)|浏览(82)

本文整理了Java中com.linecorp.armeria.common.HttpResponse.from()方法的一些代码示例,展示了HttpResponse.from()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。HttpResponse.from()方法的具体详情如下:
包路径:com.linecorp.armeria.common.HttpResponse
类名称:HttpResponse
方法名:from

HttpResponse.from介绍

[英]Creates a new HTTP response that delegates to the HttpResponse produced by the specified CompletionStage. If the specified CompletionStage fails, the returned response will be closed with the same cause as well.
[中]创建一个新的HTTP响应,该响应委托给指定的CompletionStage生成的HttpResponse。如果指定的CompletionStage失败,返回的响应也将以相同的原因关闭。

代码示例

代码示例来源:origin: line/armeria

@Override
  protected Deferred<HttpResponse> defer(ClientRequestContext ctx, HttpRequest req) throws Exception {
    return new Deferred<HttpResponse>() {
      private final CompletableFuture<HttpResponse> responseFuture = new CompletableFuture<>();
      private final HttpResponse res = HttpResponse.from(responseFuture);

      @Override
      public HttpResponse response() {
        return res;
      }

      @Override
      public void delegate(HttpResponse response) {
        responseFuture.complete(response);
      }

      @Override
      public void close(Throwable cause) {
        responseFuture.completeExceptionally(cause);
      }
    };
  }
}

代码示例来源:origin: line/armeria

private static HttpResponse respond(CompletableFuture<HttpResponse> future, Disposable disposable) {
    final HttpResponse response = HttpResponse.from(future);
    response.completionFuture().exceptionally(cause -> {
      disposable.dispose();
      return null;
    });
    return response;
  }
}

代码示例来源:origin: line/armeria

@Override
public HttpResponse serve(ServiceRequestContext ctx, HttpRequest req) throws Exception {
  return HttpResponse.from(serve0(ctx, req));
}

代码示例来源:origin: line/armeria

@Override
protected final HttpResponse doPost(ServiceRequestContext ctx, HttpRequest req) {
  return HttpResponse.from(req.aggregate()
                .thenApply(this::echo)
                .exceptionally(CompletionActions::log));
}

代码示例来源:origin: line/armeria

@Override
protected HttpResponse doPut(ServiceRequestContext ctx, HttpRequest req) throws Exception {
  return HttpResponse.from(
      updateHealthStatus(ctx, req).thenApply(HttpResponse::of)
                    .exceptionally(HttpResponse::ofFailure));
}

代码示例来源:origin: line/armeria

@Override
protected HttpResponse doExecute(ClientRequestContext ctx, HttpRequest req) throws Exception {
  final boolean hasInitialAuthority = !isNullOrEmpty(req.headers().authority());
  final CompletableFuture<HttpResponse> responseFuture = new CompletableFuture<>();
  final HttpResponse res = HttpResponse.from(responseFuture);
  final HttpRequestDuplicator reqDuplicator = new HttpRequestDuplicator(req, 0, ctx.eventLoop());
  doExecute0(ctx, reqDuplicator, req, res, responseFuture, hasInitialAuthority);
  return res;
}

代码示例来源:origin: line/armeria

private static ServerBuilder configureService(ServerBuilder sb, HttpHandler httpHandler,
                       DataBufferFactoryWrapper<?> factoryWrapper,
                       @Nullable String serverHeader) {
  final ArmeriaHttpHandlerAdapter handler =
      new ArmeriaHttpHandlerAdapter(httpHandler, factoryWrapper);
  return sb.service(PathMapping.ofCatchAll(), (ctx, req) -> {
    final CompletableFuture<HttpResponse> future = new CompletableFuture<>();
    final HttpResponse response = HttpResponse.from(future);
    final Disposable disposable = handler.handle(ctx, req, future, serverHeader).subscribe();
    response.completionFuture().whenComplete((unused, cause) -> {
      if (cause != null) {
        logger.debug("{} Response stream has been cancelled.", ctx, cause);
        disposable.dispose();
      }
    });
    return response;
  });
}

代码示例来源:origin: line/armeria

@Override
  @SuppressWarnings("unchecked")
  public HttpResponse convertResponse(ServiceRequestContext ctx,
                    HttpHeaders headers,
                    @Nullable Object result,
                    HttpHeaders trailingHeaders) throws Exception {
    final CompletableFuture<?> f;
    if (result instanceof Publisher) {
      f = collectFrom((Publisher<Object>) result);
    } else if (result instanceof Stream) {
      f = collectFrom((Stream<Object>) result, ctx.blockingTaskExecutor());
    } else {
      return ResponseConverterFunction.fallthrough();
    }
    assert f != null;
    return HttpResponse.from(f.handle((aggregated, cause) -> {
      if (cause != null) {
        return exceptionHandler.handleException(ctx, ctx.request(), cause);
      }
      try {
        return responseConverter.convertResponse(ctx, headers, aggregated, trailingHeaders);
      } catch (Exception e) {
        return exceptionHandler.handleException(ctx, ctx.request(), e);
      }
    }));
  }
}

代码示例来源:origin: line/armeria

@Override
public HttpResponse serve(ServiceRequestContext ctx, HttpRequest req) throws Exception {
  final SamlServiceFunction func = serviceMap.get(req.path());
  if (func == null) {
    return HttpResponse.of(HttpStatus.BAD_REQUEST);
  }
  final CompletionStage<AggregatedHttpMessage> f;
  if (portConfigHolder.isDone()) {
    f = req.aggregate();
  } else {
    f = portConfigHolder.future().thenCompose(unused -> req.aggregate());
  }
  return HttpResponse.from(f.handle((msg, cause) -> {
    if (cause != null) {
      return HttpResponse.of(HttpStatus.BAD_REQUEST);
    }
    final SamlPortConfig portConfig = portConfigHolder.config().get();
    if (portConfig.scheme().isTls() != ctx.sessionProtocol().isTls()) {
      return HttpResponse.of(HttpStatus.BAD_REQUEST);
    }
    // Use user-specified hostname if it exists.
    // If there's no hostname set by a user, the default virtual hostname will be used.
    final String defaultHostname = firstNonNull(sp.hostname(), ctx.virtualHost().defaultHostname());
    return func.serve(ctx, msg, defaultHostname, portConfig);
  }));
}

代码示例来源:origin: line/armeria

final HttpResponse res = HttpResponse.from(responseFuture);
ctx.logBuilder().serializationFormat(serializationFormat);
ctx.logBuilder().deferRequestContent();

代码示例来源:origin: line/armeria

if (sloResEndpoint == null) {
  return HttpResponse.from(sloHandler.logoutSucceeded(ctx, msg, messageContext)
                    .thenApply(unused -> HttpResponse.of(HttpStatus.OK)));
try {
  final HttpResponse response = respond(logoutResponse, sloResEndpoint);
  return HttpResponse.from(sloHandler.logoutSucceeded(ctx, msg, messageContext)
                    .thenApply(unused -> response));
} catch (SamlException e) {
        ctx, logoutRequest.getID(), e);
  final HttpResponse response = fail(ctx, logoutRequest, sloResEndpoint);
  return HttpResponse.from(sloHandler.logoutFailed(ctx, msg, e)
                    .thenApply(unused -> response));

代码示例来源:origin: line/armeria

return HttpResponse.from(
    ((CompletionStage<?>) result)
        .thenApply(object -> convertResponse(ctx, req, newHeaders, object,

代码示例来源:origin: line/armeria

@Override
  public HttpResponse serve(ServiceRequestContext ctx, HttpRequest req) throws Exception {
    return HttpResponse.from(AuthorizerUtil.authorize(authorizer, ctx, req).handleAsync((result, cause) -> {
      try {
        if (cause == null) {
          if (result != null) {
            return result ? successHandler.authSucceeded(delegate(), ctx, req)
                   : failureHandler.authFailed(delegate(), ctx, req, null);
          }
          cause = AuthorizerUtil.newNullResultException(authorizer);
        }

        return failureHandler.authFailed(delegate(), ctx, req, cause);
      } catch (Exception e) {
        return Exceptions.throwUnsafely(e);
      }
    }, ctx.contextAwareEventLoop()));
  }
}

代码示例来源:origin: line/armeria

return HttpResponse.from(responseFuture);

代码示例来源:origin: line/armeria

@Override
public HttpResponse serve(ServiceRequestContext ctx, HttpRequest req) throws Exception {
  return HttpResponse.from(authorizer.authorize(ctx, req).handle((result, cause) -> {
    if (cause == null && result) {
    return HttpResponse.from(f.thenApply(idp -> {
      if (idp == null) {
        throw new RuntimeException("cannot find a suitable identity provider from configurations");

代码示例来源:origin: line/centraldogma

@Override
  public HttpResponse serve(ServiceRequestContext ctx, HttpRequest req) throws Exception {
    return HttpResponse.from(CompletableFuture.supplyAsync(() -> {
      final AggregatedHttpMessage msg = req.aggregate().join();
      final String sessionId =
          AuthTokenExtractors.OAUTH2.apply(msg.headers()).accessToken();
      if (!WRONG_SESSION_ID.equals(sessionId)) {
        logoutSessionPropagator.apply(sessionId).join();
      }
      return HttpResponse.of(HttpStatus.OK);
    }, ctx.blockingTaskExecutor()));
  }
}

代码示例来源:origin: line/centraldogma

@Override
  protected HttpResponse doPost(ServiceRequestContext ctx, HttpRequest req) throws Exception {
    return HttpResponse.from(
        req.aggregate()
          .thenApply(msg -> AuthTokenExtractors.OAUTH2.apply(msg.headers()))
          .thenCompose(token -> {
            final String sessionId = token.accessToken();
            return executor.execute(Command.removeSession(sessionId));
          })
          .thenApply(unused -> HttpResponse.of(HttpStatus.OK))
          .exceptionally(cause -> HttpApiUtil.newResponse(ctx, HttpStatus.INTERNAL_SERVER_ERROR,
                                  cause)));
  }
}

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server

@Override
  protected HttpResponse doPost(ServiceRequestContext ctx, HttpRequest req) throws Exception {
    return HttpResponse.from(
        req.aggregate()
          .thenApply(msg -> AuthTokenExtractors.OAUTH2.apply(msg.headers()))
          .thenCompose(token -> {
            final String sessionId = token.accessToken();
            return executor.execute(Command.removeSession(sessionId));
          })
          .thenApply(unused -> HttpResponse.of(HttpStatus.OK))
          .exceptionally(cause -> HttpApiUtil.newResponse(ctx, HttpStatus.INTERNAL_SERVER_ERROR,
                                  cause)));
  }
}

代码示例来源:origin: com.linecorp.armeria/armeria-saml

@Override
public HttpResponse serve(ServiceRequestContext ctx, HttpRequest req) throws Exception {
  final SamlServiceFunction func = serviceMap.get(req.path());
  if (func == null) {
    return HttpResponse.of(HttpStatus.BAD_REQUEST);
  }
  final CompletionStage<AggregatedHttpMessage> f;
  if (portConfigHolder.isDone()) {
    f = req.aggregate();
  } else {
    f = portConfigHolder.future().thenCompose(unused -> req.aggregate());
  }
  return HttpResponse.from(f.handle((msg, cause) -> {
    if (cause != null) {
      return HttpResponse.of(HttpStatus.BAD_REQUEST);
    }
    final SamlPortConfig portConfig = portConfigHolder.config().get();
    if (portConfig.scheme().isTls() != ctx.sessionProtocol().isTls()) {
      return HttpResponse.of(HttpStatus.BAD_REQUEST);
    }
    // Use user-specified hostname if it exists.
    // If there's no hostname set by a user, the default virtual hostname will be used.
    final String defaultHostname = firstNonNull(sp.hostname(), ctx.virtualHost().defaultHostname());
    return func.serve(ctx, msg, defaultHostname, portConfig);
  }));
}

代码示例来源:origin: line/centraldogma

/**
 * POST /projects/{projectName}/repositories/{repoName}/delete/revisions/{revision}{path}
 * Deletes a file.
 */
@Post("regex:/projects/(?<projectName>[^/]+)/repositories/(?<repoName>[^/]+)" +
   "/delete/revisions/(?<revision>[^/]+)(?<path>/.*$)")
@RequiresWritePermission
public HttpResponse deleteFile(@Param("projectName") String projectName,
                @Param("repoName") String repoName,
                @Param("revision") String revision,
                @Param("path") String path,
                AggregatedHttpMessage message,
                ServiceRequestContext ctx) {
  final CommitMessageDto commitMessage;
  try {
    final JsonNode node = Jackson.readTree(message.content().toStringUtf8());
    commitMessage = Jackson.convertValue(node.get("commitMessage"), CommitMessageDto.class);
  } catch (IOException e) {
    throw new IllegalArgumentException("invalid data to be parsed", e);
  }
  final CompletableFuture<?> future =
      push(projectName, repoName, new Revision(revision), AuthUtil.currentAuthor(ctx),
         commitMessage.getSummary(), commitMessage.getDetail().getContent(),
         Markup.valueOf(commitMessage.getDetail().getMarkup()), Change.ofRemoval(path));
  return HttpResponse.from(future.thenApply(unused -> HttpResponse.of(HttpStatus.OK)));
}

相关文章