aboutsummaryrefslogtreecommitdiff
path: root/resources/assets/javascripts/lib/jsonapi.ts
diff options
context:
space:
mode:
authorPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
committerPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
commit4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch)
tree5c07151ae61276d334e88f6309c30d439a85c12e /resources/assets/javascripts/lib/jsonapi.ts
parentda0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff)
parent97a188592c679890a25c37ab78463add76a52ff7 (diff)
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'resources/assets/javascripts/lib/jsonapi.ts')
-rw-r--r--resources/assets/javascripts/lib/jsonapi.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/resources/assets/javascripts/lib/jsonapi.ts b/resources/assets/javascripts/lib/jsonapi.ts
new file mode 100644
index 0000000..80176cc
--- /dev/null
+++ b/resources/assets/javascripts/lib/jsonapi.ts
@@ -0,0 +1,31 @@
+import AbstractAPI from './abstract-api.js';
+
+// Actual JSONAPI object
+class JSONAPI extends AbstractAPI
+{
+ constructor(version: number = 1) {
+ super(`jsonapi.php/v${version}`);
+ }
+
+ encodeData (data: any, method: string): any {
+ data = super.encodeData(data);
+
+ if (['DELETE', 'GET', 'HEAD'].includes(method)) {
+ return data;
+ }
+
+ if (Object.keys(data).length === 0) {
+ return null;
+ }
+
+ return JSON.stringify(data);
+ }
+
+ request (url: string, options: any = {}) {
+ options.contentType = 'application/vnd.api+json';
+ return super.request(url, options);
+ }
+}
+
+export default JSONAPI;
+export const jsonapi: JSONAPI = new JSONAPI();