package io.evanwong.oss.hipchat.v2.commons; import org.apache.http.Consts; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPut; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.entity.StringEntity; import org.apache.http.message.BasicHeader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.Map; import java.util.concurrent.ExecutorService; public abstract class PutRequest<T> extends Request<T> { private static final Logger log = LoggerFactory.getLogger(PutRequest.class); protected PutRequest(String accessToken, String baseUrl, HttpClient httpClient, ExecutorService executorService) { super(accessToken, baseUrl, httpClient, executorService); } @Override protected HttpResponse request() throws IOException { Map<String, Object> params = toQueryMap(); String encodedPath = getEncodedPath(); log.info("PUT - path: {}, params: {}", encodedPath, params); HttpPut httpPut = new HttpPut(super.baseUrl + encodedPath); httpPut.addHeader(new BasicHeader("Authorization", "Bearer " + accessToken)); httpPut.addHeader(new BasicHeader("Content-Type", "application/json")); httpPut.setEntity(new StringEntity(objectWriter.writeValueAsString(params), Consts.UTF_8)); return httpClient.execute(httpPut, HttpClientContext.create()); } }