@autonomys/auto-drive 1.4.34 → 1.4.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,16 @@
1
1
  import { ArgsWithoutPagination } from '../../utils/types';
2
+ import { AsyncDownload, DownloadStatus } from '../models/asyncDownloads';
2
3
  import { AutoDriveApiHandler } from '../types';
3
4
  export declare const downloadObject: (api: AutoDriveApiHandler, query: ArgsWithoutPagination<{
4
5
  cid: string;
5
6
  ignoreBackendEncoding?: boolean;
6
7
  }>) => Promise<ReadableStream<Uint8Array>>;
8
+ export declare const createAsyncDownload: (api: AutoDriveApiHandler, cid: string) => Promise<AsyncDownload>;
9
+ export declare const getAsyncDownload: (api: AutoDriveApiHandler, downloadId: string) => Promise<AsyncDownload>;
10
+ export declare const getAsyncDownloads: (api: AutoDriveApiHandler) => Promise<AsyncDownload[]>;
11
+ export declare const dismissAsyncDownload: (api: AutoDriveApiHandler, downloadId: string) => Promise<void>;
7
12
  export declare const publicDownloadUrl: (api: AutoDriveApiHandler, cid: string) => string;
13
+ export declare const downloadStatus: (api: AutoDriveApiHandler, cid: string) => Promise<{
14
+ status: DownloadStatus;
15
+ }>;
8
16
  //# sourceMappingURL=download.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/api/calls/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,eAAO,MAAM,cAAc,GACzB,KAAK,mBAAmB,EACxB,OAAO,qBAAqB,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KAC7E,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAmBpC,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,KAAK,mBAAmB,EAAE,KAAK,MAAM,KAAG,MAEzE,CAAA"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/api/calls/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,eAAO,MAAM,cAAc,GACzB,KAAK,mBAAmB,EACxB,OAAO,qBAAqB,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KAC7E,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAmBpC,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,KAAK,mBAAmB,EACxB,KAAK,MAAM,KACV,OAAO,CAAC,aAAa,CAUvB,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,KAAK,mBAAmB,EACxB,YAAY,MAAM,KACjB,OAAO,CAAC,aAAa,CAUvB,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAU,KAAK,mBAAmB,KAAG,OAAO,CAAC,aAAa,EAAE,CAUzF,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,KAAK,mBAAmB,EACxB,YAAY,MAAM,KACjB,OAAO,CAAC,IAAI,CAQd,CAAA;AACD,eAAO,MAAM,iBAAiB,GAAI,KAAK,mBAAmB,EAAE,KAAK,MAAM,KAAG,MAEzE,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,KAAK,mBAAmB,EACxB,KAAK,MAAM,KACV,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,CAUpC,CAAA"}
