import android.os.OperationCanceledException;
import android.util.Log;
+import net.ktnx.mobileledger.err.HTTPException;
import net.ktnx.mobileledger.json.AccountListParser;
import net.ktnx.mobileledger.json.ParsedBalance;
import net.ktnx.mobileledger.json.ParsedLedgerAccount;
import net.ktnx.mobileledger.utils.NetworkUtil;
import java.io.BufferedReader;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
new String[]{profile.getUuid()});
db.execSQL("update accounts set keep=0 where profile=?;", new String[]{profile.getUuid()});
}
- private boolean retrieveAccountList(MobileLedgerProfile profile) throws IOException {
+ private boolean retrieveAccountList(MobileLedgerProfile profile)
+ throws IOException, HTTPException {
Progress progress = new Progress();
HttpURLConnection http = NetworkUtil.prepareConnection(profile, "accounts");
http.setAllowUserInteraction(false);
+ switch (http.getResponseCode()) {
+ case 200:
+ break;
+ case 404:
+ return false;
+ default:
+ throw new HTTPException(http.getResponseCode(), http.getResponseMessage());
+ }
publishProgress(progress);
try (SQLiteDatabase db = MLDB.getWritableDatabase()) {
try (InputStream resp = http.getInputStream()) {
return true;
}
private boolean retrieveTransactionList(MobileLedgerProfile profile)
- throws IOException, ParseException {
+ throws IOException, ParseException, HTTPException {
Progress progress = new Progress();
int maxTransactionId = Progress.INDETERMINATE;
HttpURLConnection http = NetworkUtil.prepareConnection(profile, "transactions");
http.setAllowUserInteraction(false);
publishProgress(progress);
+ switch (http.getResponseCode()) {
+ case 200: break;
+ case 404: return false;
+ default: throw new HTTPException(http.getResponseCode(), http.getResponseMessage());
+ }
try (SQLiteDatabase db = MLDB.getWritableDatabase()) {
try (InputStream resp = http.getInputStream()) {
if (http.getResponseCode() != 200)
e.printStackTrace();
return "Invalid server URL";
}
- catch (FileNotFoundException e) {
+ catch (HTTPException e) {
e.printStackTrace();
- return "Invalid user name or password";
+ return String.format("HTTP error %d: %s", e.getResponseCode(), e.getResponseMessage());
}
catch (IOException e) {
e.printStackTrace();
- return "Network error";
+ return "Parse error";
}
catch (ParseException e) {
e.printStackTrace();
--- /dev/null
+/*
+ * Copyright © 2019 Damyan Ivanov.
+ * This file is part of MoLe.
+ * MoLe is free software: you can distribute it and/or modify it
+ * under the term of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your opinion), any later version.
+ *
+ * MoLe is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License terms for details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with MoLe. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package net.ktnx.mobileledger.err;
+
+public class HTTPException extends Throwable {
+ private final int responseCode;
+ private final String responseMessage;
+ public int getResponseCode() {
+ return responseCode;
+ }
+ public String getResponseMessage() {
+ return responseMessage;
+ }
+ public HTTPException(int responseCode, String responseMessage) {
+ this.responseCode = responseCode;
+ this.responseMessage = responseMessage;
+ }
+}