Search in sources :

Example 1 with KeysClaimResponse

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

the class CryptoRestClient method claimOneTimeKeysForUsersDevices.

/**
 * Claim one-time keys.
 *
 * @param usersDevicesKeyTypesMap a list of users, devices and key types to retrieve keys for.
 * @param callback                the asynchronous callback
 */
public void claimOneTimeKeysForUsersDevices(final MXUsersDevicesMap<String> usersDevicesKeyTypesMap, final ApiCallback<MXUsersDevicesMap<MXKey>> callback) {
    final String description = "claimOneTimeKeysForUsersDevices";
    HashMap<String, Object> params = new HashMap<>();
    params.put("one_time_keys", usersDevicesKeyTypesMap.getMap());
    try {
        mApi.claimOneTimeKeysForUsersDevices(params, new RestAdapterCallback<KeysClaimResponse>(description, mUnsentEventsManager, callback, new RestAdapterCallback.RequestRetryCallBack() {

            @Override
            public void onRetry() {
                claimOneTimeKeysForUsersDevices(usersDevicesKeyTypesMap, callback);
            }
        }) {

            @Override
            public void success(KeysClaimResponse keysClaimResponse, Response response) {
                onEventSent();
                HashMap<String, Map<String, MXKey>> map = new HashMap();
                if (null != keysClaimResponse.oneTimeKeys) {
                    for (String userId : keysClaimResponse.oneTimeKeys.keySet()) {
                        Map<String, Map<String, Map<String, Object>>> mapByUserId = keysClaimResponse.oneTimeKeys.get(userId);
                        HashMap<String, MXKey> keysMap = new HashMap<>();
                        for (String deviceId : mapByUserId.keySet()) {
                            try {
                                keysMap.put(deviceId, new MXKey(mapByUserId.get(deviceId)));
                            } catch (Exception e) {
                                Log.e(LOG_TAG, "## claimOneTimeKeysForUsersDevices : fail to create a MXKey " + e.getMessage());
                            }
                        }
                        if (keysMap.size() != 0) {
                            map.put(userId, keysMap);
                        }
                    }
                }
                callback.onSuccess(new MXUsersDevicesMap<>(map));
            }
        });
    } catch (Throwable t) {
        callback.onUnexpectedError(new Exception(t));
    }
}
Also used : HashMap(java.util.HashMap) MXUsersDevicesMap(org.matrix.androidsdk.crypto.data.MXUsersDevicesMap) DevicesListResponse(org.matrix.androidsdk.rest.model.sync.DevicesListResponse) KeysClaimResponse(org.matrix.androidsdk.rest.model.crypto.KeysClaimResponse) KeysQueryResponse(org.matrix.androidsdk.rest.model.crypto.KeysQueryResponse) KeysUploadResponse(org.matrix.androidsdk.rest.model.crypto.KeysUploadResponse) KeyChangesResponse(org.matrix.androidsdk.rest.model.crypto.KeyChangesResponse) Response(retrofit.client.Response) MXKey(org.matrix.androidsdk.crypto.data.MXKey) KeysClaimResponse(org.matrix.androidsdk.rest.model.crypto.KeysClaimResponse) HashMap(java.util.HashMap) MXUsersDevicesMap(org.matrix.androidsdk.crypto.data.MXUsersDevicesMap) Map(java.util.Map)

Aggregations

HashMap (java.util.HashMap)1 Map (java.util.Map)1 MXKey (org.matrix.androidsdk.crypto.data.MXKey)1 MXUsersDevicesMap (org.matrix.androidsdk.crypto.data.MXUsersDevicesMap)1 KeyChangesResponse (org.matrix.androidsdk.rest.model.crypto.KeyChangesResponse)1 KeysClaimResponse (org.matrix.androidsdk.rest.model.crypto.KeysClaimResponse)1 KeysQueryResponse (org.matrix.androidsdk.rest.model.crypto.KeysQueryResponse)1 KeysUploadResponse (org.matrix.androidsdk.rest.model.crypto.KeysUploadResponse)1 DevicesListResponse (org.matrix.androidsdk.rest.model.sync.DevicesListResponse)1 Response (retrofit.client.Response)1