Ejemplo n.º 1
0
    def getObject(self, identifier):
        ''' DRS formatted details of an EGA file '''
        display_file_name, file_name, file_size, check_sum = ega.get_file_name_size_md5(
            self.token, identifier)

        response = {
            "access_methods": [{
                "access_id": "ega",
                "region": "",
                "type": "pyega3"
            }],
            "checksums": [{
                "checksum": check_sum,
                "type": "md5"
            }],
            "created_time":
            "2020-02-26T18:01:43.252269",
            "id":
            identifier,
            "mime_type":
            "application/json",
            "description":
            file_name,
            "name":
            display_file_name,
            "self_uri":
            "drs://egasim/{}".format(identifier),
            "size":
            file_size,
            "updated_time":
            "2020-02-26T18:01:43.252275"
        }
        return response
Ejemplo n.º 2
0
 def testhtsget(self, identifier, ref, start, end, type, saveTo):
     display_file_name, file_name, file_size, check_sum = ega.get_file_name_size_md5(
         self.token, identifier)
     genomic_range_args = (ref, check_sum, start, end, type)
     print(display_file_name)
     ega.download_file_retry(self.credentials, identifier,
                             display_file_name, file_name, file_size,
                             check_sum, 3, self.key, saveTo,
                             genomic_range_args, -1, 10)
Ejemplo n.º 3
0
    def test_get_file_name_size_md5(self):

        good_file_id = "EGAF00000000001"
        file_size = 4804928
        file_name = "EGAZ00000000001/ENCFF000001.bam"
        display_file_name = "ENCFF000001.bam"
        check_sum = "3b89b96387db5199fef6ba613f70e27c"

        good_token = rand_str()

        def request_callback(request):
            auth_hdr = request.headers['Authorization']
            if auth_hdr is not None and auth_hdr == 'Bearer ' + good_token:
                return (200, {},
                        json.dumps({
                            "fileName": file_name,
                            "displayFileName": display_file_name,
                            "fileSize": file_size,
                            "unencryptedChecksum": check_sum
                        }))
            else:
                return (400, {},
                        json.dumps({"error_description": "invalid token"}))

        responses.add_callback(
            responses.GET,
            "https://ega.ebi.ac.uk:8052/elixir/data/metadata/files/{}".format(
                good_file_id),
            callback=request_callback,
            content_type='application/json',
        )

        rv = pyega3.get_file_name_size_md5(good_token, good_file_id)
        self.assertEqual(len(rv), 3)
        self.assertEqual(rv[0], display_file_name)
        self.assertEqual(rv[1], file_size)
        self.assertEqual(rv[2], check_sum)

        bad_token = rand_str()
        with self.assertRaises(requests.exceptions.HTTPError):
            pyega3.get_file_name_size_md5(bad_token, good_file_id)

        bad_file_id = "EGAF00000000000"
        with self.assertRaises(requests.exceptions.ConnectionError):
            pyega3.get_file_name_size_md5(good_token, bad_file_id)

        bad_file_id_2 = "EGAF00000000666"
        responses.add(
            responses.GET,
            "https://ega.ebi.ac.uk:8052/elixir/data/metadata/files/{}".format(
                bad_file_id_2),
            json={
                "fileName": None,
                "displayFileName": None,
                "unencryptedChecksum": None
            },
            status=200)
        with self.assertRaises(RuntimeError):
            pyega3.get_file_name_size_md5(good_token, bad_file_id_2)
Ejemplo n.º 4
0
 def getSize(self, identifier):
     display_file_name, file_name, file_size, check_sum = ega.get_file_name_size_md5(
         self.token, identifier)
     return file_size