package hudson.plugins.tfs.model;
import com.microsoft.tfs.core.httpclient.methods.GetMethod;
import com.microsoft.tfs.core.httpclient.methods.HeadMethod;
import com.microsoft.tfs.core.httpclient.methods.PostMethod;
import com.microsoft.tfs.core.httpclient.methods.StringRequestEntity;
import hudson.plugins.tfs.util.MediaType;
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.ProtocolException;
public enum HttpMethod {
GET {
@Override
public com.microsoft.tfs.core.httpclient.HttpMethod createClientMethod(final String uri, final String body) {
return new GetMethod(uri);
}
},
POST,
HEAD {
@Override
public com.microsoft.tfs.core.httpclient.HttpMethod createClientMethod(final String uri, final String body) {
return new HeadMethod(uri);
}
},
PATCH {
@Override
public com.microsoft.tfs.core.httpclient.HttpMethod createClientMethod(final String uri, final String body) {
return innerCreateClientMethod(uri, body, MediaType.APPLICATION_JSON_PATCH_JSON);
}
},
OPTIONS,
PUT,
DELETE,
TRACE,
;
public com.microsoft.tfs.core.httpclient.HttpMethod createClientMethod(final String uri, final String body) {
return innerCreateClientMethod(uri, body, MediaType.APPLICATION_JSON);
}
PostMethod innerCreateClientMethod(final String uri, final String body, final String contentType) {
final PostMethod method = new PostMethod(uri);
// https://www.visualstudio.com/en-us/docs/integrate/get-started/rest/basics#http-method-override
method.addRequestHeader("X-HTTP-Method-Override", this.name());
final String charset = MediaType.UTF_8.toString();
final StringRequestEntity requestEntity;
try {
requestEntity = new StringRequestEntity(body, contentType, charset);
}
catch (final UnsupportedEncodingException e) {
// this shouldn't happen
throw new Error(e);
}
method.setRequestEntity(requestEntity);
return method;
}
}