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));
}
}
Aggregations