Adding metadata support

This commit is contained in:
Fabian Stamm 2018-06-17 14:56:49 +02:00
parent 0db2a025e0
commit 9f8a60dba5
5 changed files with 34 additions and 14 deletions

5
index.d.ts vendored
View File

@ -7,6 +7,7 @@ export interface File {
time: string;
preview: string;
version: string;
meta: string;
}
export interface History {
file: File;
@ -27,9 +28,9 @@ export default class SecureFile {
test: true;
}>;
list(folder?: string): Promise<File[]>;
create(name: string, data: Buffer, type: "text" | "binary", folder?: string, preview?: Buffer): Promise<File>;
create(name: string, data: Buffer, type: "text" | "binary", folder?: string, preview?: Buffer, meta?: string): Promise<File>;
get(id: string, version?: string): Promise<Buffer>;
update(id: string, data: Buffer, preview?: Buffer): Promise<File>;
update(id: string, data: Buffer, preview?: Buffer, meta?: string): Promise<File>;
delete(id: string): Promise<boolean>;
history(id: string): Promise<History>;
}

View File

@ -157,7 +157,7 @@ var SecureFile = /** @class */ (function () {
return [4 /*yield*/, fetch(this.Server + endpoint + query_str, { method: method, body: body, headers: myHeaders })];
case 7:
res = _a.sent();
if (res.status === 418) { // JWT invalid
if (res.status === 418) {
this.JWT = undefined;
return [2 /*return*/, this.makeRequest(endpoint, method, query, body, jwt)];
}
@ -206,7 +206,7 @@ var SecureFile = /** @class */ (function () {
});
});
};
SecureFile.prototype.create = function (name, data, type, folder, preview) {
SecureFile.prototype.create = function (name, data, type, folder, preview, meta) {
return __awaiter(this, void 0, void 0, function () {
var params, res;
return __generator(this, function (_a) {
@ -219,6 +219,9 @@ var SecureFile = /** @class */ (function () {
if (folder) {
params.folder = folder;
}
if (meta) {
params.meta = meta;
}
return [4 /*yield*/, this.makeRequest("/files", "POST", params, data, this.jwt_enabled)];
case 1:
res = _a.sent();
@ -274,7 +277,7 @@ var SecureFile = /** @class */ (function () {
});
});
};
SecureFile.prototype.update = function (id, data, preview) {
SecureFile.prototype.update = function (id, data, preview, meta) {
return __awaiter(this, void 0, void 0, function () {
var put, res;
return __generator(this, function (_a) {
@ -283,6 +286,8 @@ var SecureFile = /** @class */ (function () {
put = {};
if (preview)
put.preview = preview;
if (meta)
put.meta = meta;
return [4 /*yield*/, this.makeRequest("/files/" + id, "PUT", put, data, this.jwt_enabled)];
case 1:
res = _a.sent();

View File

@ -10,6 +10,7 @@ export interface File {
time: string;
preview: string;
version: string;
meta: string;
}
export interface History {
@ -113,7 +114,7 @@ export default class SecureFile {
return await res.json();
}
async create(name: string, data: Buffer, type: "text" | "binary", folder?: string, preview?: Buffer): Promise<File> {
async create(name: string, data: Buffer, type: "text" | "binary", folder?: string, preview?: Buffer, meta?: string): Promise<File> {
let params: any = { type: type, name: name };
if (preview) {
params.preview = preview;
@ -121,6 +122,10 @@ export default class SecureFile {
if (folder) {
params.folder = folder;
}
if (meta) {
params.meta = meta;
}
let res = await this.makeRequest("/files", "POST", params, data, this.jwt_enabled)
statusParser(res);
return res.json();
@ -146,9 +151,10 @@ export default class SecureFile {
}
}
async update(id: string, data: Buffer, preview?: Buffer): Promise<File> {
async update(id: string, data: Buffer, preview?: Buffer, meta?: string): Promise<File> {
let put: any = {};
if (preview) put.preview = preview;
if (meta) put.meta = meta;
let res = await this.makeRequest("/files/" + id, "PUT", put, data, this.jwt_enabled);
statusParser(res);
return res.json();

12
test.js
View File

@ -42,6 +42,7 @@ var testname = "ouiavgbsop687463743";
var testdata = new buffer_1.Buffer("Ich bin ein Test");
var newTestData = new buffer_1.Buffer("neue test daten");
var testprev = new buffer_1.Buffer("Ich bin...");
var testmeta = "testaa";
var testfolder = "iabos";
var ftestid;
var e_testid;
@ -56,7 +57,7 @@ function test(sf) {
var res;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, sf.create(testname, testdata, "text", undefined, testprev)];
case 0: return [4 /*yield*/, sf.create(testname, testdata, "text", undefined, testprev, testmeta)];
case 1:
res = _a.sent();
chai_1.assert.ok(res, "Res is not set");
@ -94,7 +95,7 @@ function test(sf) {
});
}); });
it("list", function () { return __awaiter(_this, void 0, void 0, function () {
var res;
var res, found;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, sf.list()];
@ -103,11 +104,14 @@ function test(sf) {
chai_1.assert.ok(res);
chai_1.assert.ok(Array.isArray(res), "Is not from type Array");
chai_1.assert.ok(res.length > 0, "No elements returned");
found = false;
res.forEach(function (e) {
if (e._id === testid) {
chai_1.assert.ok(true, "Element not in List");
found = true;
chai_1.assert.equal(e.meta, testmeta, "Meta data dows not fit the expected value!");
}
});
chai_1.assert.ok(found, "Element not in List");
return [2 /*return*/];
}
});
@ -116,7 +120,7 @@ function test(sf) {
var res, res2;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, sf.update(testid, newTestData)];
case 0: return [4 /*yield*/, sf.update(testid, newTestData, undefined, testmeta + "2")];
case 1:
res = _a.sent();
chai_1.assert.ok(res, "No data returned");

10
test.ts
View File

@ -7,6 +7,7 @@ const testname = "ouiavgbsop687463743"
const testdata = new Buffer("Ich bin ein Test");
const newTestData = new Buffer("neue test daten");
const testprev = new Buffer("Ich bin...");
const testmeta = "testaa";
const testfolder = "iabos";
let ftestid;
@ -22,7 +23,7 @@ function test(sf: SecureFile) {
let testver2: string;
it("create", async () => {
let res = await sf.create(testname, testdata, "text", undefined, testprev)
let res = await sf.create(testname, testdata, "text", undefined, testprev, testmeta)
assert.ok(res, "Res is not set");
assert.ok(res._id, "Res has not _id");
testid = res._id;
@ -46,15 +47,18 @@ function test(sf: SecureFile) {
assert.ok(res);
assert.ok(Array.isArray(res), "Is not from type Array");
assert.ok(res.length > 0, "No elements returned")
let found = false;
res.forEach(e => {
if (e._id === testid) {
assert.ok(true, "Element not in List")
found = true;
assert.equal(e.meta, testmeta, "Meta data dows not fit the expected value!")
}
})
assert.ok(found, "Element not in List")
})
it("update", async () => {
let res = await sf.update(testid, newTestData);
let res = await sf.update(testid, newTestData, undefined, testmeta + "2");
assert.ok(res, "No data returned");
assert.ok(res._id, "_id missing");
assert.notEqual(res.version, testver, "No new version was created")