protected <T> T invoke(String url, String method, TypeReference<T> returnType, MultivaluedMap<String, String> formParams, Map<String, String> queryParams) throws IOException {
url = url.replace("{repoOwner}", repoOwner).replace("{repoName}", repoName);
ClientConfig configuration = new ClientConfig();
JerseyClient client = JerseyClientBuilder.createClient(configuration);
client.register(auth);
JerseyWebTarget target = client.target(url);
if (queryParams != null) {
for (String key : queryParams.keySet()) {
target = target.queryParam(key, queryParams.get(key));
}
}
Response response = target.request("application/json").build(method, formParams != null ? Entity.form(formParams) : null).invoke();
String result = response.readEntity(String.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
return objectMapper.readValue(result, returnType);
}
}