1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-20 21:01:25 +03:00

Small refactory to HttpUploader class

This commit is contained in:
Cristian Maglie
2013-06-03 13:12:36 +02:00
parent 3f9bb3e58c
commit 7452ce824f

View File

@ -1,5 +1,17 @@
package cc.arduino.packages.uploaders; package cc.arduino.packages.uploaders;
import static processing.app.I18n._;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.regex.Matcher;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.HttpStatus;
@ -7,20 +19,13 @@ import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.PostMethod;
import cc.arduino.packages.Uploader;
import processing.app.Base; import processing.app.Base;
import processing.app.Constants; import processing.app.Constants;
import processing.app.Preferences; import processing.app.Preferences;
import processing.app.debug.RunnerException; import processing.app.debug.RunnerException;
import processing.app.debug.TargetPlatform; import processing.app.debug.TargetPlatform;
import processing.app.helpers.PreferencesMap; import processing.app.helpers.PreferencesMap;
import cc.arduino.packages.Uploader;
import java.io.*;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HttpUploader extends Uploader { public class HttpUploader extends Uploader {
@ -37,13 +42,13 @@ public class HttpUploader extends Uploader {
private final String baseUrl; private final String baseUrl;
public HttpUploader(String port) { public HttpUploader(String port) {
this.client = new HttpClient(); client = new HttpClient();
Matcher matcher = Constants.IPV4_ADDRESS.matcher(port); Matcher matcher = Constants.IPV4_ADDRESS.matcher(port);
if (!matcher.find()) { if (!matcher.find()) {
throw new IllegalArgumentException(port); throw new IllegalArgumentException(port);
} }
this.ipAddress = matcher.group(); ipAddress = matcher.group();
this.baseUrl = PROTOCOL + ipAddress + "/cgi-bin/luci/arduino"; baseUrl = PROTOCOL + ipAddress + "/cgi-bin/luci/arduino";
} }
public boolean requiresAuthorization() { public boolean requiresAuthorization() {
@ -57,12 +62,13 @@ public class HttpUploader extends Uploader {
@Override @Override
public boolean uploadUsingPreferences(String buildPath, String className, boolean usingProgrammer) throws RunnerException { public boolean uploadUsingPreferences(String buildPath, String className, boolean usingProgrammer) throws RunnerException {
if (usingProgrammer) { if (usingProgrammer) {
System.err.println("Http upload using programmer not supported"); System.err.println(_("Http upload using programmer not supported"));
return false; return false;
} }
this.client.getHttpConnectionManager().getParams().setConnectionTimeout(5000); client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
String auth = Base64.encodeBase64String(("root:" + Preferences.get(getAuthorizationKey())).getBytes()); String authKey = Preferences.get(getAuthorizationKey());
String auth = Base64.encodeBase64String(("root:" + authKey).getBytes());
int sleptTimes = 1; int sleptTimes = 1;
while (boardNotReady(auth)) { while (boardNotReady(auth)) {
@ -72,14 +78,15 @@ public class HttpUploader extends Uploader {
throw new RunnerException(e); throw new RunnerException(e);
} }
if (sleptTimes >= 3) { if (sleptTimes >= 3) {
throw new RunnerException("The board is not yet ready"); throw new RunnerException(_("The board is not yet ready"));
} }
sleptTimes += 1; sleptTimes += 1;
} }
StringBuilder uploadRequest = new StringBuilder(); StringBuilder uploadRequest = new StringBuilder();
uploadRequest.append(String.format("PWD%1$04d", Preferences.get(getAuthorizationKey()).length())).append(Preferences.get(getAuthorizationKey())).append("\n"); uploadRequest.append(String.format("PWD%1$04d", authKey.length()));
uploadRequest.append(authKey).append("\n");
uploadRequest.append("SKETCH\n"); uploadRequest.append("SKETCH\n");
readSketchFile(buildPath, className, uploadRequest); readSketchFile(buildPath, className, uploadRequest);
uploadRequest.append("SKETCH_END\n"); uploadRequest.append("SKETCH_END\n");
@ -95,7 +102,7 @@ public class HttpUploader extends Uploader {
BufferedReader isr = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader isr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String ok = isr.readLine(); String ok = isr.readLine();
if (!"OK".equals(ok)) { if (!"OK".equals(ok)) {
throw new RunnerException("Problem uploading sketch"); throw new RunnerException(_("Problem uploading sketch"));
} }
} catch (IOException e) { } catch (IOException e) {
throw new RunnerException(e); throw new RunnerException(e);
@ -113,7 +120,6 @@ public class HttpUploader extends Uploader {
PreferencesMap prefs = Preferences.getMap(); PreferencesMap prefs = Preferences.getMap();
prefs.putAll(Base.getBoardPreferences()); prefs.putAll(Base.getBoardPreferences());
prefs.putAll(targetPlatform.getTool(prefs.get("upload.tool"))); prefs.putAll(targetPlatform.getTool(prefs.get("upload.tool")));
boolean verbose = prefs.containsKey("upload.verbose") && Boolean.parseBoolean(prefs.get("upload.verbose"));
PostMethod post = new PostMethod(baseUrl + "/flash"); PostMethod post = new PostMethod(baseUrl + "/flash");
post.setRequestHeader("Authorization", "Basic " + auth); post.setRequestHeader("Authorization", "Basic " + auth);