(params, record_types=False)
| 45 | |
| 46 | |
| 47 | def _sync_down_impl(params, record_types=False): # type: (KeeperParams, bool) -> None |
| 48 | params.sync_data = False |
| 49 | token = params.sync_down_token |
| 50 | |
| 51 | for record in params.record_cache.values(): |
| 52 | if 'shares' in record: |
| 53 | del record['shares'] |
| 54 | |
| 55 | def delete_record_key(rec_uid): |
| 56 | if rec_uid in params.record_cache: |
| 57 | record = params.record_cache[rec_uid] |
| 58 | if 'record_key_unencrypted' in record: |
| 59 | del record['record_key_unencrypted'] |
| 60 | if 'data_unencrypted' in record: |
| 61 | del record['data_unencrypted'] |
| 62 | if 'extra_unencrypted' in record: |
| 63 | del record['extra_unencrypted'] |
| 64 | |
| 65 | def delete_shared_folder_key(sf_uid): |
| 66 | if sf_uid in params.shared_folder_cache: |
| 67 | shared_folder = params.shared_folder_cache[sf_uid] |
| 68 | if 'shared_folder_key_unencrypted' in shared_folder: |
| 69 | del shared_folder['shared_folder_key_unencrypted'] |
| 70 | if 'records' in shared_folder: |
| 71 | for sfr in shared_folder['records']: |
| 72 | record_uid = sfr['record_uid'] |
| 73 | if record_uid not in params.meta_data_cache: |
| 74 | delete_record_key(record_uid) |
| 75 | |
| 76 | def delete_team_key(team_uid): |
| 77 | if team_uid in params.team_cache: |
| 78 | team = params.team_cache[team_uid] |
| 79 | if 'team_key_unencrypted' in team: |
| 80 | del team['team_key_unencrypted'] |
| 81 | if 'shared_folder_keys' in team: |
| 82 | for sfk in team['shared_folder_keys']: |
| 83 | delete_shared_folder_key(sfk['shared_folder_uid']) |
| 84 | |
| 85 | params.available_team_cache = None |
| 86 | |
| 87 | resp_bw_recs = [] # type: List[SyncDown_pb2.BreachWatchRecord] |
| 88 | resp_sec_data_recs = [] # type: List[SyncDown_pb2.BreachWatchSecurityData] |
| 89 | resp_sec_scores = [] # type: List[SyncDown_pb2.SecurityScoreData] |
| 90 | record_rotation_items = [] # type: List[record_pb2.RecordRotation] |
| 91 | nsf_enabled = not params.is_feature_disallowed('keeper_drive') |
| 92 | nsf_acc = nested_share_folder_sync.create_accumulator() if nsf_enabled else None |
| 93 | |
| 94 | request = SyncDown_pb2.SyncDownRequest() |
| 95 | revision = params.revision |
| 96 | full_sync = False |
| 97 | done = False |
| 98 | while not done: |
| 99 | if token: |
| 100 | request.continuationToken = token |
| 101 | response = api.communicate_rest(params, request, 'vault/sync_down', rs_type=SyncDown_pb2.SyncDownResponse) |
| 102 | done = not response.hasMore |
| 103 | token = response.continuationToken |
| 104 | if response.cacheStatus == SyncDown_pb2.CLEAR: |
no test coverage detected