public void get(String path, Handler<ExtendedAsyncResult<String>> fut) { request(HttpMethod.GET, path, "", fut); }
/** * Explicit constructor. * * @param okapiUrl * @param vertx * @param headers may be null */ public OkapiClient(String okapiUrl, Vertx vertx, Map<String, String> headers) { init(vertx); setOkapiUrl(okapiUrl); setHeaders(headers); respHeaders = null; }
OkapiClient cli = new OkapiClient(baseurl, vertx, headers); String reqId = inst.getPath().replaceFirst("^[/_]*([^/]+).*", "$1"); cli.newReqId(reqId); // "tenant" or "tenantpermissions" cli.enableInfoLog(); cli.setClosedRetry(15000); cli.request(inst.getMethod(), inst.getPath(), request, cres -> { cli.close(); if (cres.failed()) { String msg = messages.getMessage("11101", inst.getMethod(), pc.debug("doCallSystemInterface response: " + body); pc.debug("doCallSystemInterface ret " + " hdrs: " + Json.encode(cli.getRespHeaders().entries())); pc.passOkapiTraceHeaders(cli); fut.handle(new Success<>(cli));
ctx.response().end("Recursion done"); } else { OkapiClient ok = new OkapiClient(ctx); depth--; ok.get("/recurse?depth=" + depth, res -> { ok.close(); if (res.succeeded()) { MultiMap respH = ok.getRespHeaders(); for (Map.Entry<String, String> e : respH.entries()) { if (e.getKey().startsWith("X-") || e.getKey().startsWith("x-")) {
OkapiClient ok = new OkapiClient(noderes.result().getUrl(), vertx, headers); String reqdata = Json.encode(dd); ok.post("/_/deployment/modules", reqdata, okres -> { ok.close(); if (okres.failed()) { fut.handle(new Failure<>(okres.getType(), okres.cause().getMessage()));
OkapiClient ok = new OkapiClient(res1.result().getUrl(), vertx, headers); ok.delete("/_/deployment/modules/" + md.getInstId(), okres -> { ok.close(); if (okres.failed()) { logger.warn("Dm: Failure: " + okres.getType() + " " + okres.cause().getMessage());
public void request(HttpMethod method, String path, Buffer data, Handler<ExtendedAsyncResult<String>> fut) { if (this.okapiUrl == null) { fut.handle(new Failure<>(INTERNAL, "OkapiClient: No OkapiUrl specified")); return; } HttpClientRequest req = request1(method, path, res -> { if (res.failed() && res.getType() == ANY) { if (retryClosedCount > 0) { retryClosedCount--; vertx.setTimer(retryClosedWait, res1 -> request(method, path, data, fut)); } else { fut.handle(new Failure<>(INTERNAL, res.cause())); } } else { fut.handle(res); } }); req.end(data); }
/** * Pass the response headers from an OkapiClient into the response of this * request. Only selected X-Something headers: X-Okapi-Trace, and a special * X-Tenant-Perms-Result, which is used in unit tests for the tenantPemissions * * @param ok OkapiClient to take resp headers from */ public void passOkapiTraceHeaders(OkapiClient ok) { MultiMap respH = ok.getRespHeaders(); for (Map.Entry<String, String> e : respH.entries()) { if (XOkapiHeaders.TRACE.equals(e.getKey()) || "X-Tenant-Perms-Result".equals(e.getKey())) { ctx.response().headers().add(e.getKey(), e.getValue()); } } }
/** * Constructor from a vert.x ctx. That ctx contains all the headers we need. * * @param ctx */ public OkapiClient(RoutingContext ctx) { init(ctx.vertx()); this.okapiUrl = ctx.request().getHeader(XOkapiHeaders.URL); if (this.okapiUrl != null) { this.okapiUrl = okapiUrl.replaceAll("/+$", ""); // no trailing slash } for (String hdr : ctx.request().headers().names()) { if (hdr.startsWith(XOkapiHeaders.PREFIX) || hdr.startsWith("Accept")) { String hv = ctx.request().getHeader(hdr); headers.put(hdr, hv); if (hdr.equals(XOkapiHeaders.REQUEST_ID)) { reqId = hv; } } } }
String deftok = cli.getRespHeaders().get(XOkapiHeaders.TOKEN); logger.debug("authForSystemInterface:" + Json.encode(cli.getRespHeaders().entries())); String modTok = cli.getRespHeaders().get(XOkapiHeaders.MODULE_TOKENS); JsonObject jo = new JsonObject(modTok); String token = jo.getString(inst.getModuleDescriptor().getId(), deftok);
public void delete(String path, Handler<ExtendedAsyncResult<String>> fut) { request(HttpMethod.DELETE, path, "", fut); }
public void head(String path, Handler<ExtendedAsyncResult<String>> fut) { request(HttpMethod.HEAD, path, "", fut); }
public void post(String path, String data, Handler<ExtendedAsyncResult<String>> fut) { request(HttpMethod.POST, path, data, fut); }
public void request(HttpMethod method, String path, String data, Handler<ExtendedAsyncResult<String>> fut) { request(method, path, Buffer.buffer(data == null ? "" : data), fut); }