add support (most of) the release-related endpoints

This commit is contained in:
evanchooly
2013-11-04 20:08:24 -05:00
parent d82af9f1a0
commit 178c9ff4d0
7 changed files with 557 additions and 8 deletions

View File

@@ -25,6 +25,7 @@ package org.kohsuke.github;
import org.apache.commons.io.IOUtils;
import javax.net.ssl.HttpsURLConnection;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
@@ -47,7 +48,7 @@ import java.util.NoSuchElementException;
import java.util.Set;
import java.util.zip.GZIPInputStream;
import static org.kohsuke.github.GitHub.*;
import static org.kohsuke.github.GitHub.MAPPER;
/**
* A builder pattern for making HTTP call and parsing its output.
@@ -62,6 +63,8 @@ class Requester {
* Request method.
*/
private String method = "POST";
private String contentType = "application/x-www-form-urlencoded";
private InputStream body;
private static class Entry {
String key;
@@ -113,6 +116,11 @@ class Requester {
return _with(key, value);
}
public Requester with(InputStream body) {
this.body = body;
return this;
}
public Requester _with(String key, Object value) {
if (value!=null) {
args.add(new Entry(key,value));
@@ -125,6 +133,11 @@ class Requester {
return this;
}
public Requester contentType(String contentType) {
this.contentType = contentType;
return this;
}
public void to(String tailApiUrl) throws IOException {
to(tailApiUrl,null);
}
@@ -162,13 +175,25 @@ class Requester {
if (!method.equals("GET")) {
uc.setDoOutput(true);
uc.setRequestProperty("Content-type","application/x-www-form-urlencoded");
uc.setRequestProperty("Content-type", contentType);
Map json = new HashMap();
for (Entry e : args) {
json.put(e.key, e.value);
if (body == null) {
Map json = new HashMap();
for (Entry e : args) {
json.put(e.key, e.value);
}
MAPPER.writeValue(uc.getOutputStream(), json);
} else {
try {
byte[] bytes = new byte[32768];
int read = 0;
while ((read = body.read(bytes)) != -1) {
uc.getOutputStream().write(bytes, 0, read);
}
} finally {
body.close();
}
}
MAPPER.writeValue(uc.getOutputStream(),json);
}
try {
@@ -269,7 +294,7 @@ class Requester {
private HttpURLConnection setupConnection(URL url) throws IOException {
HttpURLConnection uc = (HttpURLConnection) url.openConnection();
HttpsURLConnection uc = (HttpsURLConnection) url.openConnection();
// if the authentication is needed but no credential is given, try it anyway (so that some calls
// that do work with anonymous access in the reduced form should still work.)