mirror of
https://github.com/nextcloud/notes-android.git
synced 2024-11-28 11:29:01 +03:00
#21 Check for status.php
This commit is contained in:
parent
97ad2a2fc6
commit
8c23698546
4 changed files with 48 additions and 39 deletions
|
@ -65,6 +65,10 @@ public class SettingsActivity extends AppCompatActivity {
|
||||||
@Override
|
@Override
|
||||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
String url = ((EditText) findViewById(R.id.settings_url)).getText().toString();
|
String url = ((EditText) findViewById(R.id.settings_url)).getText().toString();
|
||||||
|
|
||||||
|
if (!url.endsWith("/")) {
|
||||||
|
url += "/";
|
||||||
|
}
|
||||||
if (!url.startsWith("http://") && !url.startsWith("https://")) {
|
if (!url.startsWith("http://") && !url.startsWith("https://")) {
|
||||||
url = "https://" + url;
|
url = "https://" + url;
|
||||||
}
|
}
|
||||||
|
@ -130,7 +134,7 @@ public class SettingsActivity extends AppCompatActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Boolean doInBackground(String... params) {
|
protected Boolean doInBackground(String... params) {
|
||||||
return NotesClientUtil.isValidURL(params[0]);
|
return NotesClientUtil.pingServer(params[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -24,18 +24,17 @@ public class AllNotesWidget extends AppWidgetProvider {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
|
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
|
||||||
for (int i = 0; i < appWidgetIds.length; i++) {
|
for (int appWidgetId : appWidgetIds) {
|
||||||
int appWidgetId = appWidgetIds[i];
|
|
||||||
// Set up the intent that starts the StackViewService, which will
|
// Set up the intent that starts the StackViewService, which will
|
||||||
// provide the views for this collection.
|
// provide the views for this collection.
|
||||||
Intent intent = new Intent(context, StackWidgetService.class);
|
Intent intent = new Intent(context, StackWidgetService.class);
|
||||||
// Add the app widget ID to the intent extras.
|
// Add the app widget ID to the intent extras.
|
||||||
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
|
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
|
||||||
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
|
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
|
||||||
// Instantiate the RemoteViews object for the app widget layout.
|
// Instantiate the RemoteViews object for the app widget layout.
|
||||||
|
|
||||||
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_all_notes);
|
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_all_notes);
|
||||||
rv.setRemoteAdapter(appWidgetIds[i], intent);
|
rv.setRemoteAdapter(appWidgetId, intent);
|
||||||
|
|
||||||
appWidgetManager.updateAppWidget(appWidgetId, rv);
|
appWidgetManager.updateAppWidget(appWidgetId, rv);
|
||||||
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, R.layout.widget_all_notes);
|
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, R.layout.widget_all_notes);
|
||||||
|
@ -50,8 +49,7 @@ public class AllNotesWidget extends AppWidgetProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class StackRemoteViewsFactory implements
|
class StackRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory {
|
||||||
RemoteViewsService.RemoteViewsFactory {
|
|
||||||
private static final int mCount = 10;
|
private static final int mCount = 10;
|
||||||
private List<Note> mWidgetItems = new ArrayList<>();
|
private List<Note> mWidgetItems = new ArrayList<>();
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
|
@ -22,18 +22,15 @@ import it.niedermann.owncloud.notes.model.Note;
|
||||||
|
|
||||||
public class NotesClient {
|
public class NotesClient {
|
||||||
|
|
||||||
|
public static final String METHOD_GET = "GET";
|
||||||
|
public static final String METHOD_PUT = "PUT";
|
||||||
|
public static final String METHOD_POST = "POST";
|
||||||
|
public static final String METHOD_DELETE = "DELETE";
|
||||||
private static final String key_id = "id";
|
private static final String key_id = "id";
|
||||||
private static final String key_title = "title";
|
private static final String key_title = "title";
|
||||||
private static final String key_content = "content";
|
private static final String key_content = "content";
|
||||||
private static final String key_modified = "modified";
|
private static final String key_modified = "modified";
|
||||||
|
|
||||||
private static final String application_json = "application/json";
|
private static final String application_json = "application/json";
|
||||||
|
|
||||||
private static final String method_get = "GET";
|
|
||||||
private static final String method_put = "PUT";
|
|
||||||
private static final String method_post = "POST";
|
|
||||||
private static final String method_delete = "DELETE";
|
|
||||||
|
|
||||||
private String url = "";
|
private String url = "";
|
||||||
private String username = "";
|
private String username = "";
|
||||||
private String password = "";
|
private String password = "";
|
||||||
|
@ -47,7 +44,7 @@ public class NotesClient {
|
||||||
public List<Note> getNotes() throws JSONException,
|
public List<Note> getNotes() throws JSONException,
|
||||||
IOException {
|
IOException {
|
||||||
List<Note> notesList = new ArrayList<>();
|
List<Note> notesList = new ArrayList<>();
|
||||||
JSONArray notes = new JSONArray(requestServer("notes", method_get, null));
|
JSONArray notes = new JSONArray(requestServer("notes", METHOD_GET, null));
|
||||||
long noteId = 0;
|
long noteId = 0;
|
||||||
String noteTitle = "";
|
String noteTitle = "";
|
||||||
String noteContent = "";
|
String noteContent = "";
|
||||||
|
@ -92,7 +89,7 @@ public class NotesClient {
|
||||||
String noteContent = "";
|
String noteContent = "";
|
||||||
Calendar noteModified = null;
|
Calendar noteModified = null;
|
||||||
JSONObject currentItem = new JSONObject(
|
JSONObject currentItem = new JSONObject(
|
||||||
requestServer("notes/" + id, method_get, null));
|
requestServer("notes/" + id, METHOD_GET, null));
|
||||||
|
|
||||||
if (!currentItem.isNull(key_id)) {
|
if (!currentItem.isNull(key_id)) {
|
||||||
noteId = currentItem.getLong(key_id);
|
noteId = currentItem.getLong(key_id);
|
||||||
|
@ -127,7 +124,7 @@ public class NotesClient {
|
||||||
|
|
||||||
JSONObject paramObject = new JSONObject();
|
JSONObject paramObject = new JSONObject();
|
||||||
paramObject.accumulate(key_content, content);
|
paramObject.accumulate(key_content, content);
|
||||||
JSONObject currentItem = new JSONObject(requestServer("notes", method_post,
|
JSONObject currentItem = new JSONObject(requestServer("notes", METHOD_POST,
|
||||||
paramObject));
|
paramObject));
|
||||||
|
|
||||||
if (!currentItem.isNull(key_id)) {
|
if (!currentItem.isNull(key_id)) {
|
||||||
|
@ -155,7 +152,7 @@ public class NotesClient {
|
||||||
JSONObject paramObject = new JSONObject();
|
JSONObject paramObject = new JSONObject();
|
||||||
paramObject.accumulate(key_content, content);
|
paramObject.accumulate(key_content, content);
|
||||||
JSONObject currentItem = new JSONObject(requestServer(
|
JSONObject currentItem = new JSONObject(requestServer(
|
||||||
"notes/" + noteId, method_put, paramObject));
|
"notes/" + noteId, METHOD_PUT, paramObject));
|
||||||
|
|
||||||
if (!currentItem.isNull(key_title)) {
|
if (!currentItem.isNull(key_title)) {
|
||||||
noteTitle = currentItem.getString(key_title);
|
noteTitle = currentItem.getString(key_title);
|
||||||
|
@ -170,7 +167,7 @@ public class NotesClient {
|
||||||
|
|
||||||
public void deleteNote(long noteId) throws
|
public void deleteNote(long noteId) throws
|
||||||
IOException {
|
IOException {
|
||||||
this.requestServer("notes/" + noteId, method_delete, null);
|
this.requestServer("notes/" + noteId, METHOD_DELETE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,7 +2,12 @@ package it.niedermann.owncloud.notes.util;
|
||||||
|
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
@ -23,26 +28,6 @@ public class NotesClientUtil {
|
||||||
return url != null && url.length() > 4 && url.startsWith("http") && url.charAt(4) != 's';
|
return url != null && url.length() > 4 && url.startsWith("http") && url.charAt(4) != 's';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if the given URL returns a valid status code and sets the Check next to the URL-Input Field to visible.
|
|
||||||
* @param urlStr String URL
|
|
||||||
* @return URL is valid
|
|
||||||
*/
|
|
||||||
public static boolean isValidURL(String urlStr) {
|
|
||||||
try {
|
|
||||||
URL url = new URL(urlStr);
|
|
||||||
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
|
|
||||||
urlc.setRequestProperty("Connection", "close");
|
|
||||||
urlc.setConnectTimeout(1000 * 10); // mTimeout is in seconds
|
|
||||||
urlc.connect();
|
|
||||||
return urlc.getResponseCode() == 200;
|
|
||||||
} catch (MalformedURLException el) {
|
|
||||||
return false;
|
|
||||||
} catch (IOException e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param url String
|
* @param url String
|
||||||
|
@ -74,4 +59,29 @@ public class NotesClientUtil {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pings a server and checks if there is a installed ownCloud instance
|
||||||
|
*
|
||||||
|
* @param url String URL to server
|
||||||
|
* @return true if there is a installed instance, false if not
|
||||||
|
*/
|
||||||
|
public static boolean pingServer(String url) {
|
||||||
|
StringBuffer result = new StringBuffer();
|
||||||
|
try {
|
||||||
|
HttpURLConnection con = (HttpURLConnection) new URL(url + "status.php")
|
||||||
|
.openConnection();
|
||||||
|
con.setRequestMethod(NotesClient.METHOD_GET);
|
||||||
|
con.setConnectTimeout(10 * 1000); // 10 seconds
|
||||||
|
BufferedReader rd = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
||||||
|
String line;
|
||||||
|
while ((line = rd.readLine()) != null) {
|
||||||
|
result.append(line);
|
||||||
|
}
|
||||||
|
JSONObject response = new JSONObject(result.toString());
|
||||||
|
return response.getBoolean("installed");
|
||||||
|
} catch (IOException | JSONException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in a new issue