Skip to content
This repository has been archived by the owner on Oct 26, 2022. It is now read-only.

Commit

Permalink
Merge pull request #8 from OpenFn/new_helpers
Browse files Browse the repository at this point in the history
New helpers
  • Loading branch information
taylordowns2000 committed Mar 1, 2021
2 parents f5e43b5 + c38fbfd commit fc9656d
Show file tree
Hide file tree
Showing 4 changed files with 484 additions and 61 deletions.
103 changes: 103 additions & 0 deletions lib/Adaptor.js
Expand Up @@ -4,8 +4,27 @@ Object.defineProperty(exports, "__esModule", {
value: true
});
exports.execute = execute;
exports.submitXls = submitXls;
exports.submit = submit;
exports.fetchReportData = fetchReportData;
Object.defineProperty(exports, "alterState", {
enumerable: true,
get: function () {
return _languageCommon.alterState;
}
});
Object.defineProperty(exports, "arrayToString", {
enumerable: true,
get: function () {
return _languageCommon.arrayToString;
}
});
Object.defineProperty(exports, "combine", {
enumerable: true,
get: function () {
return _languageCommon.combine;
}
});
Object.defineProperty(exports, "dataPath", {
enumerable: true,
get: function () {
Expand Down Expand Up @@ -65,12 +84,16 @@ var _languageCommon = require("@openfn/language-common");

var _superagent = _interopRequireDefault(require("superagent"));

var _formData = _interopRequireDefault(require("form-data"));

var _url = require("url");

var _js2xmlparser = _interopRequireDefault(require("js2xmlparser"));

var _languageHttp = _interopRequireDefault(require("language-http"));

var _xlsx = _interopRequireDefault(require("xlsx"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/** @module Adaptor */
Expand Down Expand Up @@ -126,6 +149,86 @@ function clientPost({
});
});
}
/**
* Convert form data to xls then submit.
* @public
* @example
* submitXls(
* [
* {name: 'Mamadou', phone: '000000'},
* ],
* {
* case_type: 'student',
* search_field: 'external_id',
* create_new_cases: 'on',
* }
* )
* @constructor
* @param {Object} formData - Object including form data.
* @param {Object} params - Request params including case type and external id.
* @returns {Operation}
*/


function submitXls(formData, params) {
return state => {
const {
applicationName,
hostUrl,
username,
password
} = state.configuration;
const {
case_type,
search_field,
create_new_cases
} = params;
const url = (hostUrl || 'https://www.commcarehq.org').concat('/a/', applicationName, '/importer/excel/bulk_upload_api/');

const workbook = _xlsx.default.utils.book_new();

const worksheet = _xlsx.default.utils.json_to_sheet(formData);

const ws_name = 'SheetJS';

_xlsx.default.utils.book_append_sheet(workbook, worksheet, ws_name); // Generate buffer


const buffer = _xlsx.default.write(workbook, {
type: 'buffer',
bookType: 'biff5'
}); // xlsx.writeFile(workbook, 'out.xls'); // If needing to write to filesystem


const data = new _formData.default();
data.append('file', buffer, {
filename: 'output.xls'
}); // data.append('file', fs.createReadStream('./out.xls'));

data.append('case_type', case_type);
data.append('search_field', search_field);
data.append('create_new_cases', create_new_cases);
console.log('Posting to url: '.concat(url));
return _languageCommon.http.post({
url,
data,
auth: {
username,
password
},
headers: { ...data.getHeaders()
}
})(state).then(response => {
return { ...state,
data: {
body: response.data
}
};
}).catch(err => {
throw err;
});
};
}
/**
* Submit form data
* @public
Expand Down

0 comments on commit fc9656d

Please sign in to comment.