| 15 | |
| 16 | |
| 17 | class DataDirectory(DataObject): |
| 18 | def __init__(self, client, dataUrl): |
| 19 | super(DataDirectory, self).__init__(DataObjectType.directory) |
| 20 | self.client = client |
| 21 | # Parse dataUrl |
| 22 | self.path = re.sub(r'^data://|^/', '', dataUrl) |
| 23 | self.url = DataDirectory._getUrl(self.path) |
| 24 | |
| 25 | @staticmethod |
| 26 | def _getUrl(path): |
| 27 | return '/v1/data/' + path |
| 28 | |
| 29 | def set_attributes(self, response_json): |
| 30 | # Nothing to set for now |
| 31 | pass |
| 32 | |
| 33 | def getName(self): |
| 34 | _, name = getParentAndBase(self.path) |
| 35 | return name |
| 36 | |
| 37 | def exists(self): |
| 38 | # Heading a directory apparently isn't a valid operation |
| 39 | response = self.client.getHelper(self.url) |
| 40 | return (response.status_code == 200) |
| 41 | |
| 42 | def create(self, acl=None): |
| 43 | '''Creates a directory, optionally include Acl argument to set permissions''' |
| 44 | parent, name = getParentAndBase(self.path) |
| 45 | json = {'name': name} |
| 46 | if acl is not None: |
| 47 | json['acl'] = acl.to_api_param() |
| 48 | response = self.client.postJsonHelper(DataDirectory._getUrl(parent), json, False) |
| 49 | if (response.status_code != 200): |
| 50 | raise DataApiError("Directory creation failed: " + str(response.content)) |
| 51 | |
| 52 | def delete(self, force=False): |
| 53 | # Delete from data api |
| 54 | url = self.url |
| 55 | if force: |
| 56 | url += '?force=true' |
| 57 | |
| 58 | result = self.client.deleteHelper(url) |
| 59 | if 'error' in result: |
| 60 | raise DataApiError(result['error']['message']) |
| 61 | else: |
| 62 | return True |
| 63 | |
| 64 | def file(self, name): |
| 65 | return DataFile(self.client, pathJoin(self.path, name)) |
| 66 | |
| 67 | def files(self): |
| 68 | return self._get_directory_iterator(DataObjectType.file) |
| 69 | |
| 70 | def dir(self, name): |
| 71 | return DataDirectory(self.client, pathJoin(self.path, name)) |
| 72 | |
| 73 | def dirs(self): |
| 74 | return self._get_directory_iterator(DataObjectType.directory) |
no outgoing calls