Esempio n. 1
0
        private void HandlePendingMissingFileKeys(ApiMissingFileKeys missingFileKeys, UserPrivateKey thisUserPrivateKey)
        {
            if (missingFileKeys == null || missingFileKeys.Items.Count == 0)
            {
                return;
            }

            Dictionary <long, UserPublicKey> userPublicKeys         = UserMapper.ConvertApiUserIdPublicKeys(missingFileKeys.UserPublicKey);
            Dictionary <long, PlainFileKey>  plainFileKeys          = GeneratePlainFileKeyMap(missingFileKeys.FileKeys, thisUserPrivateKey);
            ApiSetUserFileKeysRequest        setUserFileKeysRequest = new ApiSetUserFileKeysRequest {
                Items = new List <ApiSetUserFileKey>(missingFileKeys.UserPublicKey.Count)
            };

            foreach (ApiUserIdFileId currentMissingFileKey in missingFileKeys.Items)
            {
                UserPublicKey currentUsersPublicKey = userPublicKeys[currentMissingFileKey.UserId];
                PlainFileKey  currentPlainFileKey   = plainFileKeys[currentMissingFileKey.FileId];

                EncryptedFileKey currentEncryptedFileKey = EncryptFileKey(currentPlainFileKey, currentUsersPublicKey, currentMissingFileKey.FileId);

                ApiSetUserFileKey newRequestEntry = new ApiSetUserFileKey {
                    FileId  = currentMissingFileKey.FileId,
                    UserId  = currentMissingFileKey.UserId,
                    FileKey = FileMapper.ToApiFileKey(currentEncryptedFileKey)
                };
                setUserFileKeysRequest.Items.Add(newRequestEntry);
            }

            IRestRequest restRequest = _client.Builder.PostMissingFileKeys(setUserFileKeysRequest);

            _client.Executor.DoSyncApiCall <VoidResponse>(restRequest, RequestType.PostMissingFileKeys);
        }
        IRestRequest IRequestBuilder.PostMissingFileKeys(ApiSetUserFileKeysRequest fileKeyParams)
        {
            RestRequest request = new RestRequest(ApiConfig.ApiPostMissingFileKeys, Method.POST);

            SetGeneralRestValues(request, true, fileKeyParams);
            return(request);
        }