/*
* 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 neembuu.uploader.interfaces.Account;
import java.io.BufferedReader;
import java.util.logging.Level;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.swing.JOptionPane;
import neembuu.uploader.translation.Translation;
import neembuu.uploader.accounts.IFileAccount;
import neembuu.uploader.interfaces.UploadStatus;
import neembuu.uploader.interfaces.UploaderAccountNecessary;
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={IFile.class,IFileAccount.class},
interfaces={Uploader.class,Account.class},
name="IFile.it"
)
public class IFile extends AbstractUploader implements UploaderAccountNecessary {
IFileAccount iFileAccount = (IFileAccount) getAccountsProvider().getAccount("IFile.it");
private URL u;
private HttpURLConnection uc;
private BufferedReader br;
private String postURL;
private String uploadresponse;
private String file_ukey;
private String downloadlink;
private long fileSizeLimit = 1090519040; //1040 MB
public IFile() {
downURL = UploadStatus.PLEASEWAIT.getLocaleSpecificString();
delURL = UploadStatus.NA.getLocaleSpecificString();
host = "IFile.it";
//It has to be successful.. as it won't work without login
if (iFileAccount.loginsuccessful) {
host = iFileAccount.username + " | IFile.it";
}
}
@Override
public void run() {
try {
//-------------------------------------------------------------
if (iFileAccount.loginsuccessful) {
host = iFileAccount.username + " | IFile.it";
} else {
host = "IFile.it";
uploadInvalid();
return;
}
if (file.length() > fileSizeLimit) {
showWarningMessage( "<html><b>" + getClass().getSimpleName() + "</b> " + Translation.T().maxfilesize() + ": <b>1040MB</b></html>", getClass().getSimpleName());
uploadInvalid();
return;
}
uploadInitialising();
NULogger.getLogger().info("Getting upload url from ifile.......");
u = new URL("http://ifile.it/api-fetch_upload_url.api");
uc = (HttpURLConnection) u.openConnection();
br = new BufferedReader(new InputStreamReader(uc.getInputStream()));
String temp = "", k = "";
while ((temp = br.readLine()) != null) {
NULogger.getLogger().info(temp);
k += temp;
}
uc.disconnect();
postURL = StringUtils.stringBetweenTwoStrings(k, "upload_url\":\"", "\"");
postURL = postURL.replaceAll("\\\\", "");
NULogger.getLogger().log(Level.INFO, "Post URL : {0}", postURL);
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(postURL);
MultipartEntity mpEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
mpEntity.addPart("akey", new StringBody(properties().getEncryptedProperty("ifile_api_key")));
mpEntity.addPart("Filedata", createMonitoredFileBody());
httppost.setEntity(mpEntity);
NULogger.getLogger().log(Level.INFO, "executing request {0}", httppost.getRequestLine());
NULogger.getLogger().info("Now uploading your file into ifile.it");
uploading();
HttpResponse response = httpclient.execute(httppost);
gettingLink();
NULogger.getLogger().info("Now getting downloading link.........");
HttpEntity resEntity = response.getEntity();
httpclient.getConnectionManager().shutdown();
NULogger.getLogger().info(response.getStatusLine().toString());
if (resEntity != null) {
uploadresponse = EntityUtils.toString(resEntity);
NULogger.getLogger().log(Level.INFO, "Upload response : {0}", uploadresponse);
} else {
throw new Exception("There might be a problem with your internet connection or server error. Please try after some time :(");
}
if (uploadresponse.contains("\"status\":\"ok\"")) {
NULogger.getLogger().info("File uploaded successfully :)");
file_ukey = StringUtils.stringBetweenTwoStrings(uploadresponse, "\"ukey\":\"", "\"");
NULogger.getLogger().log(Level.INFO, "File ukey : {0}", file_ukey);
//http://ifile.it/6phxv2z
downloadlink = "http://www.ifile.it/" + file_ukey + "/" + file.getName();
downURL = downloadlink;
NULogger.getLogger().log(Level.INFO, "Download link : {0}", downloadlink);
} else {
throw new Exception("There might be a problem with your internet connection or server error. Please try after some time :(");
}
NULogger.getLogger().log(Level.INFO, "Download Link: {0}", downURL);
//NULogger.getLogger().log(Level.INFO, "Delete link: {0}", delURL);
uploadFinished();
} catch (Exception ex) {
ex.printStackTrace();
NULogger.getLogger().severe(ex.toString());
uploadFailed();
}
}
}