Commit 1b379659 authored by Hamza's avatar Hamza

update the cloudooostorage to send parameters to wkhtmltopdf

parent 868af9b5
/*
* Copyright 2018, Nexedi SA
*
......@@ -17,16 +18,13 @@
* See COPYING file for full licensing terms.
* See https://www.nexedi.com/licensing for rationale and options.
*/
/*jslint nomen: true*/
/*global jIO, RSVP, DOMParser, XMLSerializer*/
(function (jIO, RSVP, DOMParser, XMLSerializer) {
"use strict";
var parser = new DOMParser(),
serializer = new XMLSerializer();
function makeXmlRpcRequest(file, from, to) {
function makeXmlRpcRequest(file, from, to, conversion_kw) {
var xml = parser.parseFromString(
'<?xml version="1.0" encoding="UTF-8"?><methodCall>' +
'<methodName>convertFile</methodName><params>' +
......@@ -35,19 +33,37 @@
'<param><value><string></string></value></param></params></methodCall>',
'text/xml'
),
string_list = xml.getElementsByTagName('string');
string_list = xml.getElementsByTagName('string');
string_list[0].textContent = file;
string_list[1].textContent = from;
string_list[2].textContent = to;
//
if (conversion_kw){
var param = parser.parseFromString('<param><value><boolean>0</boolean></value></param>','text/xml').firstChild;
xml.firstChild.lastChild.appendChild(param);
var param = parser.parseFromString('<param><value><boolean>0</boolean></value></param>','text/xml').firstChild;
xml.firstChild.lastChild.appendChild(param);
param = parser.parseFromString('<param><struct></struct></param>','text/xml').firstChild;
var struct = param.firstChild;
for (var key in conversion_kw) {
var element_value = document.createElement(conversion_kw[key][1]);
var member = parser.parseFromString('<member><name></name><value></value></member>','text/xml').firstChild;
element_value.textContent = conversion_kw[key][0];
member.getElementsByTagName('name')[0].textContent = key;
member.getElementsByTagName('value')[0].appendChild(element_value);
struct.appendChild(member);
}
xml.firstChild.lastChild.appendChild(param);
}
//
return serializer.serializeToString(xml);
}
/**
* convert a blob
* from a format to another
* return converted blob.
**/
function convert(url, blob, from, to) {
function convert(url, blob, from, to, conversion_kw) {
return new RSVP.Queue()
.push(function () {
return jIO.util.readBlobAsDataURL(blob);
......@@ -59,7 +75,8 @@
data: makeXmlRpcRequest(
result.target.result.split('base64,')[1],
from,
to
to,
conversion_kw
)
});
})
......@@ -79,7 +96,6 @@
throw error;
});
}
/**
* The jIO CloudoooStorage extension
*
......@@ -92,50 +108,39 @@
this._url = spec.url;
this._sub_storage = jIO.createJIO(spec.sub_storage);
}
CloudoooStorage.prototype.get = function () {
return this._sub_storage.get.apply(this._sub_storage, arguments);
};
CloudoooStorage.prototype.put = function () {
return this._sub_storage.put.apply(this._sub_storage, arguments);
};
CloudoooStorage.prototype.remove = function () {
return this._sub_storage.remove.apply(this._sub_storage, arguments);
};
CloudoooStorage.prototype.getAttachment = function () {
return this._sub_storage.getAttachment.apply(this._sub_storage, arguments);
};
CloudoooStorage.prototype.putAttachment = function (id, name, blob) {
CloudoooStorage.prototype.putAttachment = function (id, name, blob, conversion_kw) {
var storage = this;
return storage.get(id)
return storage.get(id)
.push(function (doc) {
return convert(storage._url, blob, doc.from, doc.to);
return convert(storage._url, blob, doc.from, doc.to, conversion_kw);
})
.push(function (converted_blob) {
return storage._sub_storage.putAttachment(id, name, converted_blob);
});
};
CloudoooStorage.prototype.allAttachments = function () {
return this._sub_storage.allAttachments.apply(this._sub_storage, arguments);
};
CloudoooStorage.prototype.repair = function () {
return this._sub_storage.repair.apply(this._sub_storage, arguments);
};
CloudoooStorage.prototype.hasCapacity = function () {
return this._sub_storage.hasCapacity.apply(this._sub_storage, arguments);
};
CloudoooStorage.prototype.buildQuery = function () {
return this._sub_storage.buildQuery.apply(this._sub_storage, arguments);
};
jIO.addStorage('cloudooo', CloudoooStorage);
}(jIO, RSVP, DOMParser, XMLSerializer));
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment