Search in sources :

Example 1 with MediaScanPublicKeyResult

use of org.matrix.androidsdk.rest.model.MediaScanPublicKeyResult in project matrix-android-sdk by matrix-org.

the class MediaScanRestClient method getServerPublicKey.

/**
 * Get the current public curve25519 key that the AV server is advertising.
 * Read the value from cache if any
 *
 * @param callback on success callback containing the server public key
 */
public void getServerPublicKey(final ApiCallback<String> callback) {
    if (mMxStore == null) {
        callback.onUnexpectedError(new Exception("MxStore not configured"));
        return;
    }
    // Check in cache
    String keyFromCache = mMxStore.getAntivirusServerPublicKey();
    if (keyFromCache != null) {
        callback.onSuccess(keyFromCache);
    } else {
        mApi.getServerPublicKey().enqueue(new RestAdapterCallback<>("getServerPublicKey", null, new SimpleApiCallback<MediaScanPublicKeyResult>(callback) {

            @Override
            public void onSuccess(MediaScanPublicKeyResult info) {
                // Store the key in cache for next times
                mMxStore.setAntivirusServerPublicKey(info.mCurve25519PublicKey);
                // Note: for some reason info.mCurve25519PublicKey may be null
                if (info.mCurve25519PublicKey != null) {
                    callback.onSuccess(info.mCurve25519PublicKey);
                } else {
                    callback.onUnexpectedError(new Exception("Unable to get server public key from Json"));
                }
            }

            @Override
            public void onMatrixError(MatrixError e) {
                // Old Antivirus scanner instance will return a 404
                if (e.mStatus == HttpURLConnection.HTTP_NOT_FOUND) {
                    // On 404 consider the public key is not available, so do not encrypt body
                    mMxStore.setAntivirusServerPublicKey("");
                    callback.onSuccess("");
                } else {
                    super.onMatrixError(e);
                }
            }
        }, null));
    }
}
Also used : MatrixError(org.matrix.androidsdk.core.model.MatrixError) OlmException(org.matrix.olm.OlmException) SimpleApiCallback(org.matrix.androidsdk.core.callback.SimpleApiCallback) MediaScanPublicKeyResult(org.matrix.androidsdk.rest.model.MediaScanPublicKeyResult)

Aggregations

SimpleApiCallback (org.matrix.androidsdk.core.callback.SimpleApiCallback)1 MatrixError (org.matrix.androidsdk.core.model.MatrixError)1 MediaScanPublicKeyResult (org.matrix.androidsdk.rest.model.MediaScanPublicKeyResult)1 OlmException (org.matrix.olm.OlmException)1