示例#1
0
    def upload_folder(self, local_folder):
        assert isinstance(local_folder, File)
        assert local_folder.is_folder
        # PUT /v1/resources/6/providers/osfstorage/21/?kind=folder&name=FUN_FOLDER HTTP/1.1" 200 -

        params = {
            'kind': 'folder',
            'name': local_folder.name,
        }
        files_url = api_url_for(
            RESOURCES,
            node_id=local_folder.node.osf_id,
            provider=local_folder.provider,
            file_id=local_folder.parent.osf_id if local_folder.has_parent else None
        )
        resp_json = yield from self.make_request(files_url, method="PUT", params=params, get_json=True)
        AlertHandler.info(local_folder.name, AlertHandler.UPLOAD)

        # todo: determine whether uploaded folder will contain api url for its children
        new_file_id = resp_json['data']['id'].split('/')[1]
        children_url = api_url_for(NODES, related_type=FILES, node_id=local_folder.node.osf_id,
                                   provider=local_folder.provider, file_id=new_file_id)
        resp_json['data']['relationships'] = {
            'files': {
                'links': {
                    'related': {
                        'href': children_url
                    }
                }
            }
        }
        # https://staging-api.osf.io/v2/nodes/4e6k8/files/osfstorage/562134f1029bdb6c230f2874/
        # ['relationships']['files']['links']['related']['href']

        return dict_to_remote_object(resp_json['data'])
示例#2
0
 def get_child_files(self, remote_node_or_folder):
     assert isinstance(remote_node_or_folder, RemoteNode) or isinstance(
         remote_node_or_folder, RemoteFolder)
     file_folders = yield from self._get_all_paginated_members(
         remote_node_or_folder.child_files_url)
     return [
         dict_to_remote_object(file_folder) for file_folder in file_folders
     ]
def get_children_file_folders(parent_folder):
    assert isinstance(parent_folder, RemoteFolder)
    url = parent_folder.child_files_url
    resp = session.get(url)
    assert resp.ok
    return [
        dict_to_remote_object(file_folder)
        for file_folder in resp.json()['data']
    ]
示例#4
0
def get_node_file_folders(node_id):
    node_files_url = api_node_files(node_id)
    resp = session.get(node_files_url)
    assert resp.ok
    osf_storage_folder = RemoteFolder(resp.json()['data'][0])
    assert osf_storage_folder.provider == osf_storage_folder.name
    children_resp = session.get(osf_storage_folder.child_files_url)
    assert children_resp.ok
    return [dict_to_remote_object(file_folder) for file_folder in children_resp.json()['data']]
示例#5
0
def create_osf_node(title, parent=None):
    if parent:
        url = api_create_node(parent.id)
        resp = session.post(url, data={'title':title})
        assert resp.ok

        base = furl(resp.headers['Location'])
        new_node_id = base.path.segments[0]
        url = api_node_self(new_node_id)
        resp = session.get(url)
        assert resp.ok
        new_node_dict = resp.json()['data']
        return dict_to_remote_object(new_node_dict)
    else:
        url = api_create_node()
        resp = session.post(url, data={'title':title})
        assert resp.ok
        return dict_to_remote_object(resp.json()['data'])
def create_osf_node(title, parent=None):
    if parent:
        url = api_create_node(parent.id)
        resp = session.post(url, data={'title': title})
        assert resp.ok

        base = furl(resp.headers['Location'])
        new_node_id = base.path.segments[0]
        url = api_node_self(new_node_id)
        resp = session.get(url)
        assert resp.ok
        new_node_dict = resp.json()['data']
        return dict_to_remote_object(new_node_dict)
    else:
        url = api_create_node()
        resp = session.post(url, data={'title': title})
        assert resp.ok
        return dict_to_remote_object(resp.json()['data'])
示例#7
0
def get_node_file_folders(node_id):
    node_files_url = api_url_for(NODES, related_type=FILES, node_id=node_id)
    resp = session.get(node_files_url)

    assert resp.ok
    osf_storage_folder = RemoteFolder(resp.json()["data"][0])
    assert osf_storage_folder.provider == osf_storage_folder.name
    children_resp = session.get(osf_storage_folder.child_files_url)
    assert children_resp.ok
    return [dict_to_remote_object(file_folder) for file_folder in children_resp.json()["data"]]
