@shapediver/sdk.geometry-api-sdk-v2 1.9.0 → 1.10.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/dist/resources/ShapeDiverAnalyticsApi.d.ts +6 -1
- package/dist/resources/ShapeDiverAnalyticsApi.d.ts.map +1 -1
- package/dist/resources/ShapeDiverAnalyticsApi.js +49 -0
- package/dist/resources/ShapeDiverAnalyticsApi.js.map +1 -1
- package/dist/resources/ShapeDiverFileApi.d.ts.map +1 -1
- package/dist/resources/ShapeDiverFileApi.js +2 -9
- package/dist/resources/ShapeDiverFileApi.js.map +1 -1
- package/dist/resources/ShapeDiverUtilsApi.d.ts.map +1 -1
- package/dist/resources/ShapeDiverUtilsApi.js +3 -2
- package/dist/resources/ShapeDiverUtilsApi.js.map +1 -1
- package/dist/utils/utils.d.ts +2 -0
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +26 -0
- package/dist/utils/utils.js.map +1 -1
- package/package.json +2 -4
- package/src/resources/ShapeDiverAnalyticsApi.ts +86 -0
- package/src/resources/ShapeDiverFileApi.ts +3 -12
- package/src/resources/ShapeDiverUtilsApi.ts +8 -4
- package/src/utils/utils.ts +38 -0
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import { ShapeDiverRequestAnalyticsModel, ShapeDiverResponseDto } from "@shapediver/api.geometry-api-dto-v2";
|
|
1
|
+
import { ShapeDiverRequestAnalyticsCreditMetrics, ShapeDiverRequestAnalyticsModel, ShapeDiverResponseDto } from "@shapediver/api.geometry-api-dto-v2";
|
|
2
2
|
import { BaseResourceApi, ShapeDiverSdkApi } from "@shapediver/sdk.geometry-api-sdk-core";
|
|
3
3
|
export declare class ShapeDiverAnalyticsApi extends BaseResourceApi {
|
|
4
4
|
constructor(api: ShapeDiverSdkApi);
|
|
5
5
|
modelSessionStatistics(body: ShapeDiverRequestAnalyticsModel): Promise<ShapeDiverResponseDto>;
|
|
6
|
+
creditMetrics(body: ShapeDiverRequestAnalyticsCreditMetrics): Promise<ShapeDiverResponseDto>;
|
|
7
|
+
userCreditMetrics(timestamp: string): Promise<ShapeDiverResponseDto>;
|
|
8
|
+
organizationCreditMetrics(timestamp: string): Promise<ShapeDiverResponseDto>;
|
|
9
|
+
modelUserCreditMetrics(userId: string, timestamp: string): Promise<ShapeDiverResponseDto>;
|
|
10
|
+
modelOrganizationCreditMetrics(orgId: string, timestamp: string): Promise<ShapeDiverResponseDto>;
|
|
6
11
|
}
|
|
7
12
|
//# sourceMappingURL=ShapeDiverAnalyticsApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShapeDiverAnalyticsApi.d.ts","sourceRoot":"","sources":["../../src/resources/ShapeDiverAnalyticsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,qBAAqB,EACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAG/C,qBAAa,sBAAuB,SAAQ,eAAe;gBAC7C,GAAG,EAAE,gBAAgB;IAS3B,sBAAsB,CAC1B,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ShapeDiverAnalyticsApi.d.ts","sourceRoot":"","sources":["../../src/resources/ShapeDiverAnalyticsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uCAAuC,EACvC,+BAA+B,EAC/B,qBAAqB,EACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAG/C,qBAAa,sBAAuB,SAAQ,eAAe;gBAC7C,GAAG,EAAE,gBAAgB;IAS3B,sBAAsB,CAC1B,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,qBAAqB,CAAC;IAa3B,aAAa,CACjB,IAAI,EAAE,uCAAuC,GAC5C,OAAO,CAAC,qBAAqB,CAAC;IAa3B,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAepE,yBAAyB,CAC7B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC;IAe3B,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC;IAgB3B,8BAA8B,CAClC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC;CAclC"}
|
|
@@ -23,6 +23,55 @@ class ShapeDiverAnalyticsApi extends sdk_geometry_api_sdk_core_1.BaseResourceApi
|
|
|
23
23
|
}));
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
+
creditMetrics(body) {
|
|
27
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
return yield (0, utils_1.sendRequest)(() => __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
return (yield this.api.put(this.buildAnalyticsUri() + "/credit-metrics", body))[1];
|
|
30
|
+
}));
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
userCreditMetrics(timestamp) {
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
return yield (0, utils_1.sendRequest)(() => __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
return (yield this.api.get(this.buildAnalyticsUri() +
|
|
37
|
+
"/credit-metrics/timestamp/" +
|
|
38
|
+
timestamp +
|
|
39
|
+
"/user"))[1];
|
|
40
|
+
}));
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
organizationCreditMetrics(timestamp) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
return yield (0, utils_1.sendRequest)(() => __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
return (yield this.api.get(this.buildAnalyticsUri() +
|
|
47
|
+
"/credit-metrics/timestamp/" +
|
|
48
|
+
timestamp +
|
|
49
|
+
"/org"))[1];
|
|
50
|
+
}));
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
modelUserCreditMetrics(userId, timestamp) {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
return yield (0, utils_1.sendRequest)(() => __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
return (yield this.api.get(this.buildAnalyticsUri() +
|
|
57
|
+
"/credit-metrics/timestamp/" +
|
|
58
|
+
timestamp +
|
|
59
|
+
"/user/" +
|
|
60
|
+
userId))[1];
|
|
61
|
+
}));
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
modelOrganizationCreditMetrics(orgId, timestamp) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
return yield (0, utils_1.sendRequest)(() => __awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
return (yield this.api.get(this.buildAnalyticsUri() +
|
|
68
|
+
"/credit-metrics/timestamp/" +
|
|
69
|
+
timestamp +
|
|
70
|
+
"/org/" +
|
|
71
|
+
orgId))[1];
|
|
72
|
+
}));
|
|
73
|
+
});
|
|
74
|
+
}
|
|
26
75
|
}
|
|
27
76
|
exports.ShapeDiverAnalyticsApi = ShapeDiverAnalyticsApi;
|
|
28
77
|
//# sourceMappingURL=ShapeDiverAnalyticsApi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShapeDiverAnalyticsApi.js","sourceRoot":"","sources":["../../src/resources/ShapeDiverAnalyticsApi.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ShapeDiverAnalyticsApi.js","sourceRoot":"","sources":["../../src/resources/ShapeDiverAnalyticsApi.ts"],"names":[],"mappings":";;;;;;;;;;;;AAKA,qFAG+C;AAC/C,0CAA6C;AAE7C,MAAa,sBAAuB,SAAQ,2CAAe;IACzD,YAAY,GAAqB;QAC/B,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IAOK,sBAAsB,CAC1B,IAAqC;;YAErC,OAAO,MAAM,IAAA,mBAAW,EACtB,GAAS,EAAE;gBACT,OAAA,CACE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAChB,IAAI,CAAC,iBAAiB,EAAE,GAAG,gBAAgB,EAC3C,IAAI,CACL,CACF,CAAC,CAAC,CAAC,CAAA;cAAA,CACP,CAAC;QACJ,CAAC;KAAA;IAGK,aAAa,CACjB,IAA6C;;YAE7C,OAAO,MAAM,IAAA,mBAAW,EACtB,GAAS,EAAE;gBACT,OAAA,CACE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAChB,IAAI,CAAC,iBAAiB,EAAE,GAAG,iBAAiB,EAC5C,IAAI,CACL,CACF,CAAC,CAAC,CAAC,CAAA;cAAA,CACP,CAAC;QACJ,CAAC;KAAA;IAGK,iBAAiB,CAAC,SAAiB;;YACvC,OAAO,MAAM,IAAA,mBAAW,EACtB,GAAS,EAAE;gBACT,OAAA,CACE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAChB,IAAI,CAAC,iBAAiB,EAAE;oBACtB,4BAA4B;oBAC5B,SAAS;oBACT,OAAO,CACV,CACF,CAAC,CAAC,CAAC,CAAA;cAAA,CACP,CAAC;QACJ,CAAC;KAAA;IAGK,yBAAyB,CAC7B,SAAiB;;YAEjB,OAAO,MAAM,IAAA,mBAAW,EACtB,GAAS,EAAE;gBACT,OAAA,CACE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAChB,IAAI,CAAC,iBAAiB,EAAE;oBACtB,4BAA4B;oBAC5B,SAAS;oBACT,MAAM,CACT,CACF,CAAC,CAAC,CAAC,CAAA;cAAA,CACP,CAAC;QACJ,CAAC;KAAA;IAGK,sBAAsB,CAC1B,MAAc,EACd,SAAiB;;YAEjB,OAAO,MAAM,IAAA,mBAAW,EACtB,GAAS,EAAE;gBACT,OAAA,CACE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAChB,IAAI,CAAC,iBAAiB,EAAE;oBACtB,4BAA4B;oBAC5B,SAAS;oBACT,QAAQ;oBACR,MAAM,CACT,CACF,CAAC,CAAC,CAAC,CAAA;cAAA,CACP,CAAC;QACJ,CAAC;KAAA;IAGK,8BAA8B,CAClC,KAAa,EACb,SAAiB;;YAEjB,OAAO,MAAM,IAAA,mBAAW,EACtB,GAAS,EAAE;gBACT,OAAA,CACE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAChB,IAAI,CAAC,iBAAiB,EAAE;oBACtB,4BAA4B;oBAC5B,SAAS;oBACT,OAAO;oBACP,KAAK,CACR,CACF,CAAC,CAAC,CAAC,CAAA;cAAA,CACP,CAAC;QACJ,CAAC;KAAA;CACF;AA5GD,wDA4GC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShapeDiverFileApi.d.ts","sourceRoot":"","sources":["../../src/resources/ShapeDiverFileApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,gBAAgB,EAEjB,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"ShapeDiverFileApi.d.ts","sourceRoot":"","sources":["../../src/resources/ShapeDiverFileApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,gBAAgB,EAEjB,MAAM,uCAAuC,CAAC;AAG/C,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,iBAAkB,SAAQ,eAAe;gBACxC,GAAG,EAAE,gBAAgB;IAU3B,IAAI,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,CAAC;IAiB3B,IAAI,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,0BAA0B,CAAC;IAgChC,GAAG,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC;IAmBjB,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC;IAiB3B,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,qBAAqB,CAAC;CAWlC"}
|
|
@@ -12,7 +12,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.ShapeDiverFileApi = void 0;
|
|
13
13
|
const sdk_geometry_api_sdk_core_1 = require("@shapediver/sdk.geometry-api-sdk-core");
|
|
14
14
|
const utils_1 = require("../utils/utils");
|
|
15
|
-
const contentDisposition = require("content-disposition");
|
|
16
15
|
class ShapeDiverFileApi extends sdk_geometry_api_sdk_core_1.BaseResourceApi {
|
|
17
16
|
constructor(api) {
|
|
18
17
|
super(api);
|
|
@@ -33,14 +32,8 @@ class ShapeDiverFileApi extends sdk_geometry_api_sdk_core_1.BaseResourceApi {
|
|
|
33
32
|
};
|
|
34
33
|
const contentDispositionHeader = headers.get("Content-Disposition") ||
|
|
35
34
|
headers.get("content-disposition");
|
|
36
|
-
if (typeof contentDispositionHeader === "string")
|
|
37
|
-
|
|
38
|
-
res.filename = contentDisposition.parse(contentDispositionHeader).parameters.filename;
|
|
39
|
-
}
|
|
40
|
-
catch (_) {
|
|
41
|
-
res.filename = undefined;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
35
|
+
if (typeof contentDispositionHeader === "string")
|
|
36
|
+
res.filename = (0, utils_1.filenameFromContentDisposition)(contentDispositionHeader);
|
|
44
37
|
return res;
|
|
45
38
|
}));
|
|
46
39
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShapeDiverFileApi.js","sourceRoot":"","sources":["../../src/resources/ShapeDiverFileApi.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA,qFAI+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"ShapeDiverFileApi.js","sourceRoot":"","sources":["../../src/resources/ShapeDiverFileApi.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA,qFAI+C;AAC/C,0CAA6E;AAO7E,MAAa,iBAAkB,SAAQ,2CAAe;IACpD,YAAY,GAAqB;QAC/B,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IAQK,IAAI,CACR,SAAiB,EACjB,OAAe;;YAEf,OAAO,MAAM,IAAA,mBAAW,EACtB,GAAS,EAAE;gBACT,OAAA,CACE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAChB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,OAAO,OAAO,CAC1D,CACF,CAAC,CAAC,CAAC,CAAA;cAAA,CACP,CAAC;QACJ,CAAC;KAAA;IAQK,IAAI,CACR,SAAiB,EACjB,OAAe,EACf,MAAc;;YAEd,OAAO,MAAM,IAAA,mBAAW,EAAC,GAAS,EAAE;gBAClC,MAAM,OAAO,GAAG,CACd,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CACjB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,OAAO,IAAI,MAAM,EAAE,CAC/D,CACF,CAAC,CAAC,CAAC,CAAC;gBAEL,MAAM,GAAG,GAA+B;oBACtC,IAAI,EAAE,MAAM,CACV,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAC/D;iBACF,CAAC;gBAGF,MAAM,wBAAwB,GAC5B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;oBAClC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACrC,IAAI,OAAO,wBAAwB,KAAK,QAAQ;oBAC9C,GAAG,CAAC,QAAQ,GAAG,IAAA,sCAA8B,EAAC,wBAAwB,CAAC,CAAC;gBAE1E,OAAO,GAAG,CAAC;YACb,CAAC,CAAA,CAAC,CAAC;QACL,CAAC;KAAA;IASK,GAAG,CACP,SAAiB,EACjB,OAAe,EACf,MAAc;;YAEd,OAAO,MAAM,IAAA,mBAAW,EACtB,GAAS,EAAE;gBACT,OAAA,CACE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAChB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,OAAO,IAAI,MAAM,EAAE,EAC9D,EAAE,YAAY,EAAE,wDAA4B,CAAC,IAAI,EAAE,CACpD,CACF,CAAC,CAAC,CAAC,CAAA;cAAA,CACP,CAAC;QACJ,CAAC;KAAA;IASK,MAAM,CACV,SAAiB,EACjB,OAAe,EACf,MAAc;;YAEd,OAAO,MAAM,IAAA,mBAAW,EACtB,GAAS,EAAE;gBACT,OAAA,CACE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CACnB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,OAAO,IAAI,MAAM,EAAE,CAC/D,CACF,CAAC,CAAC,CAAC,CAAA;cAAA,CACP,CAAC;QACJ,CAAC;KAAA;IAQK,aAAa,CACjB,SAAiB,EACjB,IAAiC;;YAEjC,OAAO,MAAM,IAAA,mBAAW,EACtB,GAAS,EAAE;gBACT,OAAA,CACE,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CACjB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,cAAc,EAChD,IAAI,CACL,CACF,CAAC,CAAC,CAAC,CAAA;cAAA,CACP,CAAC;QACJ,CAAC;KAAA;CACF;AA7HD,8CA6HC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShapeDiverUtilsApi.d.ts","sourceRoot":"","sources":["../../src/resources/ShapeDiverUtilsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,8BAA8B,EAC9B,uBAAuB,EACvB,qBAAqB,EACrB,oCAAoC,EAGrC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,eAAe,EAEf,gBAAgB,EAChB,4BAA4B,EAC7B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ShapeDiverUtilsApi.d.ts","sourceRoot":"","sources":["../../src/resources/ShapeDiverUtilsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,8BAA8B,EAC9B,uBAAuB,EACvB,qBAAqB,EACrB,oCAAoC,EAGrC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,eAAe,EAEf,gBAAgB,EAChB,4BAA4B,EAC7B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQjD,KAAK,8BAA8B,CAAC,CAAC,SAAS,4BAA4B,IACxE,CAAC,SAAS,4BAA4B,CAAC,IAAI,GACvC,MAAM,GACN,CAAC,SAAS,4BAA4B,CAAC,IAAI,GACzC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACnB,CAAC,SAAS,4BAA4B,CAAC,IAAI,GACzC,WAAW,GACX,KAAK,CAAC;AAEhB,qBAAa,kBAAmB,SAAQ,eAAe;gBACzC,GAAG,EAAE,gBAAgB;IAa3B,MAAM,CACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAChD,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC;IAqBT,WAAW,CACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAChD,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,GAAG,CAAC;IAmBT,QAAQ,CAAC,CAAC,SAAS,4BAA4B,EACnD,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,GACd,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC;IAqB9D,6BAA6B,CACjC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,8BAA8B,EACpC,WAAW,SAAK,GACf,OAAO,CAAC,qBAAqB,CAAC;IA6B3B,sBAAsB,CAC1B,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,uBAAuB,EAC7B,WAAW,SAAK,GACf,OAAO,CAAC,qBAAqB,CAAC;mBA6BZ,0BAA0B;mBAyD1B,mBAAmB;IAuCxC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAchC,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAoBjC"}
|
|
@@ -12,7 +12,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.ShapeDiverUtilsApi = void 0;
|
|
13
13
|
const sdk_geometry_api_sdk_core_1 = require("@shapediver/sdk.geometry-api-sdk-core");
|
|
14
14
|
const utils_1 = require("../utils/utils");
|
|
15
|
-
const contentDisposition = require("content-disposition");
|
|
16
15
|
class ShapeDiverUtilsApi extends sdk_geometry_api_sdk_core_1.BaseResourceApi {
|
|
17
16
|
constructor(api) {
|
|
18
17
|
super(api);
|
|
@@ -22,7 +21,9 @@ class ShapeDiverUtilsApi extends sdk_geometry_api_sdk_core_1.BaseResourceApi {
|
|
|
22
21
|
return yield (0, utils_1.sendRequest)(() => __awaiter(this, void 0, void 0, function* () {
|
|
23
22
|
return this.api.put(url, data, {
|
|
24
23
|
contentType: contentType,
|
|
25
|
-
contentDisposition: filename
|
|
24
|
+
contentDisposition: filename
|
|
25
|
+
? (0, utils_1.contentDispositionFromFilename)(filename)
|
|
26
|
+
: undefined,
|
|
26
27
|
responseType: sdk_geometry_api_sdk_core_1.ShapeDiverSdkApiResponseType.JSON,
|
|
27
28
|
disableAuthorization: true,
|
|
28
29
|
disableCustomHeaders: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShapeDiverUtilsApi.js","sourceRoot":"","sources":["../../src/resources/ShapeDiverUtilsApi.ts"],"names":[],"mappings":";;;;;;;;;;;;AASA,qFAK+C;AAE/C,
|
|
1
|
+
{"version":3,"file":"ShapeDiverUtilsApi.js","sourceRoot":"","sources":["../../src/resources/ShapeDiverUtilsApi.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -7,4 +7,6 @@ export declare function isGBResponseError(e: any): e is ShapeDiverResponseError;
|
|
|
7
7
|
export declare function sendRequest<T>(call: () => Promise<T>): Promise<T>;
|
|
8
8
|
export declare function sleep(ms: number): Promise<void>;
|
|
9
9
|
export declare function encodeBase64(str: string): string;
|
|
10
|
+
export declare function contentDispositionFromFilename(filename: string): string;
|
|
11
|
+
export declare function filenameFromContentDisposition(contentDisposition: string): string | undefined;
|
|
10
12
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,sBAAsB,IAAI,0BAA0B,EAErD,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,wBAAgB,SAAS,CACvB,CAAC,EAAE,GAAG,GACL,CAAC,IAAI,eAAe,GAAG,0BAA0B,GAAG,uBAAuB,CAM7E;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,eAAe,CAM7D;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,0BAA0B,CAMxE;AAGD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,uBAAuB,CAMtE;AAMD,wBAAsB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAgCvE;AAGD,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAGD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhD"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,sBAAsB,IAAI,0BAA0B,EAErD,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,wBAAgB,SAAS,CACvB,CAAC,EAAE,GAAG,GACL,CAAC,IAAI,eAAe,GAAG,0BAA0B,GAAG,uBAAuB,CAM7E;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,eAAe,CAM7D;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,0BAA0B,CAMxE;AAGD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,uBAAuB,CAMtE;AAMD,wBAAsB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAgCvE;AAGD,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAGD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhD;AAGD,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASvE;AAMD,wBAAgB,8BAA8B,CAC5C,kBAAkB,EAAE,MAAM,GACzB,MAAM,GAAG,SAAS,CAkBpB"}
|
package/dist/utils/utils.js
CHANGED
|
@@ -16,6 +16,8 @@ exports.isGBResponseError = isGBResponseError;
|
|
|
16
16
|
exports.sendRequest = sendRequest;
|
|
17
17
|
exports.sleep = sleep;
|
|
18
18
|
exports.encodeBase64 = encodeBase64;
|
|
19
|
+
exports.contentDispositionFromFilename = contentDispositionFromFilename;
|
|
20
|
+
exports.filenameFromContentDisposition = filenameFromContentDisposition;
|
|
19
21
|
const sdk_geometry_api_sdk_core_1 = require("@shapediver/sdk.geometry-api-sdk-core");
|
|
20
22
|
const ShapeDiverErrors_1 = require("../ShapeDiverErrors");
|
|
21
23
|
function isGBError(e) {
|
|
@@ -80,4 +82,28 @@ function encodeBase64(str) {
|
|
|
80
82
|
return Buffer.from(str).toString("base64");
|
|
81
83
|
}
|
|
82
84
|
}
|
|
85
|
+
function contentDispositionFromFilename(filename) {
|
|
86
|
+
const asciiName = filename.replace(/[^\x00-\x7F]/g, "");
|
|
87
|
+
let header = `attachment; filename="${asciiName}"`;
|
|
88
|
+
if (filename.length !== asciiName.length) {
|
|
89
|
+
header += `; filename*=UTF-8''${encodeURIComponent(filename)}`;
|
|
90
|
+
}
|
|
91
|
+
return header;
|
|
92
|
+
}
|
|
93
|
+
function filenameFromContentDisposition(contentDisposition) {
|
|
94
|
+
var _a;
|
|
95
|
+
let filename, filenameStar;
|
|
96
|
+
const match = contentDisposition.match(/filename="([^"]+)"/);
|
|
97
|
+
if (match)
|
|
98
|
+
filename = match[1];
|
|
99
|
+
const matchStar = contentDisposition.match(/filename\*=([^\'\']+\'\')?(.+)/);
|
|
100
|
+
if (matchStar) {
|
|
101
|
+
const encoding = matchStar[1] ? matchStar[1] : "utf-8";
|
|
102
|
+
const encodedName = (_a = matchStar[2]) !== null && _a !== void 0 ? _a : matchStar[1];
|
|
103
|
+
if (encoding.toLowerCase().startsWith("utf-8")) {
|
|
104
|
+
filenameStar = decodeURIComponent(encodedName);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return filenameStar !== null && filenameStar !== void 0 ? filenameStar : filename;
|
|
108
|
+
}
|
|
83
109
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;;;;;;;;;;AASA,8BAQC;AAGD,4CAMC;AAGD,4CAMC;AAGD,8CAMC;AAMD,kCAgCC;AAGD,sBAEC;AAGD,oCAMC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shapediver/sdk.geometry-api-sdk-v2",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"description": "SDK to communicate with the Geometry API version 2",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"shapediver",
|
|
@@ -46,7 +46,6 @@
|
|
|
46
46
|
]
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@types/content-disposition": "~0.5.8",
|
|
50
49
|
"jest": "~29.7.0",
|
|
51
50
|
"lerna": "8.1.3",
|
|
52
51
|
"typescript": "~5.5.2",
|
|
@@ -56,7 +55,6 @@
|
|
|
56
55
|
},
|
|
57
56
|
"dependencies": {
|
|
58
57
|
"@shapediver/sdk.geometry-api-sdk-core": "~1.4.1",
|
|
59
|
-
"@shapediver/api.geometry-api-dto-v2": "~1.22.0"
|
|
60
|
-
"content-disposition": "~0.5.4"
|
|
58
|
+
"@shapediver/api.geometry-api-dto-v2": "~1.22.0"
|
|
61
59
|
}
|
|
62
60
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
ShapeDiverRequestAnalyticsCreditMetrics,
|
|
2
3
|
ShapeDiverRequestAnalyticsModel,
|
|
3
4
|
ShapeDiverResponseDto,
|
|
4
5
|
} from "@shapediver/api.geometry-api-dto-v2";
|
|
@@ -31,4 +32,89 @@ export class ShapeDiverAnalyticsApi extends BaseResourceApi {
|
|
|
31
32
|
)[1],
|
|
32
33
|
);
|
|
33
34
|
}
|
|
35
|
+
|
|
36
|
+
/** Get credit metrics. */
|
|
37
|
+
async creditMetrics(
|
|
38
|
+
body: ShapeDiverRequestAnalyticsCreditMetrics,
|
|
39
|
+
): Promise<ShapeDiverResponseDto> {
|
|
40
|
+
return await sendRequest(
|
|
41
|
+
async () =>
|
|
42
|
+
(
|
|
43
|
+
await this.api.put<ShapeDiverResponseDto>(
|
|
44
|
+
this.buildAnalyticsUri() + "/credit-metrics",
|
|
45
|
+
body,
|
|
46
|
+
)
|
|
47
|
+
)[1],
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Get credit metrics of all users active at timestamp. */
|
|
52
|
+
async userCreditMetrics(timestamp: string): Promise<ShapeDiverResponseDto> {
|
|
53
|
+
return await sendRequest(
|
|
54
|
+
async () =>
|
|
55
|
+
(
|
|
56
|
+
await this.api.get<ShapeDiverResponseDto>(
|
|
57
|
+
this.buildAnalyticsUri() +
|
|
58
|
+
"/credit-metrics/timestamp/" +
|
|
59
|
+
timestamp +
|
|
60
|
+
"/user",
|
|
61
|
+
)
|
|
62
|
+
)[1],
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Get credit metrics of all organizations with users active at timestamp. */
|
|
67
|
+
async organizationCreditMetrics(
|
|
68
|
+
timestamp: string,
|
|
69
|
+
): Promise<ShapeDiverResponseDto> {
|
|
70
|
+
return await sendRequest(
|
|
71
|
+
async () =>
|
|
72
|
+
(
|
|
73
|
+
await this.api.get<ShapeDiverResponseDto>(
|
|
74
|
+
this.buildAnalyticsUri() +
|
|
75
|
+
"/credit-metrics/timestamp/" +
|
|
76
|
+
timestamp +
|
|
77
|
+
"/org",
|
|
78
|
+
)
|
|
79
|
+
)[1],
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** Get model credit metrics of the user at timestamp. */
|
|
84
|
+
async modelUserCreditMetrics(
|
|
85
|
+
userId: string,
|
|
86
|
+
timestamp: string,
|
|
87
|
+
): Promise<ShapeDiverResponseDto> {
|
|
88
|
+
return await sendRequest(
|
|
89
|
+
async () =>
|
|
90
|
+
(
|
|
91
|
+
await this.api.get<ShapeDiverResponseDto>(
|
|
92
|
+
this.buildAnalyticsUri() +
|
|
93
|
+
"/credit-metrics/timestamp/" +
|
|
94
|
+
timestamp +
|
|
95
|
+
"/user/" +
|
|
96
|
+
userId,
|
|
97
|
+
)
|
|
98
|
+
)[1],
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** Get model credit metrics of the organization at timestamp. */
|
|
103
|
+
async modelOrganizationCreditMetrics(
|
|
104
|
+
orgId: string,
|
|
105
|
+
timestamp: string,
|
|
106
|
+
): Promise<ShapeDiverResponseDto> {
|
|
107
|
+
return await sendRequest(
|
|
108
|
+
async () =>
|
|
109
|
+
(
|
|
110
|
+
await this.api.get<ShapeDiverResponseDto>(
|
|
111
|
+
this.buildAnalyticsUri() +
|
|
112
|
+
"/credit-metrics/timestamp/" +
|
|
113
|
+
timestamp +
|
|
114
|
+
"/org/" +
|
|
115
|
+
orgId,
|
|
116
|
+
)
|
|
117
|
+
)[1],
|
|
118
|
+
);
|
|
119
|
+
}
|
|
34
120
|
}
|
|
@@ -7,9 +7,7 @@ import {
|
|
|
7
7
|
ShapeDiverSdkApi,
|
|
8
8
|
ShapeDiverSdkApiResponseType,
|
|
9
9
|
} from "@shapediver/sdk.geometry-api-sdk-core";
|
|
10
|
-
import { sendRequest } from "../utils/utils";
|
|
11
|
-
|
|
12
|
-
const contentDisposition = require("content-disposition");
|
|
10
|
+
import { filenameFromContentDisposition, sendRequest } from "../utils/utils";
|
|
13
11
|
|
|
14
12
|
export interface ShapeDiverResponseFileInfo {
|
|
15
13
|
filename?: string;
|
|
@@ -69,15 +67,8 @@ export class ShapeDiverFileApi extends BaseResourceApi {
|
|
|
69
67
|
const contentDispositionHeader =
|
|
70
68
|
headers.get("Content-Disposition") ||
|
|
71
69
|
headers.get("content-disposition");
|
|
72
|
-
if (typeof contentDispositionHeader === "string")
|
|
73
|
-
|
|
74
|
-
res.filename = contentDisposition.parse(
|
|
75
|
-
contentDispositionHeader,
|
|
76
|
-
).parameters.filename;
|
|
77
|
-
} catch (_) {
|
|
78
|
-
res.filename = undefined;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
70
|
+
if (typeof contentDispositionHeader === "string")
|
|
71
|
+
res.filename = filenameFromContentDisposition(contentDispositionHeader);
|
|
81
72
|
|
|
82
73
|
return res;
|
|
83
74
|
});
|
|
@@ -14,9 +14,11 @@ import {
|
|
|
14
14
|
ShapeDiverSdkApiResponseType,
|
|
15
15
|
} from "@shapediver/sdk.geometry-api-sdk-core";
|
|
16
16
|
import { ShapeDiverSdk } from "../ShapeDiverSdk";
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
import {
|
|
18
|
+
contentDispositionFromFilename,
|
|
19
|
+
sendRequest,
|
|
20
|
+
sleep,
|
|
21
|
+
} from "../utils/utils";
|
|
20
22
|
|
|
21
23
|
// TypeScript wrapper for a response type that depend on an input type
|
|
22
24
|
type ShapeDiverSdkUtilsDownloadType<T extends ShapeDiverSdkApiResponseType> =
|
|
@@ -51,7 +53,9 @@ export class ShapeDiverUtilsApi extends BaseResourceApi {
|
|
|
51
53
|
return await sendRequest(async () =>
|
|
52
54
|
this.api.put<any>(url, data, {
|
|
53
55
|
contentType: contentType,
|
|
54
|
-
contentDisposition: filename
|
|
56
|
+
contentDisposition: filename
|
|
57
|
+
? contentDispositionFromFilename(filename)
|
|
58
|
+
: undefined,
|
|
55
59
|
responseType: ShapeDiverSdkApiResponseType.JSON,
|
|
56
60
|
disableAuthorization: true,
|
|
57
61
|
disableCustomHeaders: true,
|
package/src/utils/utils.ts
CHANGED
|
@@ -95,3 +95,41 @@ export function encodeBase64(str: string): string {
|
|
|
95
95
|
return Buffer.from(str).toString("base64");
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
|
+
|
|
99
|
+
/** Set content headers according to RFC 5987 */
|
|
100
|
+
export function contentDispositionFromFilename(filename: string): string {
|
|
101
|
+
const asciiName = filename.replace(/[^\x00-\x7F]/g, "");
|
|
102
|
+
let header = `attachment; filename="${asciiName}"`;
|
|
103
|
+
|
|
104
|
+
if (filename.length !== asciiName.length) {
|
|
105
|
+
header += `; filename*=UTF-8''${encodeURIComponent(filename)}`;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return header;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Extract and return the filename from a content-disposition HTTP header. Decodes the filename*
|
|
113
|
+
* property if set.
|
|
114
|
+
*/
|
|
115
|
+
export function filenameFromContentDisposition(
|
|
116
|
+
contentDisposition: string,
|
|
117
|
+
): string | undefined {
|
|
118
|
+
let filename, filenameStar;
|
|
119
|
+
|
|
120
|
+
// Search for filename
|
|
121
|
+
const match = contentDisposition.match(/filename="([^"]+)"/);
|
|
122
|
+
if (match) filename = match[1];
|
|
123
|
+
|
|
124
|
+
// Search for filename*
|
|
125
|
+
const matchStar = contentDisposition.match(/filename\*=([^\'\']+\'\')?(.+)/);
|
|
126
|
+
if (matchStar) {
|
|
127
|
+
const encoding = matchStar[1] ? matchStar[1] : "utf-8";
|
|
128
|
+
const encodedName = matchStar[2] ?? matchStar[1];
|
|
129
|
+
if (encoding.toLowerCase().startsWith("utf-8")) {
|
|
130
|
+
filenameStar = decodeURIComponent(encodedName);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return filenameStar ?? filename;
|
|
135
|
+
}
|