Page MenuHomePhorge

D7615.1767350660.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D7615.1767350660.diff

diff --git a/lib/facts/blob-service.js b/lib/facts/blob-service.js
new file mode 100644
--- /dev/null
+++ b/lib/facts/blob-service.js
@@ -0,0 +1,32 @@
+// @flow
+
+export type BlobServiceHTTPEndpoint = {
+ +path: string,
+ +method: 'GET' | 'POST' | 'PUT' | 'DELETE',
+};
+
+const httpEndpoints = Object.freeze({
+ GET_BLOB: {
+ path: '/blob/:holder',
+ method: 'GET',
+ },
+ ASSIGN_HOLDER: {
+ path: '/blob',
+ method: 'POST',
+ },
+ UPLOAD_BLOB: {
+ path: '/blob',
+ method: 'PUT',
+ },
+ DELETE_BLOB: {
+ path: '/blob/:holder',
+ method: 'DELETE',
+ },
+});
+
+const config = {
+ url: 'https://blob.commtechnologies.org',
+ httpEndpoints,
+};
+
+export default config;
diff --git a/lib/utils/blob-service.js b/lib/utils/blob-service.js
new file mode 100644
--- /dev/null
+++ b/lib/utils/blob-service.js
@@ -0,0 +1,54 @@
+// @flow
+
+import invariant from 'invariant';
+
+import type { BlobServiceHTTPEndpoint } from '../facts/blob-service.js';
+import blobServiceConfig from '../facts/blob-service.js';
+
+const BLOB_SERVICE_URI_PREFIX = 'comm-blob-service://';
+
+function makeBlobServiceURI(holder: string): string {
+ return `${BLOB_SERVICE_URI_PREFIX}${holder}`;
+}
+
+function isBlobServiceURI(uri: string): boolean {
+ return uri.startsWith(BLOB_SERVICE_URI_PREFIX);
+}
+
+function holderFromBlobServiceURI(uri: string): string {
+ invariant(isBlobServiceURI(uri), 'Not a blob service URI');
+ return uri.slice(BLOB_SERVICE_URI_PREFIX.length);
+}
+
+function holderFromURI(uri: string): ?string {
+ if (!isBlobServiceURI(uri)) {
+ return null;
+ }
+ return holderFromBlobServiceURI(uri);
+}
+
+function makeBlobServiceEndpointURL(
+ endpoint: BlobServiceHTTPEndpoint,
+ params: { [name: string]: string } = {},
+): string {
+ let path = endpoint.path;
+ for (const name in params) {
+ path = path.replace(`:${name}`, params[name]);
+ }
+ return `${blobServiceConfig.url}${path}`;
+}
+
+function getBlobFetchableURL(holder: string): string {
+ return makeBlobServiceEndpointURL(blobServiceConfig.httpEndpoints.GET_BLOB, {
+ holder,
+ });
+}
+
+export {
+ makeBlobServiceURI,
+ isBlobServiceURI,
+ holderFromURI,
+ holderFromBlobServiceURI,
+ getBlobFetchableURL,
+ makeBlobServiceEndpointURL,
+};

File Metadata

Mime Type
text/plain
Expires
Fri, Jan 2, 10:44 AM (7 h, 43 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5879289
Default Alt Text
D7615.1767350660.diff (2 KB)

Event Timeline