diff --git a/.classpath b/.classpath
deleted file mode 100644
index 5cf73ed..0000000
--- a/.classpath
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/.gitignore b/.gitignore
index 28a5698..ac99eee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,5 @@ target
test-output
temp-testng-customsuite.xml
changes.txt
+.project
+.classpath
diff --git a/.project b/.project
deleted file mode 100644
index 8d639cd..0000000
--- a/.project
+++ /dev/null
@@ -1,13 +0,0 @@
-
- github4j-uploader
- An API for GitHub downloads in Java.
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
- org.eclipse.jdt.core.javanature
-
-
diff --git a/LICENSE b/LICENSE
index eb69b2d..a2d1dbc 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
The MIT License
-Copyright (c) 2008-2009 Alan Gutierrez
+Copyright (c) 2008-2010 Alan Gutierrez
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/src/main/java/com/goodworkalan/github4j/uploader/GitHubUploader.java b/src/main/java/com/goodworkalan/github4j/uploader/GitHubUploader.java
index 3169b35..6e6ee23 100644
--- a/src/main/java/com/goodworkalan/github4j/uploader/GitHubUploader.java
+++ b/src/main/java/com/goodworkalan/github4j/uploader/GitHubUploader.java
@@ -57,6 +57,14 @@ public void upload(String project, File file, String description, String content
}
public void upload(String project, InputStream body, long size, String description, String contentType, String fileName) throws GitHubUploadException {
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db;
+ try {
+ db = dbf.newDocumentBuilder();
+ } catch (ParserConfigurationException e) {
+ // Yeah, but we didn't do anything to change the configuration.
+ throw new RuntimeException(e);
+ }
Map upload = new HashMap();
String apiCall = "http://github.com/" + login + "/" + project + "/downloads";
try {
@@ -75,8 +83,6 @@ public void upload(String project, InputStream body, long size, String descripti
connection.getOutputStream().write(bytes);
connection.getOutputStream().flush();
if (connection.getResponseCode() / 100 != 2) {
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(connection.getErrorStream());
NodeList nodes = doc.getElementsByTagName("error");
if (nodes.getLength() != 0) {
@@ -84,8 +90,6 @@ public void upload(String project, InputStream body, long size, String descripti
}
throw new IOException(Integer.toString(connection.getResponseCode()));
}
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(connection.getInputStream());
NodeList nodes = doc.getDocumentElement().getChildNodes();
for (int i = 0; i < nodes.getLength(); i++) {
@@ -102,9 +106,6 @@ public void upload(String project, InputStream body, long size, String descripti
throw new GitHubUploadException(MALFORMED_URL, apiCall).put("url", apiCall);
} catch (IOException e) {
throw new GitHubUploadException(GITHUB_HTTP_IO, e);
- } catch (ParserConfigurationException e) {
- // Yeah, but we didn't do anything to change the configuration.
- throw new RuntimeException(e);
} catch (SAXException e) {
throw new GitHubUploadException(GITHUB_HTTP_BAD_XML, e);
}
@@ -128,7 +129,6 @@ public void upload(String project, InputStream body, long size, String descripti
addField(out, boundary, "success_action_status", "201");
addField(out, boundary, "key", upload.get("prefix") + fileName);
addField(out, boundary, "AWSAccessKeyId", upload.get("accesskeyid"));
- addField(out, boundary, "Content-Type", contentType);
addField(out, boundary, "signature", upload.get("signature"));
addField(out, boundary, "acl", upload.get("acl"));
@@ -162,10 +162,29 @@ public void upload(String project, InputStream body, long size, String descripti
int responseCode = connection.getResponseCode();
if (responseCode != 201) {
- if( responseCode == HttpURLConnection.HTTP_FORBIDDEN) {
- throw new GitHubUploadException(S3_HTTP_FORBIDDEN, responseCode);
+ Document doc = null;
+ try {
+ doc = db.parse(connection.getErrorStream());
+ } catch (SAXException e) {
+ e.printStackTrace();
+ }
+ String errorMessage = "";
+ if (doc != null) {
+ Map error = new HashMap();
+ NodeList nodes = doc.getDocumentElement().getChildNodes();
+ for (int i = 0; i < nodes.getLength(); i++) {
+ Node node = nodes.item(i);
+ if (node.getNodeType() == Node.ELEMENT_NODE) {
+ Element element = (Element) node;
+ error.put(element.getNodeName(), element.getTextContent());
+ }
+ }
+ errorMessage = error.get("Message");
+ }
+ if(responseCode == HttpURLConnection.HTTP_FORBIDDEN) {
+ throw new GitHubUploadException(S3_HTTP_FORBIDDEN, responseCode, errorMessage);
}
- throw new GitHubUploadException(S3_HTTP_ERROR, responseCode);
+ throw new GitHubUploadException(S3_HTTP_ERROR, responseCode, errorMessage);
}
} catch (UnsupportedEncodingException e) {
// Never happens because UTF-8 and ASCII are always supported.
diff --git a/src/main/resources/com/goodworkalan/github4j/uploader/exceptions.properties b/src/main/resources/com/goodworkalan/github4j/uploader/exceptions.properties
index d2ac417..f6316de 100644
--- a/src/main/resources/com/goodworkalan/github4j/uploader/exceptions.properties
+++ b/src/main/resources/com/goodworkalan/github4j/uploader/exceptions.properties
@@ -4,7 +4,7 @@
1103: The HTTP request to github.com returned a forbidden error status [%s].
1104: The HTTP request github.com returned unparsable XML.
1201: The HTTP request github.s3.amazonaws.com raised an I/O exception.
-1202: The HTTP request github.s3.amazonaws.com returned an error status [%s].
-1203: The HTTP request github.s3.amazonaws.com returned a forbidden error status [%s].
+1202: The HTTP request github.s3.amazonaws.com returned an error status [%s] with message [%s]..
+1203: The HTTP request github.s3.amazonaws.com returned a forbidden error status [%s] with message [%s].
1401: The file containing the upload body cannot be found. [%s].
1402: An I/O exception was raised while reading the file upload body.
\ No newline at end of file
diff --git a/src/mix/java/com/goodworkalan/github4j/uploader/mix/GitHub4JUploaderProject.java b/src/mix/java/com/goodworkalan/github4j/uploader/mix/GitHub4JUploaderProject.java
index 76fcbc2..b2e87c1 100644
--- a/src/mix/java/com/goodworkalan/github4j/uploader/mix/GitHub4JUploaderProject.java
+++ b/src/mix/java/com/goodworkalan/github4j/uploader/mix/GitHub4JUploaderProject.java
@@ -2,7 +2,7 @@
import com.goodworkalan.mix.ProjectModule;
import com.goodworkalan.mix.builder.Builder;
-import com.goodworkalan.mix.builder.JavaProject;
+import com.goodworkalan.mix.cookbook.JavaProject;
/**
* Builds the project definition for GitHub4J Uploader.