(params, rec)
| 106 | |
| 107 | @staticmethod |
| 108 | def load(params, rec): |
| 109 | # type: (KeeperParams, Union[str, Dict[str, Any]]) -> Optional['KeeperRecord'] |
| 110 | if isinstance(rec, str): |
| 111 | if rec not in params.record_cache: |
| 112 | return |
| 113 | record = params.record_cache[rec] |
| 114 | elif isinstance(rec, dict): |
| 115 | record = rec |
| 116 | else: |
| 117 | return |
| 118 | |
| 119 | if 'data_unencrypted' not in record: |
| 120 | return |
| 121 | version = record.get('version', 0) |
| 122 | |
| 123 | if version == 2: |
| 124 | keeper_record = PasswordRecord() |
| 125 | elif version == 3: |
| 126 | keeper_record = TypedRecord(version=3) |
| 127 | elif version == 4: |
| 128 | keeper_record = FileRecord() |
| 129 | keeper_record.storage_size = record.get('file_size') |
| 130 | elif version == 5: |
| 131 | keeper_record = ApplicationRecord() |
| 132 | elif version == 6: |
| 133 | keeper_record = TypedRecord(version=6) |
| 134 | else: |
| 135 | return |
| 136 | keeper_record.record_uid = record['record_uid'] |
| 137 | keeper_record.revision = record.get('revision', 0) |
| 138 | keeper_record.record_key = record['record_key_unencrypted'] |
| 139 | keeper_record.client_time_modified = record.get('client_modified_time', 0) |
| 140 | keeper_record.shared = record.get('shared', False) |
| 141 | |
| 142 | try: |
| 143 | data = json.loads(record['data_unencrypted']) |
| 144 | except: |
| 145 | logging.warning('Record \"%s\": Corrupted record data', keeper_record.record_uid) |
| 146 | return |
| 147 | |
| 148 | extra_str = record['extra_unencrypted'] if 'extra_unencrypted' in record else None |
| 149 | extra = None # type: Optional[Dict] |
| 150 | if extra_str: |
| 151 | try: |
| 152 | extra = json.loads(extra_str) |
| 153 | except: |
| 154 | logging.debug('Record \"%s\": Corrupted record extra', keeper_record.record_uid) |
| 155 | |
| 156 | keeper_record.load_record_data(data, extra) |
| 157 | |
| 158 | return keeper_record |
| 159 | |
| 160 | def enumerate_fields(self): # type: () -> Iterable[Tuple[str, Union[None, str, List[str]]]] |
| 161 | yield '(title)', self.title |
nothing calls this directly
no test coverage detected