diff --git a/src/main/java/com/asana/Client.java b/src/main/java/com/asana/Client.java index be3b8a2..b1852f1 100644 --- a/src/main/java/com/asana/Client.java +++ b/src/main/java/com/asana/Client.java @@ -235,6 +235,15 @@ public static Client basicAuth(String apiKey, HttpTransport httpTransport) { return new Client(new BasicAuthDispatcher(apiKey, httpTransport)); } + /** + * @param apiKey Basic Auth API key + * @param requestInitializer The request initializer to use for requests + * @return Client instance + */ + public static Client basicAuth(String apiKey, HttpRequestInitializer requestInitializer) { + return new Client(new BasicAuthDispatcher(apiKey, requestInitializer)); + } + /** * @param accessToken Personal Access Token * @return Client instance @@ -252,6 +261,15 @@ public static Client accessToken(String accessToken, HttpTransport httpTransport return new Client(new AccessTokenDispatcher(accessToken, httpTransport)); } + /** + * @param accessToken Personal Access Token + * @param requestInitializer The request initializer to use for requests + * @return Client instance + */ + public static Client accessToken(String accessToken, HttpRequestInitializer requestInitializer) { + return new Client(new AccessTokenDispatcher(accessToken, requestInitializer)); + } + /** * @param app OAuth application instance * @return Client instance @@ -268,4 +286,14 @@ public static Client oauth(OAuthApp app) { public static Client oauth(OAuthApp app, HttpTransport httpTransport) { return new Client(new OAuthDispatcher(app, httpTransport)); } + + /** + * @param app OAuth application instance + * @param requestInitializer The request initializer to use for requests + * @return Client instance + */ + public static Client oauth(OAuthApp app, HttpRequestInitializer requestInitializer) { + return new Client(new OAuthDispatcher(app, requestInitializer)); + } + } diff --git a/src/main/java/com/asana/dispatcher/AccessTokenDispatcher.java b/src/main/java/com/asana/dispatcher/AccessTokenDispatcher.java index 2944d63..eabb52b 100644 --- a/src/main/java/com/asana/dispatcher/AccessTokenDispatcher.java +++ b/src/main/java/com/asana/dispatcher/AccessTokenDispatcher.java @@ -1,9 +1,6 @@ package com.asana.dispatcher; -import com.google.api.client.http.GenericUrl; -import com.google.api.client.http.HttpContent; -import com.google.api.client.http.HttpRequest; -import com.google.api.client.http.HttpTransport; +import com.google.api.client.http.*; import java.io.IOException; @@ -16,6 +13,11 @@ public AccessTokenDispatcher(String accessToken) { this.accessToken = accessToken; } + public AccessTokenDispatcher(String accessToken, HttpRequestInitializer requestInitializer) { + super(requestInitializer); + this.accessToken = accessToken; + } + public AccessTokenDispatcher(String accessToken, HttpTransport httpTransport) { super(httpTransport); this.accessToken = accessToken; diff --git a/src/main/java/com/asana/dispatcher/BasicAuthDispatcher.java b/src/main/java/com/asana/dispatcher/BasicAuthDispatcher.java index 6f0fb92..efe3731 100644 --- a/src/main/java/com/asana/dispatcher/BasicAuthDispatcher.java +++ b/src/main/java/com/asana/dispatcher/BasicAuthDispatcher.java @@ -1,9 +1,6 @@ package com.asana.dispatcher; -import com.google.api.client.http.GenericUrl; -import com.google.api.client.http.HttpContent; -import com.google.api.client.http.HttpRequest; -import com.google.api.client.http.HttpTransport; +import com.google.api.client.http.*; import java.io.IOException; @@ -15,6 +12,11 @@ public BasicAuthDispatcher(String apiKey) { this.apiKey = apiKey; } + public BasicAuthDispatcher(String apiKey, HttpRequestInitializer requestInitializer) { + super(requestInitializer); + this.apiKey = apiKey; + } + public BasicAuthDispatcher(String apiKey, HttpTransport httpTransport) { super(httpTransport); this.apiKey = apiKey; diff --git a/src/main/java/com/asana/dispatcher/Dispatcher.java b/src/main/java/com/asana/dispatcher/Dispatcher.java index a691510..8bb03d0 100644 --- a/src/main/java/com/asana/dispatcher/Dispatcher.java +++ b/src/main/java/com/asana/dispatcher/Dispatcher.java @@ -1,27 +1,40 @@ package com.asana.dispatcher; -import com.google.api.client.http.GenericUrl; -import com.google.api.client.http.HttpContent; -import com.google.api.client.http.HttpRequest; -import com.google.api.client.http.HttpTransport; +import com.google.api.client.http.*; import com.google.api.client.http.javanet.NetHttpTransport; import java.io.IOException; public abstract class Dispatcher { protected HttpTransport httpTransport; + protected HttpRequestInitializer httpRequestInitializer; public Dispatcher() { - this.httpTransport = new NetHttpTransport(); + this(new NetHttpTransport()); + } + + public Dispatcher(HttpRequestInitializer requestInitializer) { + this(new NetHttpTransport(), requestInitializer); } public Dispatcher(HttpTransport httpTransport) { + this(httpTransport, null); + } + + public Dispatcher(HttpTransport httpTransport, HttpRequestInitializer requestInitializer) { this.httpTransport = httpTransport; + this.httpRequestInitializer = requestInitializer; } public HttpRequest buildRequest(String method, GenericUrl url, HttpContent content) throws IOException { - return httpTransport.createRequestFactory().buildRequest(method, url, content); + HttpRequestFactory requestFactory; + if(httpRequestInitializer == null) { + requestFactory = httpTransport.createRequestFactory(); + } else { + requestFactory = httpTransport.createRequestFactory(httpRequestInitializer); + } + return requestFactory.buildRequest(method, url, content); } public void sleep(long millis) { diff --git a/src/main/java/com/asana/dispatcher/OAuthDispatcher.java b/src/main/java/com/asana/dispatcher/OAuthDispatcher.java index 3b6400a..6fb0bd1 100644 --- a/src/main/java/com/asana/dispatcher/OAuthDispatcher.java +++ b/src/main/java/com/asana/dispatcher/OAuthDispatcher.java @@ -1,10 +1,7 @@ package com.asana.dispatcher; import com.asana.OAuthApp; -import com.google.api.client.http.GenericUrl; -import com.google.api.client.http.HttpContent; -import com.google.api.client.http.HttpRequest; -import com.google.api.client.http.HttpTransport; +import com.google.api.client.http.*; import java.io.IOException; @@ -16,6 +13,11 @@ public OAuthDispatcher(OAuthApp app) { this.app = app; } + public OAuthDispatcher(OAuthApp app, HttpRequestInitializer requestInitializer) { + super(requestInitializer); + this.app = app; + } + public OAuthDispatcher(OAuthApp app, HttpTransport httpTransport) { super(httpTransport); this.app = app;