/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package neembuu.uploader.uploaders;
import shashaank.smallmodule.SmallModule;
import neembuu.uploader.interfaces.Uploader;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import javax.swing.JOptionPane;
import neembuu.uploader.translation.Translation;
import neembuu.uploader.interfaces.UploadStatus;
import neembuu.uploader.interfaces.abstractimpl.AbstractUploader;
import neembuu.uploader.uploaders.common.CommonUploaderTasks;
import neembuu.uploader.uploaders.common.StringUtils;
import neembuu.uploader.utils.NULogger;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
/**
*
* @author Dinesh
*/
@SmallModule(
exports={MultiUpload.class},
interfaces={Uploader.class},
name="MultiUpload.com",
ignore = true
)
public class MultiUpload extends AbstractUploader {
private URL u;
private HttpURLConnection uc;
private BufferedReader br;
private String postURL;
private String downloadlink;
private String tmp;
private String ucookie;
private String uid;
private String uploadresponse;
private long fileSizeLimit = 419430400l; //400 MB
public MultiUpload() {
downURL = UploadStatus.PLEASEWAIT.getLocaleSpecificString();
delURL = UploadStatus.NA.getLocaleSpecificString();
host = "MultiUpload.com";
}
private void initialize() throws Exception {
uploadInitialising();
NULogger.getLogger().info("Getting startup cookie from multiupload.com");
u = new URL("http://www.multiupload.com/");
uc = (HttpURLConnection) u.openConnection();
// uc.setRequestProperty("Accept-Encoding", "gzip,deflate,sdch");
Map<String, List<String>> headerFields = uc.getHeaderFields();
if (headerFields.containsKey("Set-Cookie")) {
List<String> header = headerFields.get("Set-Cookie");
for (int i = 0; i < header.size(); i++) {
tmp = header.get(i);
if (tmp.contains("u=")) {
ucookie = tmp;
}
}
}
ucookie = ucookie.substring(0, ucookie.indexOf(";"));
NULogger.getLogger().log(Level.INFO, "ucookie : {0}", ucookie);
NULogger.getLogger().info("Getting multiupload.com dynamic upload link");
br = new BufferedReader(new InputStreamReader(uc.getInputStream()));
String k = "";
while ((tmp = br.readLine()) != null) {
k += tmp;
}
postURL = StringUtils.stringBetweenTwoStrings(k, "action=\"", "\"");
postURL = postURL.replace("progress/?id=", "upload/?UPLOAD_IDENTIFIER=");
uid = postURL.substring(postURL.indexOf("=") + 1);
NULogger.getLogger().log(Level.INFO, "Post URL : {0}", postURL);
NULogger.getLogger().log(Level.INFO, "UID : {0}", uid);
}
private void fileUpload() throws Exception {
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(postURL);
httppost.setHeader("Cookie", ucookie);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("UPLOAD_IDENTIFIER", new StringBody(uid));
reqEntity.addPart("u", new StringBody(ucookie));
reqEntity.addPart("file_0", createMonitoredFileBody());
reqEntity.addPart("service_1", new StringBody("1"));
reqEntity.addPart("service_16", new StringBody("1"));
reqEntity.addPart("service_7", new StringBody("1"));
reqEntity.addPart("service_17", new StringBody("1"));
reqEntity.addPart("service_9", new StringBody("1"));
reqEntity.addPart("service_6", new StringBody("1"));
reqEntity.addPart("service_15", new StringBody("1"));
reqEntity.addPart("service_14", new StringBody("1"));
reqEntity.addPart("service_18", new StringBody("1"));
reqEntity.addPart("remember_1", new StringBody("1"));
reqEntity.addPart("remember_16", new StringBody("1"));
reqEntity.addPart("remember_7", new StringBody("1"));
reqEntity.addPart("remember_17", new StringBody("1"));
reqEntity.addPart("remember_9", new StringBody("1"));
reqEntity.addPart("remember_6", new StringBody("1"));
reqEntity.addPart("remember_15", new StringBody("1"));
reqEntity.addPart("remember_14", new StringBody("1"));
reqEntity.addPart("remember_18", new StringBody("1"));
httppost.setEntity(reqEntity);
uploading();
NULogger.getLogger().info("Now uploading your file into multiupload.com. Please wait......................");
HttpResponse response = httpclient.execute(httppost);
gettingLink();
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
uploadresponse = EntityUtils.toString(resEntity);
// NULogger.getLogger().info("Response :\n" + uploadresponse);
uploadresponse = StringUtils.stringBetweenTwoStrings(uploadresponse, "\"downloadid\":\"", "\"");
downloadlink = "http://www.multiupload.com/" + uploadresponse;
NULogger.getLogger().log(Level.INFO, "Download link : {0}", downloadlink);
downURL = downloadlink;
} else {
throw new Exception("MultiUpload server problem or Internet connectivity problem");
}
}
public void run() {
if (file.length() > fileSizeLimit) {
showWarningMessage( "<html><b>" + getClass().getSimpleName() + "</b> " + Translation.T().maxfilesize() + ": <b>400MB</b></html>", getClass().getSimpleName());
uploadInvalid();
return;
}
try {
initialize();
fileUpload();
uploadFinished();
} catch (Exception e) {
NULogger.getLogger().severe(e.toString());
uploadFailed();
}
}
}