package org.herac.tuxguitar.community.io;
import java.io.DataOutputStream;
import java.net.URL;
import java.net.URLConnection;
import org.herac.tuxguitar.community.auth.TGCommunityAuth;
import org.herac.tuxguitar.community.utils.TGCommunityWeb;
public class TGShareSongRequest {
private static final String BOUNDARY = "*****";
private static final String BOUNDARY_SEPARATOR = "--";
private static final String EOL = "\r\n";
private static final String REMOTE_URL = (TGCommunityWeb.HOME_URL + "/rd.php/sharing/tuxguitar/upload.do");
private TGCommunityAuth auth;
private TGShareFile file;
public TGShareSongRequest(TGCommunityAuth auth, TGShareFile file) {
this.auth = auth;
this.file = file;
}
public TGShareSongResponse getResponse() throws Throwable {
URL url = new URL(REMOTE_URL);
URLConnection conn = url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="
+ BOUNDARY);
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
// auth
out.writeBytes(BOUNDARY_SEPARATOR + BOUNDARY + EOL);
out.writeBytes("Content-Disposition: form-data; name=\"auth\";" + EOL);
out.writeBytes(EOL);
out.writeBytes(this.auth.getAuthCode());
out.writeBytes(EOL);
// title
out.writeBytes(BOUNDARY_SEPARATOR + BOUNDARY + EOL);
out.writeBytes("Content-Disposition: form-data; name=\"title\";" + EOL);
out.writeBytes(EOL);
out.writeBytes(this.file.getTitle());
out.writeBytes(EOL);
// description
out.writeBytes(BOUNDARY_SEPARATOR + BOUNDARY + EOL);
out.writeBytes("Content-Disposition: form-data; name=\"description\";"
+ EOL);
out.writeBytes(EOL);
out.writeBytes(this.file.getDescription());
out.writeBytes(EOL);
// tagkeys
out.writeBytes(BOUNDARY_SEPARATOR + BOUNDARY + EOL);
out.writeBytes("Content-Disposition: form-data; name=\"tagkeys\";" + EOL);
out.writeBytes(EOL);
out.writeBytes(this.file.getTagkeys());
out.writeBytes(EOL);
// file
out.writeBytes(BOUNDARY_SEPARATOR + BOUNDARY + EOL);
out.writeBytes("Content-Disposition: form-data; name=\"fileName\";"
+ " filename=\"" + this.file.getFilename() + "\"" + EOL);
out.writeBytes(EOL);
out.write(this.file.getFile());
out.writeBytes(EOL);
out.writeBytes(BOUNDARY_SEPARATOR + BOUNDARY + BOUNDARY_SEPARATOR + EOL);
out.flush();
out.close();
return new TGShareSongResponse(conn.getInputStream());
}
}