/** * Build a {@link HttpRequest} object for the given method. * * @param method method that annotated with {@link Operation} * @param args arguments of the method * @return a {@link HttpRequest} object */ HttpRequest createHttpRequest(Method method, Object[] args) { final Request<?> request = buildRequest(method, args); final ExecutionContext context = new ExecutionContext(); String userAgent = apiName; if (request.getHeaders().containsKey("User-Agent")) { // append it to execution context userAgent += " " + request.getHeaders().get("User-Agent"); } context.setContextUserAgent(userAgent); return requestFactory.createHttpRequest(request, clientConfiguration, context); }
ApiClientHandler(String endpoint, String apiName, Signer signer, AWSCredentialsProvider provider, String apiKey, ClientConfiguration clientConfiguration) { this.endpoint = endpoint; this.apiName = apiName; this.signer = signer; this.provider = provider; this.apiKey = apiKey; this.clientConfiguration = clientConfiguration; client = new UrlHttpClient(this.clientConfiguration); requestFactory = new HttpRequestFactory(); }
configureHeaders(headers, request, context, clientConfiguration);
createUserAgentString(clientConfiguration, context.getContextUserAgent()));
createUserAgentString(clientConfiguration, context.getContextUserAgent()));
HttpRequest invokeExecuteMethod(Object[] args) { final ExecutionContext context = new ExecutionContext(); final Request<?> request = ((ApiRequest) args[0]).getRequest(); if (request.getEndpoint() == null) { request.setEndpoint(URI.create(endpoint)); } String userAgent = apiName; if (request.getHeaders().containsKey("User-Agent")) { // append it to execution context userAgent += " " + request.getHeaders().get("User-Agent"); } context.setContextUserAgent(userAgent); // add the api key if (apiKey != null) { request.addHeader("x-api-key", apiKey); } // sign the request if (provider != null && signer != null) { signer.sign(request, provider.getCredentials()); } return requestFactory.createHttpRequest(request, clientConfiguration, context); }
@Before public void setup() { factory = new HttpRequestFactory(); request = new DefaultRequest<Object>("dummy"); request.setEndpoint(URI.create("https://s3.amazonaws.com")); clientConfiguration = new ClientConfiguration(); context = new ExecutionContext(); }
createUserAgentString(clientConfiguration, context.getContextUserAgent()));
configureHeaders(headers, request, context, clientConfiguration);
@Test public void testContextUserAgent() { final String contextUserAgent = "context_user_agent"; context.setContextUserAgent(contextUserAgent); final HttpRequest httpRequest = factory.createHttpRequest(request, clientConfiguration, context); final String userAgent = httpRequest.getHeaders().get(HttpHeader.USER_AGENT); assertTrue("context user agent", userAgent.endsWith(contextUserAgent)); }
ApiClientHandler(String endpoint, String apiName, Signer signer, AWSCredentialsProvider provider, String apiKey, ClientConfiguration clientConfiguration) { this.endpoint = endpoint; this.apiName = apiName; this.signer = signer; this.provider = provider; this.apiKey = apiKey; this.clientConfiguration = clientConfiguration; client = new UrlHttpClient(this.clientConfiguration); requestFactory = new HttpRequestFactory(); }
configureHeaders(headers, request, context, clientConfiguration);
@Test public void testHeaders() { final HttpRequest httpRequest = factory.createHttpRequest(request, clientConfiguration, context); final Map<String, String> headers = httpRequest.getHeaders(); // assert basic headers assertNotNull(headers.get(HttpHeader.HOST)); assertNotNull(headers.get(HttpHeader.CONTENT_TYPE)); }
@Test public void testEnableCompression() { clientConfiguration.withEnableGzip(true); final HttpRequest httpRequest = factory.createHttpRequest(request, clientConfiguration, context); final Map<String, String> headers = httpRequest.getHeaders(); assertEquals("accept encoding is gzip", "gzip", headers.get("Accept-Encoding")); } }
httpRequest = requestFactory.createHttpRequest(request, config, executionContext);
/** * Build a {@link HttpRequest} object for the given method. * * @param method method that annotated with {@link Operation} * @param args arguments of the method * @return a {@link HttpRequest} object */ HttpRequest createHttpRequest(Method method, Object[] args) { final Request<?> request = buildRequest(method, args); final ExecutionContext context = new ExecutionContext(); String userAgent = apiName; if (request.getHeaders().containsKey("User-Agent")) { // append it to execution context userAgent += " " + request.getHeaders().get("User-Agent"); } context.setContextUserAgent(userAgent); return requestFactory.createHttpRequest(request, clientConfiguration, context); }
HttpRequest invokeExecuteMethod(Object[] args) { final ExecutionContext context = new ExecutionContext(); final Request<?> request = ((ApiRequest) args[0]).getRequest(); if (request.getEndpoint() == null) { request.setEndpoint(URI.create(endpoint)); } String userAgent = apiName; if (request.getHeaders().containsKey("User-Agent")) { // append it to execution context userAgent += " " + request.getHeaders().get("User-Agent"); } context.setContextUserAgent(userAgent); // add the api key if (apiKey != null) { request.addHeader("x-api-key", apiKey); } // sign the request if (provider != null && signer != null) { signer.sign(request, provider.getCredentials()); } return requestFactory.createHttpRequest(request, clientConfiguration, context); }
httpRequest = requestFactory.createHttpRequest(request, config, executionContext);
httpRequest = requestFactory.createHttpRequest(request, config, executionContext);