@jesusacd/mediafire 1.0.0 → 1.2.0
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.
- package/README.md +306 -123
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +16 -0
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/files.d.ts +143 -0
- package/dist/modules/files.d.ts.map +1 -1
- package/dist/modules/files.js +241 -0
- package/dist/modules/files.js.map +1 -1
- package/dist/modules/folders.d.ts +118 -0
- package/dist/modules/folders.d.ts.map +1 -1
- package/dist/modules/folders.js +198 -0
- package/dist/modules/folders.js.map +1 -1
- package/dist/modules/upload.d.ts +115 -0
- package/dist/modules/upload.d.ts.map +1 -0
- package/dist/modules/upload.js +276 -0
- package/dist/modules/upload.js.map +1 -0
- package/package.json +1 -1
package/dist/modules/folders.js
CHANGED
|
@@ -124,6 +124,204 @@ class FoldersModule {
|
|
|
124
124
|
const content = await this.getContent(folderKey, { ...options, contentType: 'folders' });
|
|
125
125
|
return content.items.filter((item) => item.isFolder);
|
|
126
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Get folder information
|
|
129
|
+
*
|
|
130
|
+
* @param folderKey - Folder key
|
|
131
|
+
* @returns Folder info
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* const info = await client.folders.getInfo('abc123');
|
|
136
|
+
* console.log(`Folder: ${info.name}`);
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
async getInfo(folderKey) {
|
|
140
|
+
const session = this.getSession();
|
|
141
|
+
if (!session) {
|
|
142
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
143
|
+
}
|
|
144
|
+
const response = await (0, api_1.apiCall)('folder/get_info', {
|
|
145
|
+
folder_key: folderKey
|
|
146
|
+
}, session);
|
|
147
|
+
const info = response.folder_info;
|
|
148
|
+
if (!info) {
|
|
149
|
+
throw new Error(`Folder not found: ${folderKey}`);
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
folderKey: info.folderkey,
|
|
153
|
+
name: info.name,
|
|
154
|
+
description: info.description,
|
|
155
|
+
created: info.created,
|
|
156
|
+
privacy: info.privacy || 'private',
|
|
157
|
+
fileCount: parseInt(info.file_count || '0', 10),
|
|
158
|
+
folderCount: parseInt(info.folder_count || '0', 10),
|
|
159
|
+
totalSize: parseInt(info.total_size || '0', 10)
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Create a new folder
|
|
164
|
+
*
|
|
165
|
+
* @param name - Folder name
|
|
166
|
+
* @param parentKey - Parent folder key (default: root)
|
|
167
|
+
* @param options - Create options
|
|
168
|
+
* @returns Created folder info
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* const folder = await client.folders.create('My New Folder');
|
|
173
|
+
* console.log(`Created: ${folder.folderKey}`);
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
async create(name, parentKey, options) {
|
|
177
|
+
const session = this.getSession();
|
|
178
|
+
if (!session) {
|
|
179
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
180
|
+
}
|
|
181
|
+
const response = await (0, api_1.apiCall)('folder/create', {
|
|
182
|
+
foldername: name,
|
|
183
|
+
parent_key: parentKey || 'myfiles',
|
|
184
|
+
action_on_duplicate: options?.actionOnDuplicate || 'keep'
|
|
185
|
+
}, session);
|
|
186
|
+
return {
|
|
187
|
+
folderKey: response.folder_key || response.folderkey || '',
|
|
188
|
+
name: response.name || name
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Delete a folder (move to trash)
|
|
193
|
+
*
|
|
194
|
+
* @param folderKey - Folder key (or comma-separated list)
|
|
195
|
+
* @returns True if successful
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```typescript
|
|
199
|
+
* await client.folders.delete('abc123');
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
async delete(folderKey) {
|
|
203
|
+
const session = this.getSession();
|
|
204
|
+
if (!session) {
|
|
205
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
206
|
+
}
|
|
207
|
+
await (0, api_1.apiCall)('folder/delete', {
|
|
208
|
+
folder_key: folderKey
|
|
209
|
+
}, session);
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Move a folder to another location
|
|
214
|
+
*
|
|
215
|
+
* @param folderKey - Folder key (or comma-separated list)
|
|
216
|
+
* @param destFolderKey - Destination folder key (default: root)
|
|
217
|
+
* @returns True if successful
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* ```typescript
|
|
221
|
+
* await client.folders.move('abc123', 'destFolder');
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
async move(folderKey, destFolderKey) {
|
|
225
|
+
const session = this.getSession();
|
|
226
|
+
if (!session) {
|
|
227
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
228
|
+
}
|
|
229
|
+
await (0, api_1.apiCall)('folder/move', {
|
|
230
|
+
folder_key_src: folderKey,
|
|
231
|
+
folder_key_dst: destFolderKey || 'myfiles'
|
|
232
|
+
}, session);
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Copy a folder to another location
|
|
237
|
+
*
|
|
238
|
+
* @param folderKey - Folder key
|
|
239
|
+
* @param destFolderKey - Destination folder key (default: root)
|
|
240
|
+
* @returns New folder key
|
|
241
|
+
*
|
|
242
|
+
* @example
|
|
243
|
+
* ```typescript
|
|
244
|
+
* const newKey = await client.folders.copy('abc123', 'destFolder');
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
async copy(folderKey, destFolderKey) {
|
|
248
|
+
const session = this.getSession();
|
|
249
|
+
if (!session) {
|
|
250
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
251
|
+
}
|
|
252
|
+
const response = await (0, api_1.apiCall)('folder/copy', {
|
|
253
|
+
folder_key_src: folderKey,
|
|
254
|
+
folder_key_dst: destFolderKey || 'myfiles'
|
|
255
|
+
}, session);
|
|
256
|
+
return response.new_folderkeys?.[0] || '';
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Rename a folder
|
|
260
|
+
*
|
|
261
|
+
* @param folderKey - Folder key
|
|
262
|
+
* @param newName - New folder name
|
|
263
|
+
* @returns True if successful
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* ```typescript
|
|
267
|
+
* await client.folders.rename('abc123', 'New Name');
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
async rename(folderKey, newName) {
|
|
271
|
+
const session = this.getSession();
|
|
272
|
+
if (!session) {
|
|
273
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
274
|
+
}
|
|
275
|
+
await (0, api_1.apiCall)('folder/update', {
|
|
276
|
+
folder_key: folderKey,
|
|
277
|
+
foldername: newName
|
|
278
|
+
}, session);
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Set folder privacy
|
|
283
|
+
*
|
|
284
|
+
* @param folderKey - Folder key
|
|
285
|
+
* @param privacy - Privacy setting: 'public' or 'private'
|
|
286
|
+
* @returns True if successful
|
|
287
|
+
*
|
|
288
|
+
* @example
|
|
289
|
+
* ```typescript
|
|
290
|
+
* await client.folders.setPrivacy('abc123', 'public');
|
|
291
|
+
* ```
|
|
292
|
+
*/
|
|
293
|
+
async setPrivacy(folderKey, privacy) {
|
|
294
|
+
const session = this.getSession();
|
|
295
|
+
if (!session) {
|
|
296
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
297
|
+
}
|
|
298
|
+
await (0, api_1.apiCall)('folder/update', {
|
|
299
|
+
folder_key: folderKey,
|
|
300
|
+
privacy: privacy
|
|
301
|
+
}, session);
|
|
302
|
+
return true;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Permanently delete a folder (cannot be recovered)
|
|
306
|
+
*
|
|
307
|
+
* @param folderKey - Folder key (or comma-separated list)
|
|
308
|
+
* @returns True if successful
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```typescript
|
|
312
|
+
* await client.folders.purge('abc123');
|
|
313
|
+
* ```
|
|
314
|
+
*/
|
|
315
|
+
async purge(folderKey) {
|
|
316
|
+
const session = this.getSession();
|
|
317
|
+
if (!session) {
|
|
318
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
319
|
+
}
|
|
320
|
+
await (0, api_1.apiCall)('folder/purge', {
|
|
321
|
+
folder_key: folderKey
|
|
322
|
+
}, session);
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
127
325
|
}
|
|
128
326
|
exports.FoldersModule = FoldersModule;
|
|
129
327
|
//# sourceMappingURL=folders.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folders.js","sourceRoot":"","sources":["../../src/modules/folders.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"folders.js","sourceRoot":"","sources":["../../src/modules/folders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { InternalSession } from '../api';
|
|
2
|
+
/**
|
|
3
|
+
* Upload result
|
|
4
|
+
*/
|
|
5
|
+
export interface UploadResult {
|
|
6
|
+
/** Quick key of uploaded file */
|
|
7
|
+
quickKey: string;
|
|
8
|
+
/** File name */
|
|
9
|
+
filename: string;
|
|
10
|
+
/** File size in bytes */
|
|
11
|
+
size: number;
|
|
12
|
+
/** Upload key (for polling) */
|
|
13
|
+
uploadKey?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Upload options
|
|
17
|
+
*/
|
|
18
|
+
export interface UploadOptions {
|
|
19
|
+
/** Destination folder key (default: root) */
|
|
20
|
+
folderKey?: string;
|
|
21
|
+
/** Action on duplicate: 'skip', 'keep', 'replace' */
|
|
22
|
+
actionOnDuplicate?: 'skip' | 'keep' | 'replace';
|
|
23
|
+
/** Path within folder */
|
|
24
|
+
path?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Upload module for file upload operations
|
|
28
|
+
*/
|
|
29
|
+
export declare class UploadModule {
|
|
30
|
+
private getSession;
|
|
31
|
+
constructor(getSession: () => InternalSession | null);
|
|
32
|
+
/**
|
|
33
|
+
* Upload a file from disk
|
|
34
|
+
*
|
|
35
|
+
* @param filePath - Path to the file to upload
|
|
36
|
+
* @param options - Upload options
|
|
37
|
+
* @returns Upload result with quick key
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const result = await client.upload.file('C:/path/to/file.pdf');
|
|
42
|
+
* console.log(`Uploaded: ${result.quickKey}`);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
file(filePath: string, options?: UploadOptions): Promise<UploadResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Upload a file from buffer
|
|
48
|
+
*
|
|
49
|
+
* @param buffer - File content as buffer
|
|
50
|
+
* @param filename - File name with extension
|
|
51
|
+
* @param options - Upload options
|
|
52
|
+
* @returns Upload result with quick key
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const buffer = Buffer.from('Hello World');
|
|
57
|
+
* const result = await client.upload.buffer(buffer, 'hello.txt');
|
|
58
|
+
* console.log(`Uploaded: ${result.quickKey}`);
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
buffer(buffer: Buffer, filename: string, options?: UploadOptions & {
|
|
62
|
+
hash?: string;
|
|
63
|
+
}): Promise<UploadResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Poll upload status until complete
|
|
66
|
+
*
|
|
67
|
+
* @param uploadKey - Upload key from simple upload
|
|
68
|
+
* @returns Upload result
|
|
69
|
+
*/
|
|
70
|
+
pollUpload(uploadKey: string, maxAttempts?: number): Promise<{
|
|
71
|
+
quickKey: string;
|
|
72
|
+
filename?: string;
|
|
73
|
+
size?: number;
|
|
74
|
+
}>;
|
|
75
|
+
/**
|
|
76
|
+
* Check if a file can be instant uploaded (already exists on MediaFire)
|
|
77
|
+
*
|
|
78
|
+
* @param hash - SHA256 hash of the file
|
|
79
|
+
* @param filename - File name
|
|
80
|
+
* @param size - File size in bytes
|
|
81
|
+
* @param folderKey - Destination folder key
|
|
82
|
+
* @returns Check result
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const check = await client.upload.check(hash, 'file.pdf', 1024);
|
|
87
|
+
* if (check.hashExists) {
|
|
88
|
+
* console.log('File can be instant uploaded!');
|
|
89
|
+
* }
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
check(hash: string, filename: string, size: number, folderKey?: string): Promise<{
|
|
93
|
+
hashExists: boolean;
|
|
94
|
+
inAccount: boolean;
|
|
95
|
+
inFolder: boolean;
|
|
96
|
+
duplicateQuickKey?: string;
|
|
97
|
+
}>;
|
|
98
|
+
/**
|
|
99
|
+
* Instant upload a file (if it already exists on MediaFire servers)
|
|
100
|
+
*
|
|
101
|
+
* @param hash - SHA256 hash of the file
|
|
102
|
+
* @param filename - File name
|
|
103
|
+
* @param size - File size in bytes
|
|
104
|
+
* @param folderKey - Destination folder key
|
|
105
|
+
* @returns Upload result
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* const result = await client.upload.instant(hash, 'file.pdf', 1024);
|
|
110
|
+
* console.log(`Instant uploaded: ${result.quickKey}`);
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
instant(hash: string, filename: string, size: number, folderKey?: string): Promise<UploadResult>;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=upload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/modules/upload.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAW,MAAM,QAAQ,CAAC;AAOlD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAChD,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI;IAE5D;;;;;;;;;;;;OAYG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAiBhF;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAa,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAwFtH;;;;;OAKG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,GAAE,MAAW,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA6C9H;;;;;;;;;;;;;;;;OAgBG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACrF,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;QAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IA4BF;;;;;;;;;;;;;;OAcG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CA4BvG"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.UploadModule = void 0;
|
|
40
|
+
/**
|
|
41
|
+
* Upload Module - File upload operations
|
|
42
|
+
*/
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const crypto = __importStar(require("crypto"));
|
|
46
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
47
|
+
const api_1 = require("../api");
|
|
48
|
+
const auth_1 = require("../auth");
|
|
49
|
+
const types_1 = require("../types");
|
|
50
|
+
const API_BASE = 'https://www.mediafire.com/api';
|
|
51
|
+
const DEFAULT_API_VERSION = '1.3';
|
|
52
|
+
/**
|
|
53
|
+
* Upload module for file upload operations
|
|
54
|
+
*/
|
|
55
|
+
class UploadModule {
|
|
56
|
+
constructor(getSession) {
|
|
57
|
+
this.getSession = getSession;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Upload a file from disk
|
|
61
|
+
*
|
|
62
|
+
* @param filePath - Path to the file to upload
|
|
63
|
+
* @param options - Upload options
|
|
64
|
+
* @returns Upload result with quick key
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const result = await client.upload.file('C:/path/to/file.pdf');
|
|
69
|
+
* console.log(`Uploaded: ${result.quickKey}`);
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
async file(filePath, options = {}) {
|
|
73
|
+
const session = this.getSession();
|
|
74
|
+
if (!session) {
|
|
75
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
76
|
+
}
|
|
77
|
+
// Read file
|
|
78
|
+
const fileBuffer = fs.readFileSync(filePath);
|
|
79
|
+
const filename = path.basename(filePath);
|
|
80
|
+
const fileHash = crypto.createHash('sha256').update(fileBuffer).digest('hex');
|
|
81
|
+
return this.buffer(fileBuffer, filename, {
|
|
82
|
+
...options,
|
|
83
|
+
hash: fileHash
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Upload a file from buffer
|
|
88
|
+
*
|
|
89
|
+
* @param buffer - File content as buffer
|
|
90
|
+
* @param filename - File name with extension
|
|
91
|
+
* @param options - Upload options
|
|
92
|
+
* @returns Upload result with quick key
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const buffer = Buffer.from('Hello World');
|
|
97
|
+
* const result = await client.upload.buffer(buffer, 'hello.txt');
|
|
98
|
+
* console.log(`Uploaded: ${result.quickKey}`);
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
async buffer(buffer, filename, options = {}) {
|
|
102
|
+
const session = this.getSession();
|
|
103
|
+
if (!session) {
|
|
104
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
105
|
+
}
|
|
106
|
+
const fileSize = buffer.length;
|
|
107
|
+
const fileHash = options.hash || crypto.createHash('sha256').update(buffer).digest('hex');
|
|
108
|
+
// Build upload params
|
|
109
|
+
const params = new URLSearchParams();
|
|
110
|
+
params.append('response_format', 'json');
|
|
111
|
+
params.append('session_token', session.sessionToken);
|
|
112
|
+
if (options.folderKey) {
|
|
113
|
+
params.append('folder_key', options.folderKey);
|
|
114
|
+
}
|
|
115
|
+
if (options.actionOnDuplicate) {
|
|
116
|
+
params.append('action_on_duplicate', options.actionOnDuplicate);
|
|
117
|
+
}
|
|
118
|
+
if (options.path) {
|
|
119
|
+
params.append('path', options.path);
|
|
120
|
+
}
|
|
121
|
+
// Sort params alphabetically (required for signature)
|
|
122
|
+
const sortedParams = new URLSearchParams([...params.entries()].sort());
|
|
123
|
+
// Generate signature
|
|
124
|
+
const uri = `/api/${DEFAULT_API_VERSION}/upload/simple.php`;
|
|
125
|
+
const query = sortedParams.toString();
|
|
126
|
+
const secretKeyMod = parseInt(session.secretKey, 10) % 256;
|
|
127
|
+
const signatureBase = `${secretKeyMod}${session.time}${uri}?${query}`;
|
|
128
|
+
const signature = crypto.createHash('md5').update(signatureBase).digest('hex');
|
|
129
|
+
sortedParams.append('signature', signature);
|
|
130
|
+
const uploadUrl = `${API_BASE}/${DEFAULT_API_VERSION}/upload/simple.php?${sortedParams.toString()}`;
|
|
131
|
+
// Upload file
|
|
132
|
+
const response = await (0, node_fetch_1.default)(uploadUrl, {
|
|
133
|
+
method: 'POST',
|
|
134
|
+
headers: {
|
|
135
|
+
'Content-Type': 'application/octet-stream',
|
|
136
|
+
'x-filename': encodeURIComponent(filename),
|
|
137
|
+
'x-filesize': String(fileSize),
|
|
138
|
+
'x-filehash': fileHash,
|
|
139
|
+
'User-Agent': 'MediaFire-SDK/1.0 (Node.js)'
|
|
140
|
+
},
|
|
141
|
+
body: buffer
|
|
142
|
+
});
|
|
143
|
+
const responseText = await response.text();
|
|
144
|
+
let data;
|
|
145
|
+
try {
|
|
146
|
+
data = JSON.parse(responseText);
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
throw new types_1.MediaFireError(`Invalid upload response: ${responseText}`);
|
|
150
|
+
}
|
|
151
|
+
if (data.response?.result !== 'Success') {
|
|
152
|
+
throw new types_1.MediaFireError(data.response?.message || 'Upload failed', data.response?.error, data);
|
|
153
|
+
}
|
|
154
|
+
// Handle secret key regeneration (same as apiCall)
|
|
155
|
+
if (data.response?.new_key === 'yes' && session) {
|
|
156
|
+
session.secretKey = (0, auth_1.regenerateSecretKey)(session.secretKey);
|
|
157
|
+
}
|
|
158
|
+
const uploadKey = data.response?.doupload?.key;
|
|
159
|
+
if (!uploadKey) {
|
|
160
|
+
throw new types_1.MediaFireError('No upload key received');
|
|
161
|
+
}
|
|
162
|
+
// Poll for completion
|
|
163
|
+
const result = await this.pollUpload(uploadKey);
|
|
164
|
+
return {
|
|
165
|
+
quickKey: result.quickKey,
|
|
166
|
+
filename: result.filename || filename,
|
|
167
|
+
size: result.size || fileSize,
|
|
168
|
+
uploadKey
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Poll upload status until complete
|
|
173
|
+
*
|
|
174
|
+
* @param uploadKey - Upload key from simple upload
|
|
175
|
+
* @returns Upload result
|
|
176
|
+
*/
|
|
177
|
+
async pollUpload(uploadKey, maxAttempts = 30) {
|
|
178
|
+
const session = this.getSession();
|
|
179
|
+
if (!session) {
|
|
180
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
181
|
+
}
|
|
182
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
183
|
+
const response = await (0, api_1.apiCall)('upload/poll_upload', {
|
|
184
|
+
key: uploadKey
|
|
185
|
+
}, session);
|
|
186
|
+
const status = response.doupload?.status;
|
|
187
|
+
// Check for errors
|
|
188
|
+
if (response.doupload?.fileerror) {
|
|
189
|
+
throw new types_1.MediaFireError(`Upload error: ${response.doupload.fileerror}`);
|
|
190
|
+
}
|
|
191
|
+
// Status 99 means complete
|
|
192
|
+
if (status === '99' && response.doupload?.quickkey) {
|
|
193
|
+
return {
|
|
194
|
+
quickKey: response.doupload.quickkey,
|
|
195
|
+
filename: response.doupload.filename,
|
|
196
|
+
size: response.doupload.size ? parseInt(response.doupload.size, 10) : undefined
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
// Wait before next poll
|
|
200
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
201
|
+
}
|
|
202
|
+
throw new types_1.MediaFireError('Upload timed out');
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Check if a file can be instant uploaded (already exists on MediaFire)
|
|
206
|
+
*
|
|
207
|
+
* @param hash - SHA256 hash of the file
|
|
208
|
+
* @param filename - File name
|
|
209
|
+
* @param size - File size in bytes
|
|
210
|
+
* @param folderKey - Destination folder key
|
|
211
|
+
* @returns Check result
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* ```typescript
|
|
215
|
+
* const check = await client.upload.check(hash, 'file.pdf', 1024);
|
|
216
|
+
* if (check.hashExists) {
|
|
217
|
+
* console.log('File can be instant uploaded!');
|
|
218
|
+
* }
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
async check(hash, filename, size, folderKey) {
|
|
222
|
+
const session = this.getSession();
|
|
223
|
+
if (!session) {
|
|
224
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
225
|
+
}
|
|
226
|
+
const response = await (0, api_1.apiCall)('upload/check', {
|
|
227
|
+
hash,
|
|
228
|
+
filename,
|
|
229
|
+
size,
|
|
230
|
+
folder_key: folderKey || 'myfiles'
|
|
231
|
+
}, session);
|
|
232
|
+
return {
|
|
233
|
+
hashExists: response.hash_exists === 'yes',
|
|
234
|
+
inAccount: response.in_account === 'yes',
|
|
235
|
+
inFolder: response.in_folder === 'yes',
|
|
236
|
+
duplicateQuickKey: response.duplicate_quickkey
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Instant upload a file (if it already exists on MediaFire servers)
|
|
241
|
+
*
|
|
242
|
+
* @param hash - SHA256 hash of the file
|
|
243
|
+
* @param filename - File name
|
|
244
|
+
* @param size - File size in bytes
|
|
245
|
+
* @param folderKey - Destination folder key
|
|
246
|
+
* @returns Upload result
|
|
247
|
+
*
|
|
248
|
+
* @example
|
|
249
|
+
* ```typescript
|
|
250
|
+
* const result = await client.upload.instant(hash, 'file.pdf', 1024);
|
|
251
|
+
* console.log(`Instant uploaded: ${result.quickKey}`);
|
|
252
|
+
* ```
|
|
253
|
+
*/
|
|
254
|
+
async instant(hash, filename, size, folderKey) {
|
|
255
|
+
const session = this.getSession();
|
|
256
|
+
if (!session) {
|
|
257
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
258
|
+
}
|
|
259
|
+
const response = await (0, api_1.apiCall)('upload/instant', {
|
|
260
|
+
hash,
|
|
261
|
+
filename,
|
|
262
|
+
size,
|
|
263
|
+
folder_key: folderKey || 'myfiles'
|
|
264
|
+
}, session);
|
|
265
|
+
if (!response.quickkey) {
|
|
266
|
+
throw new types_1.MediaFireError('Instant upload failed - file may not exist on servers');
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
quickKey: response.quickkey,
|
|
270
|
+
filename: response.filename || filename,
|
|
271
|
+
size
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
exports.UploadModule = UploadModule;
|
|
276
|
+
//# sourceMappingURL=upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/modules/upload.ts"],"names":[],"mappings":"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"}
|