Search in sources :

Example 1 with GetRequest

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();
    });
}
Also used : BuildConfig(com.nutomic.syncthingandroid.BuildConfig) Config(com.nutomic.syncthingandroid.model.Config) GetRequest(com.nutomic.syncthingandroid.http.GetRequest) JsonObject(com.google.gson.JsonObject) Gson(com.google.gson.Gson) JsonParser(com.google.gson.JsonParser)

Example 2 with GetRequest

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);
    });
}
Also used : FolderStatus(com.nutomic.syncthingandroid.model.FolderStatus) GetRequest(com.nutomic.syncthingandroid.http.GetRequest) Gson(com.google.gson.Gson)

Example 3 with GetRequest

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();
        }
    });
}
Also used : GetRequest(com.nutomic.syncthingandroid.http.GetRequest) JsonObject(com.google.gson.JsonObject) JsonParser(com.google.gson.JsonParser)

Example 4 with GetRequest

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));
    });
}
Also used : Connections(com.nutomic.syncthingandroid.model.Connections) Context(android.content.Context) JsonObject(com.google.gson.JsonObject) RemoteIgnoredDevice(com.nutomic.syncthingandroid.model.RemoteIgnoredDevice) URL(java.net.URL) Date(java.util.Date) SimpleDateFormat(java.text.SimpleDateFormat) Intent(android.content.Intent) Completion(com.nutomic.syncthingandroid.model.Completion) HashMap(java.util.HashMap) TypeToken(com.google.common.reflect.TypeToken) JsonParser(com.google.gson.JsonParser) Options(com.nutomic.syncthingandroid.model.Options) GsonBuilder(com.google.gson.GsonBuilder) IgnoredFolder(com.nutomic.syncthingandroid.model.IgnoredFolder) JsonElement(com.google.gson.JsonElement) ShareActivity(com.nutomic.syncthingandroid.activities.ShareActivity) HashSet(java.util.HashSet) Inject(javax.inject.Inject) Folder(com.nutomic.syncthingandroid.model.Folder) Optional(com.google.common.base.Optional) Gson(com.google.gson.Gson) BuildConfig(com.nutomic.syncthingandroid.BuildConfig) Map(java.util.Map) SyncthingApp(com.nutomic.syncthingandroid.SyncthingApp) SystemInfo(com.nutomic.syncthingandroid.model.SystemInfo) FolderStatus(com.nutomic.syncthingandroid.model.FolderStatus) Connections(com.nutomic.syncthingandroid.model.Connections) PreferenceManager(android.preference.PreferenceManager) Objects(com.google.common.base.Objects) Config(com.nutomic.syncthingandroid.model.Config) Device(com.nutomic.syncthingandroid.model.Device) Log(android.util.Log) Event(com.nutomic.syncthingandroid.model.Event) CompletionInfo(com.nutomic.syncthingandroid.model.CompletionInfo) Iterator(java.util.Iterator) ImmutableMap(com.google.common.collect.ImmutableMap) PostConfigRequest(com.nutomic.syncthingandroid.http.PostConfigRequest) Set(java.util.Set) PostRequest(com.nutomic.syncthingandroid.http.PostRequest) JsonArray(com.google.gson.JsonArray) List(java.util.List) Type(java.lang.reflect.Type) SystemVersion(com.nutomic.syncthingandroid.model.SystemVersion) GetRequest(com.nutomic.syncthingandroid.http.GetRequest) Comparator(java.util.Comparator) Collections(java.util.Collections) GetRequest(com.nutomic.syncthingandroid.http.GetRequest) Gson(com.google.gson.Gson) HashMap(java.util.HashMap) Map(java.util.Map) ImmutableMap(com.google.common.collect.ImmutableMap)

Example 5 with GetRequest

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);
            }
        });
    }
}
Also used : GetRequest(com.nutomic.syncthingandroid.http.GetRequest) JsonObject(com.google.gson.JsonObject) HashSet(java.util.HashSet) JsonParser(com.google.gson.JsonParser)

Aggregations

GetRequest (com.nutomic.syncthingandroid.http.GetRequest)10 Gson (com.google.gson.Gson)7 JsonParser (com.google.gson.JsonParser)7 JsonObject (com.google.gson.JsonObject)5 JsonElement (com.google.gson.JsonElement)4 GsonBuilder (com.google.gson.GsonBuilder)2 JsonArray (com.google.gson.JsonArray)2 BuildConfig (com.nutomic.syncthingandroid.BuildConfig)2 Config (com.nutomic.syncthingandroid.model.Config)2 Event (com.nutomic.syncthingandroid.model.Event)2 FolderStatus (com.nutomic.syncthingandroid.model.FolderStatus)2 SystemVersion (com.nutomic.syncthingandroid.model.SystemVersion)2 HashSet (java.util.HashSet)2 Context (android.content.Context)1 Intent (android.content.Intent)1 PreferenceManager (android.preference.PreferenceManager)1 Log (android.util.Log)1 Objects (com.google.common.base.Objects)1 Optional (com.google.common.base.Optional)1 ImmutableMap (com.google.common.collect.ImmutableMap)1