@@ -9,11 +9,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.publicDownloadUrl = exports.downloadObject = void 0;
12
+ exports.downloadStatus = exports.publicDownloadUrl = exports.dismissAsyncDownload = exports.getAsyncDownloads = exports.getAsyncDownload = exports.createAsyncDownload = exports.downloadObject = void 0;
13
13
  const downloadObject = (api, query) => __awaiter(void 0, void 0, void 0, function* () {
14
14
  var _a;
15
15
  const ignoreBackendEncoding = (_a = query.ignoreBackendEncoding) !== null && _a !== void 0 ? _a : true;
16
- const response = yield api.sendDownloadRequest(`/objects/${query.cid}/download?ignoreEncoding=${ignoreBackendEncoding}`, {
16
+ const response = yield api.sendDownloadRequest(`/downloads/${query.cid}?ignoreEncoding=${ignoreBackendEncoding}`, {
17
17
  method: 'GET',
18
18
  });
19
19
  if (!response.ok) {
@@ -25,7 +25,56 @@ const downloadObject = (api, query) => __awaiter(void 0, void 0, void 0, functio
25
25
  return response.body;
26
26
  });
27
27
  exports.downloadObject = downloadObject;
28
+ const createAsyncDownload = (api, cid) => __awaiter(void 0, void 0, void 0, function* () {
29
+ const response = yield api.sendDownloadRequest(`/downloads/async/${cid}`, {
30
+ method: 'POST',
31
+ });
32
+ if (!response.ok) {
33
+ throw new Error(`Failed to create async download: ${response.statusText}`);
34
+ }
35
+ return response.json();
36
+ });
37
+ exports.createAsyncDownload = createAsyncDownload;
38
+ const getAsyncDownload = (api, downloadId) => __awaiter(void 0, void 0, void 0, function* () {
39
+ const response = yield api.sendDownloadRequest(`/downloads/async/${downloadId}`, {
40
+ method: 'GET',
41
+ });
42
+ if (!response.ok) {
43
+ throw new Error(`Failed to get async download: ${response.statusText}`);
44
+ }
45
+ return response.json();
46
+ });
47
+ exports.getAsyncDownload = getAsyncDownload;
48
+ const getAsyncDownloads = (api) => __awaiter(void 0, void 0, void 0, function* () {
49
+ const response = yield api.sendDownloadRequest('/downloads/async/@me', {
50
+ method: 'GET',
51
+ });
52
+ if (!response.ok) {
53
+ throw new Error(`Failed to get async downloads: ${response.statusText}`);
54
+ }
55
+ return response.json();
56
+ });
57
+ exports.getAsyncDownloads = getAsyncDownloads;
58
+ const dismissAsyncDownload = (api, downloadId) => __awaiter(void 0, void 0, void 0, function* () {
59
+ const response = yield api.sendDownloadRequest(`/downloads/async/${downloadId}/dismiss`, {
60
+ method: 'POST',
61
+ });
62
+ if (!response.ok) {
63
+ throw new Error(`Failed to dismiss async download: ${response.statusText}`);
64
+ }
65
+ });
66
+ exports.dismissAsyncDownload = dismissAsyncDownload;
28
67
  const publicDownloadUrl = (api, cid) => {
29
68
  return `${api.downloadBaseUrl}/objects/${cid}/public`;
30
69
  };
31
70
  exports.publicDownloadUrl = publicDownloadUrl;
71
+ const downloadStatus = (api, cid) => __awaiter(void 0, void 0, void 0, function* () {
72
+ const response = yield api.sendDownloadRequest(`/downloads/async/${cid}/status`, {
73
+ method: 'GET',
74
+ });
75
+ if (!response.ok) {
76
+ throw new Error(`Failed to get download status: ${response.statusText}`);
77
+ }
78
+ return response.json();
79
+ });
80
+ exports.downloadStatus = downloadStatus;
@@ -67,6 +67,13 @@ export declare const apiCalls: {
67
67
  cid: string;
68
68
  ignoreBackendEncoding?: boolean;
69
69
  }>) => Promise<ReadableStream<Uint8Array>>;
70
+ createAsyncDownload: (api: import("..").AutoDriveApiHandler, cid: string) => Promise<import("../models/asyncDownloads").AsyncDownload>;
71
+ getAsyncDownload: (api: import("..").AutoDriveApiHandler, downloadId: string) => Promise<import("../models/asyncDownloads").AsyncDownload>;
72
+ getAsyncDownloads: (api: import("..").AutoDriveApiHandler) => Promise<import("../models/asyncDownloads").AsyncDownload[]>;
73
+ dismissAsyncDownload: (api: import("..").AutoDriveApiHandler, downloadId: string) => Promise<void>;
70
74
  publicDownloadUrl: (api: import("..").AutoDriveApiHandler, cid: string) => string;
75
+ downloadStatus: (api: import("..").AutoDriveApiHandler, cid: string) => Promise<{
76
+ status: import("../models/asyncDownloads").DownloadStatus;
77
+ }>;
71
78
  };
72
79
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/calls/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ;kBAMshB,qCAA2B,EAAC;;;MAAkE;0BAAqiC,qCAA2B,EAAC;;MAAgD;oBAAo7B,qCAA2B,EAAC;;MAAgD;oBAAy6B,qCAA2B,EAAC;;MAAgD;;;uBAAxgG,qCAA2B,EAAC;gBAAkG,CAAC;;;MAA8E;yBAA4iC,qCAA2B,EAAC;;qBAA2G,CAAC;MAAsB;yCAA+1C,qCAA2B,EAAC;;;gBAAkK,CAAC;;;MAAyE;sBAAm1C,qCAA2B,EAAC;;;;MAAuH;qBAA6qC,qCAA2B,EAAC;;MAA4D;eAAz7L,qCAA2B,EAAC;;MAA8C;sBAA89B,qCAA2B,EAAC,+CAA4B;wBAA0X,qCAA2B,EAAC;;;MAAgE;iBAAg8B,qCAA2B,EAAC,+CAA4B;gBAA88B,qCAA2B,EAAC;;MAAgD;uBAAo1B,qCAA2B,EAAC;;MAAgD;4BAAi+B,qCAA2B,EAAC;;MAAgD;sBAAq+B,qCAA2B,EAAC;;MAAgD;wBAAggC,qCAA2B,EAAC;;MAAgD;YAA+jB,qCAAwB;qBARzuR,qCAEZ,EAAE;;6BAIX,CAAD;MAAY;wBAEggB,qCAAwB,EAAC,WAAY;CADjjB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/calls/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ;kBAMshB,qCAA2B,EAAC;;;MAAkE;0BAAqiC,qCAA2B,EAAC;;MAAgD;oBAAo7B,qCAA2B,EAAC;;MAAgD;oBAAy6B,qCAA2B,EAAC;;MAAgD;;;uBAAxgG,qCAA2B,EAAC;gBAAkG,CAAC;;;MAA8E;yBAA4iC,qCAA2B,EAAC;;qBAA2G,CAAC;MAAsB;yCAA+1C,qCAA2B,EAAC;;;gBAAkK,CAAC;;;MAAyE;sBAAm1C,qCAA2B,EAAC;;;;MAAuH;qBAA6qC,qCAA2B,EAAC;;MAA4D;eAAz7L,qCAA2B,EAAC;;MAA8C;sBAA89B,qCAA2B,EAAC,+CAA4B;wBAA0X,qCAA2B,EAAC;;;MAAgE;iBAAg8B,qCAA2B,EAAC,+CAA4B;gBAA88B,qCAA2B,EAAC;;MAAgD;uBAAo1B,qCAA2B,EAAC;;MAAgD;4BAAi+B,qCAA2B,EAAC;;MAAgD;sBAAq+B,qCAA2B,EAAC;;MAAgD;wBAAggC,qCAA2B,EAAC;;MAAgD;YAA+jB,qCAAwB;qBAJrvR,qCAEP,EAAC;;6BAEiD,CAAC;MAAY;0BAAohB,qCAA2B,EAAC,WAAc;uBAAgV,qCAA2B,EAAC,kBAAqB;wBAAoV,qCAAwB;2BAAgV,qCAA2B,EAAC,kBAAqB;wBAA6R,qCAAwB,EAAC,WAAY;qBAA+G,qCAA2B,EAAC,WAAc;;;CADzsE,CAAA"}
@@ -0,0 +1,24 @@
1
+ export declare enum AsyncDownloadStatus {
2
+ Pending = "pending",
3
+ Downloading = "downloading",
4
+ Completed = "completed",
5
+ Failed = "failed",
6
+ Dismissed = "dismissed"
7
+ }
8
+ export interface AsyncDownload {
9
+ id: string;
10
+ oauthProvider: string;
11
+ oauthUserId: string;
12
+ cid: string;
13
+ status: AsyncDownloadStatus;
14
+ errorMessage?: string | null | undefined;
15
+ fileSize?: string | null | undefined;
16
+ downloadedBytes?: string | null | undefined;
17
+ createdAt: Date;
18
+ updatedAt: Date;
19
+ }
20
+ export declare enum DownloadStatus {
21
+ Cached = "cached",
22
+ NotCached = "not-cached"
23
+ }
24
+ //# sourceMappingURL=asyncDownloads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncDownloads.d.ts","sourceRoot":"","sources":["../../../src/api/models/asyncDownloads.ts"],"names":[],"mappings":"AAAA,oBAAY,mBAAmB;IAC7B,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,mBAAmB,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC3C,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,oBAAY,cAAc;IACxB,MAAM,WAAW;IACjB,SAAS,eAAe;CACzB"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DownloadStatus = exports.AsyncDownloadStatus = void 0;
4
+ var AsyncDownloadStatus;
5
+ (function (AsyncDownloadStatus) {
6
+ AsyncDownloadStatus["Pending"] = "pending";
7
+ AsyncDownloadStatus["Downloading"] = "downloading";
8
+ AsyncDownloadStatus["Completed"] = "completed";
9
+ AsyncDownloadStatus["Failed"] = "failed";
10
+ AsyncDownloadStatus["Dismissed"] = "dismissed";
11
+ })(AsyncDownloadStatus || (exports.AsyncDownloadStatus = AsyncDownloadStatus = {}));
12
+ var DownloadStatus;
13
+ (function (DownloadStatus) {
14
+ DownloadStatus["Cached"] = "cached";
15
+ DownloadStatus["NotCached"] = "not-cached";
16
+ })(DownloadStatus || (exports.DownloadStatus = DownloadStatus = {}));
@@ -1,4 +1,5 @@
1
1
  import { ObjectSummary } from './models';
2
+ import { AsyncDownload } from './models/asyncDownloads';
2
3
  import { PaginatedResult } from './models/common';
3
4
  import { GenericFile, GenericFileWithinFolder } from './models/file';
4
5
  import { SubscriptionInfo, UserInfo } from './models/user';
@@ -10,6 +11,13 @@ export interface AutoDriveApi extends AutoDriveApiHandler {
10
11
  * @returns {Promise<UserInfo>} A promise that resolves to the user info.
11
12
  */
12
13
  me: () => Promise<UserInfo>;
14
+ /**
15
+ * Checks if a file is cached.
16
+ *
17
+ * @param cid {string} - The CID of the file to check.
18
+ * @returns {Promise<boolean>} - A promise that resolves to true if the file is cached, false otherwise.
19
+ */
20
+ isFileCached: (cid: string) => Promise<boolean>;
13
21
  /**
14
22
  * Uploads a file to the server with optional encryption and compression.
15
23
  *
@@ -148,6 +156,33 @@ export interface AutoDriveApi extends AutoDriveApiHandler {
148
156
  * @returns {Promise<ObjectSummary[]>} - A promise that resolves to the list of files matching the search criteria.
149
157
  */
150
158
  searchByNameOrCID: (value: string) => Promise<ObjectSummary[]>;
159
+ /**
160
+ * Gets the async downloads for the current user.
161
+ *
162
+ * @returns {Promise<AsyncDownload[]>} - A promise that resolves to the list of async downloads.
163
+ */
164
+ getAsyncDownloads: () => Promise<AsyncDownload[]>;
165
+ /**
166
+ * Creates an async download for a file.
167
+ *
168
+ * @param cid {string} - The CID of the file to create an async download for.
169
+ * @returns {Promise<AsyncDownload>} - A promise that resolves to the async download.
170
+ */
171
+ createAsyncDownload: (cid: string) => Promise<AsyncDownload>;
172
+ /**
173
+ * Gets an async download by ID.
174
+ *
175
+ * @param downloadId {string} - The ID of the async download to get.
176
+ * @returns {Promise<AsyncDownload>} - A promise that resolves to the async download.
177
+ */
178
+ getAsyncDownload: (downloadId: string) => Promise<AsyncDownload>;
179
+ /**
180
+ * Dismisses an async download by ID.
181
+ *
182
+ * @param downloadId {string} - The ID of the async download to dismiss.
183
+ * @returns {Promise<void>} - A promise that resolves when the async download is dismissed.
184
+ */
185
+ dismissAsyncDownload: (downloadId: string) => Promise<void>;
151
186
  }
152
187
  export interface AutoDriveApiHandler {
153
188
  sendAPIRequest: (relativeUrl: string, request: Partial<Request>, body?: BodyInit) => Promise<Response>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wrappers.d.ts","sourceRoot":"","sources":["../../src/api/wrappers.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAqB,MAAM,SAAS,CAAA;AA6B9E,eAAO,MAAM,kBAAkB,GAAI,KAAK,mBAAmB,KAAG,YAkU7D,CAAA"}
1
+ {"version":3,"file":"wrappers.d.ts","sourceRoot":"","sources":["../../src/api/wrappers.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAqB,MAAM,SAAS,CAAA;AA6B9E,eAAO,MAAM,kBAAkB,GAAI,KAAK,mBAAmB,KAAG,YAwU7D,CAAA"}
@@ -27,6 +27,7 @@ const misc_1 = require("../utils/misc");
27
27
  const download_1 = require("./calls/download");
28
28
  const index_1 = require("./calls/index");
29
29
  const models_1 = require("./models");
30
+ const asyncDownloads_1 = require("./models/asyncDownloads");
30
31
  const folderTree_1 = require("./models/folderTree");
31
32
  const UPLOAD_FILE_CHUNK_SIZE = 1024 * 1024;
32
33
  const uploadFileChunks = (api, fileUploadId, asyncIterable, uploadChunkSize = UPLOAD_FILE_CHUNK_SIZE, onProgress) => {
@@ -281,6 +282,11 @@ const createApiInterface = (api) => {
281
282
  searchByNameOrCID,
282
283
  sendAPIRequest: api.sendAPIRequest,
283
284
  sendDownloadRequest: api.sendDownloadRequest,
285
+ getAsyncDownloads: () => index_1.apiCalls.getAsyncDownloads(api),
286
+ createAsyncDownload: (cid) => index_1.apiCalls.createAsyncDownload(api, cid),
287
+ getAsyncDownload: (downloadId) => index_1.apiCalls.getAsyncDownload(api, downloadId),
288
+ dismissAsyncDownload: (downloadId) => index_1.apiCalls.dismissAsyncDownload(api, downloadId),
289
+ isFileCached: (cid) => index_1.apiCalls.downloadStatus(api, cid).then((e) => e.status === asyncDownloads_1.DownloadStatus.Cached),
284
290
  baseUrl: api.baseUrl,
285
291
  downloadBaseUrl: api.downloadBaseUrl,
286
292
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@autonomys/auto-drive",
3
3
  "packageManager": "yarn@4.7.0",
4
- "version": "1.4.34",
4
+ "version": "1.4.35",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -42,9 +42,9 @@
42
42
  "typescript": "^5.8.3"
43
43
  },
44
44
  "dependencies": {
45
- "@autonomys/asynchronous": "^1.4.34",
46
- "@autonomys/auto-dag-data": "^1.4.34",
47
- "@autonomys/auto-utils": "^1.4.34",
45
+ "@autonomys/asynchronous": "^1.4.35",
46
+ "@autonomys/auto-dag-data": "^1.4.35",
47
+ "@autonomys/auto-utils": "^1.4.35",
48
48
  "blockstore-core": "^5.0.2",
49
49
  "jszip": "^3.10.1",
50
50
  "mime-types": "^3.0.1",
@@ -52,5 +52,5 @@
52
52
  "stream": "^0.0.3",
53
53
  "zod": "^3.24.2"
54
54
  },
55
- "gitHead": "c596f2c28c36b3058566fdee1de57d9d20bb0329"
55
+ "gitHead": "939cf33bc0da04b5d65d32d78177211a7350a197"
56
56
  }
@@ -1,4 +1,5 @@
1
1
  import { ArgsWithoutPagination } from '../../utils/types'
2
+ import { AsyncDownload, DownloadStatus } from '../models/asyncDownloads'
2
3
  import { AutoDriveApiHandler } from '../types'
3
4
 
4
5
  export const downloadObject = async (
@@ -8,7 +9,7 @@ export const downloadObject = async (
8
9
  const ignoreBackendEncoding = query.ignoreBackendEncoding ?? true
9
10
 
10
11
  const response = await api.sendDownloadRequest(
11
- `/objects/${query.cid}/download?ignoreEncoding=${ignoreBackendEncoding}`,
12
+ `/downloads/${query.cid}?ignoreEncoding=${ignoreBackendEncoding}`,
12
13
  {
13
14
  method: 'GET',
14
15
  },
@@ -25,6 +26,75 @@ export const downloadObject = async (
25
26
  return response.body
26
27
  }
27
28
 
29
+ export const createAsyncDownload = async (
30
+ api: AutoDriveApiHandler,
31
+ cid: string,
32
+ ): Promise<AsyncDownload> => {
33
+ const response = await api.sendDownloadRequest(`/downloads/async/${cid}`, {
34
+ method: 'POST',
35
+ })
36
+
37
+ if (!response.ok) {
38
+ throw new Error(`Failed to create async download: ${response.statusText}`)
39
+ }
40
+
41
+ return response.json() as Promise<AsyncDownload>
42
+ }
43
+
44
+ export const getAsyncDownload = async (
45
+ api: AutoDriveApiHandler,
46
+ downloadId: string,
47
+ ): Promise<AsyncDownload> => {
48
+ const response = await api.sendDownloadRequest(`/downloads/async/${downloadId}`, {
49
+ method: 'GET',
50
+ })
51
+
52
+ if (!response.ok) {
53
+ throw new Error(`Failed to get async download: ${response.statusText}`)
54
+ }
55
+
56
+ return response.json() as Promise<AsyncDownload>
57
+ }
58
+
59
+ export const getAsyncDownloads = async (api: AutoDriveApiHandler): Promise<AsyncDownload[]> => {
60
+ const response = await api.sendDownloadRequest('/downloads/async/@me', {
61
+ method: 'GET',
62
+ })
63
+
64
+ if (!response.ok) {
65
+ throw new Error(`Failed to get async downloads: ${response.statusText}`)
66
+ }
67
+
68
+ return response.json() as Promise<AsyncDownload[]>
69
+ }
70
+
71
+ export const dismissAsyncDownload = async (
72
+ api: AutoDriveApiHandler,
73
+ downloadId: string,
74
+ ): Promise<void> => {
75
+ const response = await api.sendDownloadRequest(`/downloads/async/${downloadId}/dismiss`, {
76
+ method: 'POST',
77
+ })
78
+
79
+ if (!response.ok) {
80
+ throw new Error(`Failed to dismiss async download: ${response.statusText}`)
81
+ }
82
+ }
28
83
  export const publicDownloadUrl = (api: AutoDriveApiHandler, cid: string): string => {
29
84
  return `${api.downloadBaseUrl}/objects/${cid}/public`
30
85
  }
86
+
87
+ export const downloadStatus = async (
88
+ api: AutoDriveApiHandler,
89
+ cid: string,
90
+ ): Promise<{ status: DownloadStatus }> => {
91
+ const response = await api.sendDownloadRequest(`/downloads/async/${cid}/status`, {
92
+ method: 'GET',
93
+ })
94
+
95
+ if (!response.ok) {
96
+ throw new Error(`Failed to get download status: ${response.statusText}`)
97
+ }
98
+
99
+ return response.json() as Promise<{ status: DownloadStatus }>
100
+ }
@@ -0,0 +1,25 @@
1
+ export enum AsyncDownloadStatus {
2
+ Pending = 'pending',
3
+ Downloading = 'downloading',
4
+ Completed = 'completed',
5
+ Failed = 'failed',
6
+ Dismissed = 'dismissed',
7
+ }
8
+
9
+ export interface AsyncDownload {
10
+ id: string
11
+ oauthProvider: string
12
+ oauthUserId: string
13
+ cid: string
14
+ status: AsyncDownloadStatus
15
+ errorMessage?: string | null | undefined
16
+ fileSize?: string | null | undefined
17
+ downloadedBytes?: string | null | undefined
18
+ createdAt: Date
19
+ updatedAt: Date
20
+ }
21
+
22
+ export enum DownloadStatus {
23
+ Cached = 'cached',
24
+ NotCached = 'not-cached',
25
+ }
package/src/api/types.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { ObjectSummary } from './models'
2
+ import { AsyncDownload } from './models/asyncDownloads'
2
3
  import { PaginatedResult } from './models/common'
3
4
  import { GenericFile, GenericFileWithinFolder } from './models/file'
4
5
  import { SubscriptionInfo, UserInfo } from './models/user'
@@ -12,6 +13,14 @@ export interface AutoDriveApi extends AutoDriveApiHandler {
12
13
  */
13
14
  me: () => Promise<UserInfo>
14
15
 
16
+ /**
17
+ * Checks if a file is cached.
18
+ *
19
+ * @param cid {string} - The CID of the file to check.
20
+ * @returns {Promise<boolean>} - A promise that resolves to true if the file is cached, false otherwise.
21
+ */
22
+ isFileCached: (cid: string) => Promise<boolean>
23
+
15
24
  /**
16
25
  * Uploads a file to the server with optional encryption and compression.
17
26
  *
@@ -168,6 +177,37 @@ export interface AutoDriveApi extends AutoDriveApiHandler {
168
177
  * @returns {Promise<ObjectSummary[]>} - A promise that resolves to the list of files matching the search criteria.
169
178
  */
170
179
  searchByNameOrCID: (value: string) => Promise<ObjectSummary[]>
180
+
181
+ /**
182
+ * Gets the async downloads for the current user.
183
+ *
184
+ * @returns {Promise<AsyncDownload[]>} - A promise that resolves to the list of async downloads.
185
+ */
186
+ getAsyncDownloads: () => Promise<AsyncDownload[]>
187
+
188
+ /**
189
+ * Creates an async download for a file.
190
+ *
191
+ * @param cid {string} - The CID of the file to create an async download for.
192
+ * @returns {Promise<AsyncDownload>} - A promise that resolves to the async download.
193
+ */
194
+ createAsyncDownload: (cid: string) => Promise<AsyncDownload>
195
+
196
+ /**
197
+ * Gets an async download by ID.
198
+ *
199
+ * @param downloadId {string} - The ID of the async download to get.
200
+ * @returns {Promise<AsyncDownload>} - A promise that resolves to the async download.
201
+ */
202
+ getAsyncDownload: (downloadId: string) => Promise<AsyncDownload>
203
+
204
+ /**
205
+ * Dismisses an async download by ID.
206
+ *
207
+ * @param downloadId {string} - The ID of the async download to dismiss.
208
+ * @returns {Promise<void>} - A promise that resolves when the async download is dismissed.
209
+ */
210
+ dismissAsyncDownload: (downloadId: string) => Promise<void>
171
211
  }
172
212
 
173
213
  export interface AutoDriveApiHandler {
@@ -10,6 +10,7 @@ import { progressToPercentage } from '../utils/misc'
10
10
  import { publicDownloadUrl } from './calls/download'
11
11
  import { apiCalls } from './calls/index'
12
12
  import { ObjectSummary, Scope } from './models'
13
+ import { DownloadStatus } from './models/asyncDownloads'
13
14
  import { PaginatedResult } from './models/common'
14
15
  import { GenericFile, GenericFileWithinFolder } from './models/file'
15
16
  import { constructFromInput, constructZipBlobFromTreeAndPaths } from './models/folderTree'
@@ -362,6 +363,12 @@ export const createApiInterface = (api: AutoDriveApiHandler): AutoDriveApi => {
362
363
  searchByNameOrCID,
363
364
  sendAPIRequest: api.sendAPIRequest,
364
365
  sendDownloadRequest: api.sendDownloadRequest,
366
+ getAsyncDownloads: () => apiCalls.getAsyncDownloads(api),
367
+ createAsyncDownload: (cid: string) => apiCalls.createAsyncDownload(api, cid),
368
+ getAsyncDownload: (downloadId: string) => apiCalls.getAsyncDownload(api, downloadId),
369
+ dismissAsyncDownload: (downloadId: string) => apiCalls.dismissAsyncDownload(api, downloadId),
370
+ isFileCached: (cid: string) =>
371
+ apiCalls.downloadStatus(api, cid).then((e) => e.status === DownloadStatus.Cached),
365
372
  baseUrl: api.baseUrl,
366
373
  downloadBaseUrl: api.downloadBaseUrl,
367
374
  }