def get_node_file_folders(node_id):
    node_files_url = api_node_files(node_id)
    resp = session.get(node_files_url)
    assert resp.ok
    osf_storage_folder = RemoteFolder(resp.json()['data'][0])
    assert osf_storage_folder.provider == osf_storage_folder.name
    children_resp = session.get(osf_storage_folder.child_files_url)
    assert children_resp.ok
    return [
        dict_to_remote_object(file_folder)
        for file_folder in children_resp.json()['data']
    ]
示例#9
0
    def upload_folder(self, local_folder):
        assert isinstance(local_folder, File)
        assert local_folder.is_folder
        # PUT /v1/resources/6/providers/osfstorage/21/?kind=folder&name=FUN_FOLDER HTTP/1.1" 200 -

        params = {
            'kind': 'folder',
            'name': local_folder.name,
        }
        files_url = api_url_for(RESOURCES,
                                node_id=local_folder.node.osf_id,
                                provider=local_folder.provider,
                                file_id=local_folder.parent.osf_id
                                if local_folder.has_parent else None)
        resp_json = yield from self.make_request(files_url,
                                                 method="PUT",
                                                 params=params,
                                                 get_json=True)
        AlertHandler.info(local_folder.name, AlertHandler.UPLOAD)

        # todo: determine whether uploaded folder will contain api url for its children
        new_file_id = resp_json['data']['id'].split('/')[1]
        children_url = api_url_for(NODES,
                                   related_type=FILES,
                                   node_id=local_folder.node.osf_id,
                                   provider=local_folder.provider,
                                   file_id=new_file_id)
        resp_json['data']['relationships'] = {
            'files': {
                'links': {
                    'related': {
                        'href': children_url
                    }
                }
            }
        }
        # https://staging-api.osf.io/v2/nodes/4e6k8/files/osfstorage/562134f1029bdb6c230f2874/
        # ['relationships']['files']['links']['related']['href']

        return dict_to_remote_object(resp_json['data'])
示例#10
0
def get_node_by_node_id(node_id):
    url = api_node_self(node_id)
    resp = session.get(url)
    assert resp.ok
    return dict_to_remote_object(resp.json()['data'])
示例#11
0
 def download_file(self, remote_file):
     assert isinstance(remote_file, RemoteFile)
     file = yield from self.make_request(remote_file.download_url)
     return dict_to_remote_object(file)
示例#12
0
 def get_child_nodes(self, remote_node):
     assert isinstance(remote_node, RemoteNode)
     nodes = yield from self._get_all_paginated_members(
         remote_node.child_nodes_url)
     return [dict_to_remote_object(node) for node in nodes]
示例#13
0
 def get_child_files(self, remote_node_or_folder):
     assert isinstance(remote_node_or_folder, RemoteNode) or isinstance(remote_node_or_folder, RemoteFolder)
     file_folders = yield from self._get_all_paginated_members(remote_node_or_folder.child_files_url)
     return [dict_to_remote_object(file_folder) for file_folder in file_folders]
示例#14
0
 def get_child_nodes(self, remote_node):
     assert isinstance(remote_node, RemoteNode)
     nodes = yield from self._get_all_paginated_members(remote_node.child_nodes_url)
     return [dict_to_remote_object(node) for node in nodes]
示例#15
0
def get_children_file_folders(parent_folder):
    assert isinstance(parent_folder, RemoteFolder)
    url = parent_folder.child_files_url
    resp = session.get(url)
    assert resp.ok
    return [dict_to_remote_object(file_folder) for file_folder in resp.json()["data"]]
示例#16
0
 def download_file(self, remote_file):
     assert isinstance(remote_file, RemoteFile)
     file = yield from self.make_request(remote_file.download_url)
     return dict_to_remote_object(file)
示例#17
0
def get_node_by_node_id(node_id):
    url = api_node_self(node_id)
    resp = session.get(url)
    assert resp.ok
    return dict_to_remote_object(resp.json()['data'])