private void prepareRequestBuilder() { this.requestBldr = setupRequest(callBaseUri, endpoint, null); if (session != null) { this.requestBldr = addCookies(this.requestBldr, session.getCookies(), session.getCreatedTimestamp()); // Add the Cookie header for SessionId if we have a session object passed this.requestBldr.addHeader(HEADER_COOKIE, "SessionID="+session.getSessionId()); } addHttpMethod(); this.requestBldr.addHeader(HEADER_ERROR_FORMAT, MIMETYPE_APPLICATION_JSON); }
private void executeRequest(CallResponseImpl responseImpl) { SessionState session = getSession(); //TODO: Add a telemetry agent if needed // requestBuilder = addTelemetryAgentId(requestBuilder); boolean hasStreamingPart = hasStreamingPart(); Consumer<Boolean> resendableConsumer = resendable -> { if (hasStreamingPart) { checkFirstRequest(); throw new ResourceNotResendableException( "Cannot retry request for " + getEndpoint()); } }; Function<Request.Builder, Response> sendRequestFunction = requestBldr -> { if (isFirstRequest() && hasStreamingPart) makeFirstRequest(callBaseUri, "", 0); Response response = sendRequestOnce(requestBldr); if (isFirstRequest()) setFirstRequest(false); return response; }; Response response = sendRequestWithRetry(requestBldr, sendRequestFunction, resendableConsumer); if(session != null) { List<ClientCookie> cookies = new ArrayList<>(); for ( String setCookie : response.headers(HEADER_SET_COOKIE) ) { ClientCookie cookie = ClientCookie.parse(requestBldr.build().url(), setCookie); cookies.add(cookie); } ((SessionStateImpl)session).setCookies(cookies); } checkStatus(response); responseImpl.setResponse(response); }
if (paramValue != null) { hasValue.set(); multiBldr.addFormDataPart(paramName, null, makeRequestBody(paramValue)); .filter(paramValue -> paramValue != null) .forEachOrdered(paramValue -> multiBldr.addFormDataPart(paramName, null, makeRequestBody(paramValue)) ); multiBldr.addFormDataPart(paramName, null, makeRequestBody(paramValue)); multiBldr.addFormDataPart(paramName, null, makeRequestBody(paramValue)); });
@Override public CallRequest makeNodeBodyRequest(String endpoint, HttpMethod method, SessionState session, CallField... params) { if (params == null || params.length == 0) { return makeEmptyRequest(endpoint, method, session); } return new CallRequestImpl(endpoint, method, session).withNodeBodyRequest(params); }
@Override public MultipleCallResponse withMultipartMixedResponse(Format format) { prepareRequestBuilder(); MultipleCallResponseImpl responseImpl = new MultipleCallResponseImpl(format); this.requestBldr = forMultipartMixedResponse(requestBldr); executeRequest(responseImpl); return responseImpl; }
@Override public CallResponse withEmptyResponse() { prepareRequestBuilder(); CallResponseImpl responseImpl = new CallResponseImpl(); executeRequest(responseImpl); return responseImpl; }
@Override public CallRequest makeAtomicBodyRequest(String endpoint, HttpMethod method, SessionState session, CallField... params) { if (params == null || params.length == 0) { return makeEmptyRequest(endpoint, method, session); } return new CallRequestImpl(endpoint, method, session).withAtomicBodyRequest(params); }
@Override public CallRequest makeEmptyRequest(String endpoint, HttpMethod method, SessionState session) { return new CallRequestImpl(endpoint, method, session).withEmptyRequest(); }
public CallRequest withNodeBodyRequest(CallField... params) { this.requestBody = makeRequestBody(params); return this; }
@Override public SingleCallResponse withDocumentResponse(Format format) { prepareRequestBuilder(); SingleCallResponseImpl responseImpl = new SingleCallResponseImpl(format); this.requestBldr = forDocumentResponse(requestBldr, format); executeRequest(responseImpl); return responseImpl; }