package org.intermine.app.net.request;
/*
* Copyright (C) 2015 InterMine
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. See the LICENSE file for more
* information or http://www.gnu.org/copyleft/lesser.html.
*
*/
import android.content.Context;
import org.intermine.app.util.Uris;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
import static org.springframework.http.HttpMethod.POST;
public abstract class PostRequest<T> extends BaseRequest<T> {
private MultiValueMap<String, String> mPost;
public PostRequest(Class<T> clazz, Context ctx, String url, Map<String, ?> params,
MultiValueMap<String, String> post) {
super(clazz, ctx, url, params);
mPost = post;
}
@Override
public HttpHeaders getHeaders() {
HttpHeaders headers = super.getHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
return headers;
}
public MultiValueMap<String, String> getPost() {
return mPost;
}
public void setPost(MultiValueMap<String, String> post) {
mPost = post;
}
protected String post() {
RestTemplate rtp = getRestTemplate();
HttpHeaders headers = getHeaders();
String uriString = getUrl();
Map<String, ?> params = getUrlParams();
MultiValueMap<String, String> post = getPost();
HttpEntity<?> req;
if (null != post) {
req = new HttpEntity<Object>(post, headers);
} else {
req = new HttpEntity<String>(headers);
}
ResponseEntity<String> res;
String uri = Uris.expandQuery(uriString, params);
res = rtp.exchange(uri, POST, req, String.class);
return res.getBody();
}
}