synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
95 lines (94 loc) • 2.59 kB
JavaScript
import { EntityType as i } from "@sage-bionetworks/synapse-client";
import { UploadType as _, GOOGLE_CLOUD_FILE_HANDLE_CONCRETE_TYPE_VALUE as c, S3_FILE_HANDLE_CONCRETE_TYPE_VALUE as n, EXTERNAL_FILE_HANDLE_CONCRETE_TYPE_VALUE as a, PROXY_FILE_HANDLE_CONCRETE_TYPE_VALUE as s, EXTERNAL_OBJECT_STORE_FILE_HANDLE_CONCRETE_TYPE_VALUE as o } from "@sage-bionetworks/synapse-types";
const l = "Synapse Storage";
function g(e, r) {
switch (e.concreteType) {
case o:
return {
endpoint: e.endpointUrl,
bucket: e.bucket,
fileKey: e.fileKey
};
case s:
case a:
return {
url: E(
e,
r
)
};
case n:
case c:
return {
location: E(
e,
r
)
};
default:
throw new Error(
`Couldn't determine location name for file handle: ${JSON.stringify(
e
)}`
);
}
}
function E(e, r) {
switch (e.concreteType) {
case s:
return e.filePath;
case o:
case n:
case c:
return r ? T(r) : e.concreteType === o ? e.bucket : e.bucketName;
case a:
return e.externalURL;
default:
throw new Error(
`Couldn't determine location name for file handle: ${JSON.stringify(
e
)}`
);
}
}
function L(e) {
let r;
return e.entityType === i.file && (r = e.fileHandles.filter(
(t) => t.id === e.entity.dataFileHandleId
)[0]), r;
}
function T(e) {
let r = "";
if (e)
switch (e.concreteType) {
case "org.sagebionetworks.repo.model.file.S3UploadDestination":
r = l;
break;
case "org.sagebionetworks.repo.model.file.ExternalUploadDestination":
if (r = e.url, e.uploadType === _.SFTP) {
const t = r.lastIndexOf("/");
t && (r = r.substring(
0,
t
));
}
break;
case "org.sagebionetworks.repo.model.file.ExternalS3UploadDestination":
r = "s3://" + e.bucket + "/", e.baseKey != null && (r += e.baseKey);
break;
case "org.sagebionetworks.repo.model.file.ExternalGoogleCloudUploadDestination":
r = "gs://" + e.bucket + "/", e.baseKey != null && (r += e.baseKey);
break;
case "org.sagebionetworks.repo.model.file.ExternalObjectStoreUploadDestination":
r = e.endpointUrl + "/" + e.bucket;
break;
}
return r;
}
export {
L as getDataFileHandle,
g as getFileHandleStorageInfo,
E as getStorageLocationName,
T as getUploadDestinationString
};
//# sourceMappingURL=FileHandleUtils.js.map