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
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)
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)
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