Skip to content

Commit 498b8f4

Browse files
added multipart support for WOQL.post
Signed-off-by: NeelParihar <[email protected]>
1 parent f7c2b2d commit 498b8f4

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

lib/woqlClient.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ const ConnectionConfig = require('./connectionConfig')
77
const WOQL = require('./woql')
88
const WOQLQuery = require('./query/woqlBuilder')
99
const { default: axios } = require('axios')
10+
const FormData = require('form-data');
11+
const fs = require('fs');
1012

1113
/**
1214
* @license Apache Version 2
@@ -532,8 +534,25 @@ WOQLClient.prototype.query = function(woql, commitMsg, allWitnesses) {
532534
if (woql && woql.json && (!woql.containsUpdate() || commitMsg)) {
533535
let doql = woql.containsUpdate() ? this.generateCommitInfo(commitMsg) : {}
534536
doql.query = woql.json()
537+
538+
let postBody;
539+
540+
if(doql.query.resource.source.post) {
541+
const fileName = doql.query.resource.source.post.split('/').pop();
542+
543+
const formData = new FormData();
544+
formData.append('file', fs.createReadStream(doql.query.resource.source.post));
545+
doql.query.resource.source.post = fileName;
546+
formData.append('payload', Buffer.from(JSON.stringify(doql)), { filename: 'body.json', contentType: 'application/json' });
547+
this.customHeaders(formData.getHeaders());
548+
549+
postBody = formData;
550+
} else {
551+
postBody = doql;
552+
}
553+
535554
if (allWitnesses) doql.all_witnesses = true
536-
return this.dispatch(CONST.WOQL_QUERY, this.connectionConfig.queryURL(), doql)
555+
return this.dispatch(CONST.WOQL_QUERY, this.connectionConfig.queryURL(), postBody)
537556
}
538557
let errmsg = `WOQL query parameter error`
539558
if (woql && woql.json && woql.containsUpdate() && !commitMsg) {

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@
2121
"license": "Apache-2.0",
2222
"dependencies": {
2323
"axios": ">=0.25.0",
24+
"form-data": "^4.0.0",
2425
"node-forge": ">=1.0.0",
25-
"underscore":">=1.13.2"
26+
"underscore": ">=1.13.2"
2627
},
2728
"devDependencies": {
2829
"@babel/core": "^7.13.10",
@@ -82,7 +83,7 @@
8283
"homepage": "https://github.com/terminusdb/terminusdb-client#readme",
8384
"browser": {
8485
"http": false,
85-
"https":false,
86+
"https": false,
8687
"net": false,
8788
"path": false,
8889
"stream": false,

0 commit comments

Comments
 (0)