com.inversoft.rest.FormDataBodyHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of restify Show documentation
Show all versions of restify Show documentation
The Java 8 REST Client used in our commercial REST Client libraries such as Passport Java Client and our Java 8 Chef Client called Barista
/*
* Copyright (c) 2016, Inversoft Inc., All Rights Reserved
*/
package com.inversoft.rest;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URLEncoder;
import java.util.Map;
/**
* @author Brian Pontarelli
*/
public class FormDataBodyHandler implements RESTClient.BodyHandler {
public Map request;
private byte[] body;
public FormDataBodyHandler(Map request) {
this.request = request;
}
@Override
public void accept(OutputStream os) throws IOException {
if (body != null && os != null) {
os.write(body);
}
}
@Override
public byte[] getBody() {
if (request != null) {
serializeRequest();
}
return body;
}
@Override
public Object getBodyObject() {
return request;
}
@Override
public void setHeaders(HttpURLConnection huc) {
if (request != null) {
serializeRequest();
huc.addRequestProperty("Content-Type", "application/x-www-form-urlencoded");
}
}
private void serializeRequest() {
if (body == null) {
StringBuilder build = new StringBuilder();
request.forEach((key, value) -> {
if (build.length() > 0) {
build.append("&");
}
try {
build.append(URLEncoder.encode(key, "UTF-8")).append("=").append(URLEncoder.encode(value, "UTF-8"));
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException(e);
}
});
try {
body = build.toString().getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException(e);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy