const request = require('request'); const fs = require('fs'); var user = ""; var password = ""; var tenant = ""; var baseUrl = "https://api.yuuvis.io/" function createDocumentMetadata(doc_title, doc_fileName, doc_cid, doc_contentType) { return { "objects":[ { "properties": { "system:objectTypeId": { "value": "document" }, "Name": { "value": doc_title } }, "contentStreams": [{ "mimeType": doc_contentType, "fileName": doc_fileName, "cid": doc_cid }] } ] }; } function createMultiDocumentMetadata(doc_titles, doc_fileNames, doc_cids, doc_contentTypes){ var objects = [] for (var i = 0; i < doc_titles.length; i++){ objects[i] = { "properties": { "system:objectTypeId": { "value": "document" }, "Name": { "value": doc_titles[i] } }, "contentStreams": [{ "mimeType": doc_contentTypes[i], "fileName": doc_fileNames[i], "cid": doc_cids[i] }] } } return {"objects": objects} } function createImportFormdata(doc_title, doc_fileName, doc_cid, doc_contentType){ var formData = {} formData['data'] = { value: JSON.stringify(createDocumentMetadata(doc_title, doc_fileName, doc_cid, doc_contentType)), options: { contentType: 'application/json' } } formData[doc_cid]= { value: fs.createReadStream(doc_fileName), options: { contentType: doc_contentType, filename: doc_fileName } } return formData; } function createMultiImportFormdata(doc_titles, doc_fileNames, doc_cids, doc_contentTypes){ var formData = {} formData['data'] = { value: JSON.stringify(createMultiDocumentMetadata(doc_titles, doc_fileNames, doc_cids, doc_contentTypes)), options: { contentType: 'application/json' } } for(var i = 0; i < doc_cids.length; i++){ formData[doc_cids[i]] = { value: fs.createReadStream(doc_fileNames[i]), options: { contentType: doc_contentTypes[i], filename: doc_fileNames[i] } } } return formData; } function createImportRequest(doc_title, doc_fileName, doc_cid, doc_contentType) { return{ method: 'POST', uri: baseUrl + 'dms-core/objects/', headers: { 'Accept': 'application/json', 'X-ID-TENANT-NAME': tenant, 'Content-Type': 'multipart/form-data' }, auth: { user: user, pass: password }, formData: createImportFormdata(doc_title, doc_fileName, doc_cid, doc_contentType) } } function createMultiImportRequest(doc_titles, doc_fileNames, doc_cids, doc_contentTypes) { return{ method: 'POST', uri: baseUrl + 'dms-core/objects/', headers: { 'Accept': 'application/json', 'X-ID-TENANT-NAME': tenant, 'Content-Type': 'multipart/form-data' }, auth: { user: user, pass: password }, formData: createMultiImportFormdata(doc_titles, doc_fileNames, doc_cids, doc_contentTypes) } } function executeRequest(request_object){ request.post(request_object, function callback(err, httpResponse, body) { if(err) throw err; else { console.log(httpResponse.statusCode) console.log(body) }}) } function executePromiseRequest(request_object){ var requestPromise = new Promise((resolve, reject) => { request(request_object, (error, res) => error ? reject(error) : resolve(res)) }) requestPromise.then(function(result){ console.log(request_object.method + " Request:") console.log(request_object) console.log(request_object.method + " Response:") console.log(result.statusCode, result.statusMessage) console.log(result.body) }, function(err){ console.log(err); }) } // console.log(createImportFormdata("test", "test.txt", "cid_63apple", "text/plain")) var simpleImportRequest = createImportRequest("test", "test.txt", "cid_63apple", "text/plain") executeRequest(simpleImportRequest) // var doc_titles = ["test", "test1"] // var doc_fileNames = ["test.txt", "test1.txt"] // var doc_cids = ["cid_63apple", "cid_64apple"] // var doc_contentTypes = ["text/plain", "text/plain"] // // // console.log(createMultiImportFormdata(doc_titles, doc_fileNames, doc_cids, doc_contentTypes)) // var simpleMultiImportRequest = createMultiImportRequest(doc_titles, doc_fileNames, doc_cids, doc_contentTypes) // executeRequest(simpleMultiImportRequest)