use of com.nutomic.syncthingandroid.http.GetRequest in project syncthing-android by syncthing.
the class RestApi method onWebGuiAvailable.
/**
* Gets local device ID, syncthing version and config, then calls all OnApiAvailableListeners.
*/
@Override
public void onWebGuiAvailable() {
mAvailableCount.set(0);
new GetRequest(mContext, mUrl, GetRequest.URI_VERSION, mApiKey, null, result -> {
JsonObject json = new JsonParser().parse(result).getAsJsonObject();
mVersion = json.get("version").getAsString();
Log.i(TAG, "Syncthing version is " + mVersion);
tryIsAvailable();
});
new GetRequest(mContext, mUrl, GetRequest.URI_CONFIG, mApiKey, null, result -> {
mConfig = new Gson().fromJson(result, Config.class);
if (mConfig == null) {
throw new RuntimeException("config is null: " + result);
}
tryIsAvailable();
});
getSystemInfo(info -> {
mLocalDeviceId = info.myID;
tryIsAvailable();
});
}
use of com.nutomic.syncthingandroid.http.GetRequest in project syncthing-android by syncthing.
the class RestApi method getFolderStatus.
/**
* Returns status information about the folder with the given id.
*/
public void getFolderStatus(final String folderId, final OnResultListener2<String, FolderStatus> listener) {
new GetRequest(mContext, mUrl, GetRequest.URI_STATUS, mApiKey, ImmutableMap.of("folder", folderId), result -> {
FolderStatus m = new Gson().fromJson(result, FolderStatus.class);
mCachedFolderStatuses.put(folderId, m);
listener.onResult(folderId, m);
});
}
use of com.nutomic.syncthingandroid.http.GetRequest in project syncthing-android by syncthing.
the class RestApi method readConfigFromRestApi.
/**
* Gets local device ID, syncthing version and config, then calls all OnApiAvailableListeners.
*/
public void readConfigFromRestApi() {
Log.v(TAG, "Reading config from REST ...");
synchronized (mAsyncQueryCompleteLock) {
asyncQueryVersionComplete = false;
asyncQueryConfigComplete = false;
asyncQuerySystemInfoComplete = false;
}
new GetRequest(mContext, mUrl, GetRequest.URI_VERSION, mApiKey, null, result -> {
JsonObject json = new JsonParser().parse(result).getAsJsonObject();
mVersion = json.get("version").getAsString();
Log.i(TAG, "Syncthing version is " + mVersion);
updateDebugFacilitiesCache();
synchronized (mAsyncQueryCompleteLock) {
asyncQueryVersionComplete = true;
checkReadConfigFromRestApiCompleted();
}
});
new GetRequest(mContext, mUrl, GetRequest.URI_CONFIG, mApiKey, null, result -> {
onReloadConfigComplete(result);
synchronized (mAsyncQueryCompleteLock) {
asyncQueryConfigComplete = true;
checkReadConfigFromRestApiCompleted();
}
});
getSystemInfo(info -> {
mLocalDeviceId = info.myID;
mUrVersionMax = info.urVersionMax;
synchronized (mAsyncQueryCompleteLock) {
asyncQuerySystemInfoComplete = true;
checkReadConfigFromRestApiCompleted();
}
});
}
use of com.nutomic.syncthingandroid.http.GetRequest in project syncthing-android by syncthing.
the class RestApi method getConnections.
/**
* Returns connection info for the local device and all connected devices.
*/
public void getConnections(final OnResultListener1<Connections> listener) {
new GetRequest(mContext, mUrl, GetRequest.URI_CONNECTIONS, mApiKey, null, result -> {
Long now = System.currentTimeMillis();
Long msElapsed = now - mPreviousConnectionTime;
if (msElapsed < Constants.GUI_UPDATE_INTERVAL) {
listener.onResult(deepCopy(mPreviousConnections.get(), Connections.class));
return;
}
mPreviousConnectionTime = now;
Connections connections = new Gson().fromJson(result, Connections.class);
for (Map.Entry<String, Connections.Connection> e : connections.connections.entrySet()) {
e.getValue().completion = mCompletion.getDeviceCompletion(e.getKey());
Connections.Connection prev = (mPreviousConnections.isPresent() && mPreviousConnections.get().connections.containsKey(e.getKey())) ? mPreviousConnections.get().connections.get(e.getKey()) : new Connections.Connection();
e.getValue().setTransferRate(prev, msElapsed);
}
Connections.Connection prev = mPreviousConnections.transform(c -> c.total).or(new Connections.Connection());
connections.total.setTransferRate(prev, msElapsed);
mPreviousConnections = Optional.of(connections);
listener.onResult(deepCopy(connections, Connections.class));
});
}
use of com.nutomic.syncthingandroid.http.GetRequest in project syncthing-android by syncthing.
the class RestApi method updateDebugFacilitiesCache.
/**
* Queries debug facilities available from the currently running syncthing binary
* if the syncthing binary version changed. First launch of the binary is also
* considered as a version change.
* Precondition: {@link #mVersion} read from REST
*/
private void updateDebugFacilitiesCache() {
final String PREF_LAST_BINARY_VERSION = "lastBinaryVersion";
if (!mVersion.equals(PreferenceManager.getDefaultSharedPreferences(mContext).getString(PREF_LAST_BINARY_VERSION, ""))) {
// First binary launch or binary upgraded case.
new GetRequest(mContext, mUrl, GetRequest.URI_DEBUG, mApiKey, null, result -> {
try {
Set<String> facilitiesToStore = new HashSet<String>();
JsonObject json = new JsonParser().parse(result).getAsJsonObject();
JsonObject jsonFacilities = json.getAsJsonObject("facilities");
for (String facilityName : jsonFacilities.keySet()) {
facilitiesToStore.add(facilityName);
}
PreferenceManager.getDefaultSharedPreferences(mContext).edit().putStringSet(Constants.PREF_DEBUG_FACILITIES_AVAILABLE, facilitiesToStore).apply();
// Store current binary version so we will only store this information again
// after a binary update.
PreferenceManager.getDefaultSharedPreferences(mContext).edit().putString(PREF_LAST_BINARY_VERSION, mVersion).apply();
} catch (Exception e) {
Log.w(TAG, "updateDebugFacilitiesCache: Failed to get debug facilities. result=" + result);
}
});
}
}
Aggregations