rusefi/java_console/shared_ui/src/com/rusefi/tools/online/Online.java

95 lines
3.5 KiB
Java
Raw Normal View History

2020-05-19 23:16:15 -07:00
package com.rusefi.tools.online;
2020-06-04 20:32:52 -07:00
import com.rusefi.tune.xml.Msq;
import com.rusefi.ui.AuthTokenPanel;
2020-05-22 11:03:10 -07:00
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
2020-06-22 21:24:32 -07:00
import org.apache.http.concurrent.BasicFuture;
import org.apache.http.concurrent.FutureCallback;
2020-05-22 11:03:10 -07:00
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
2020-06-22 21:24:32 -07:00
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
2020-05-22 11:03:10 -07:00
2020-06-04 20:32:52 -07:00
import javax.swing.*;
import javax.xml.bind.JAXBException;
2020-06-17 20:50:57 -07:00
import java.io.File;
import java.io.IOException;
2020-06-04 20:32:52 -07:00
2020-05-19 23:16:15 -07:00
public class Online {
2020-05-22 11:03:10 -07:00
private static final String url = "https://rusefi.com/online/upload.php";
2020-05-19 23:16:15 -07:00
2020-06-22 21:24:32 -07:00
public static JSONArray upload(File fileName, String authTokenValue) throws IOException {
2020-05-22 11:03:10 -07:00
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
2020-05-19 23:16:15 -07:00
2020-06-14 15:39:05 -07:00
FileBody uploadFilePart = new FileBody(fileName);
2020-05-22 11:03:10 -07:00
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("upload-file", uploadFilePart);
2020-05-22 11:25:03 -07:00
reqEntity.addPart("rusefi_token", new StringBody(authTokenValue));
2020-05-19 23:16:15 -07:00
2020-05-22 11:03:10 -07:00
httpPost.setEntity(reqEntity);
2020-05-19 23:16:15 -07:00
2020-05-22 11:03:10 -07:00
HttpResponse response = httpclient.execute(httpPost);
2020-06-22 21:24:32 -07:00
System.out.println("response=" + response);
System.out.println("code " + response.getStatusLine().getStatusCode());
2020-05-19 23:16:15 -07:00
2020-05-22 11:03:10 -07:00
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity, "UTF-8");
2020-06-22 21:24:32 -07:00
System.out.println("responseString=" + responseString);
2020-05-19 23:16:15 -07:00
2020-06-22 21:24:32 -07:00
JSONParser parser = new JSONParser();
try {
JSONObject object = (JSONObject) parser.parse(responseString);
System.out.println("object=" + object);
JSONArray info = (JSONArray) object.get("info");
JSONArray error = (JSONArray) object.get("error");
if (error != null) {
System.out.println("error " + error);
return error;
} else {
System.out.println("info " + info);
return info;
}
} catch (ParseException e) {
e.printStackTrace();
}
return null;
2020-05-19 23:16:15 -07:00
}
2020-06-04 20:32:52 -07:00
2020-06-22 21:24:32 -07:00
public static BasicFuture<JSONArray> uploadTune(Msq tune, AuthTokenPanel authTokenPanel, JComponent parent, FutureCallback<JSONArray> callback) {
BasicFuture<JSONArray> result = new BasicFuture<>(callback);
2020-06-04 20:32:52 -07:00
String authToken = authTokenPanel.getToken();
2020-06-17 20:50:57 -07:00
if (!authTokenPanel.hasToken()) {
authTokenPanel.showError(parent);
2020-06-22 21:24:32 -07:00
return null;
2020-06-04 20:32:52 -07:00
}
2020-06-22 21:24:32 -07:00
new Thread(new Runnable() {
@Override
public void run() {
JSONArray array = doUpload(authToken, tune);
result.completed(array);
}
}).start();
return result;
2020-06-04 20:32:52 -07:00
}
2020-06-22 21:24:32 -07:00
private static JSONArray doUpload(String authToken, Msq tune) {
2020-06-04 20:32:52 -07:00
try {
tune.writeXmlFile(Msq.outputXmlFileName);
// todo: network upload should not happen on UI thread
2020-06-22 21:24:32 -07:00
return upload(new File(Msq.outputXmlFileName), authToken);
2020-06-04 20:32:52 -07:00
} catch (JAXBException | IOException ex) {
throw new IllegalStateException(ex);
}
}
2020-05-19 23:16:15 -07:00
}