passman/js/importers/import-main.js
2016-09-25 16:18:18 +02:00

98 lines
2.2 KiB
JavaScript

// Importers should always start with this
if(!window['PassmanImporter']){
var PassmanImporter = {}
}
PassmanImporter.parseRow_ = function(row, isHeading) {
// Strip leading quote.
row = row.trim();
var isQuoted = false;
if (row.charAt(0) == '"') {
row = row.substring(1);
isQuoted = true;
}
if (row.charAt(row.length - 2) == '"') {
row = row.substring(0, row.length - 2);
isQuoted = true;
}
// Strip trailing quote. There seems to be a character between the last quote
// and the line ending, hence 2 instead of 1.
if(isQuoted == true) {
row = row.split('","');
} else {
row = row.split(',');
}
return row;
};
PassmanImporter.htmlDecode = function(input){
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes[0].nodeValue;
};
PassmanImporter.toObject_ = function(headings, row) {
var result = {};
for (var i = 0, ii = row.length; i < ii; i++) {
headings[i] = headings[i].replace(',','_')
.toLowerCase().replace(' ','_')
.replace('(','').replace(')','')
.replace('"','');
result[headings[i]] = row[i];
}
return result;
};
PassmanImporter.join_ = function(arr, sep) {
var parts = [];
for (var i = 0, ii = arr.length; i < ii; i++) {
arr[i] && parts.push(arr[i]);
}
return parts.join(sep);
};
PassmanImporter.newCredential = function () {
var credential = {
'credential_id': null,
'guid': null,
'vault_id': null,
'label': null,
'description': null,
'created': null,
'changed': null,
'tags': [],
'email': null,
'username': null,
'password': null,
'url': null,
'favicon': null,
'renew_interval': null,
'expire_time': 0,
'delete_time': 0,
'files': [],
'custom_fields': [],
'otp': {},
'hidden': false
};
return credential;
};
PassmanImporter.readCsv = function( csv, hasHeadings ){
hasHeadings = (hasHeadings === undefined) ? true : hasHeadings;
var lines = [];
var rows = csv.split('\n');
if(hasHeadings) {
var headings = this.parseRow_(rows[0]);
for (var i = 1, row; row = rows[i]; i++) {
row = this.toObject_(headings, this.parseRow_(row));
lines.push(row);
}
} else {
for (var i = 1, row; row = rows[i]; i++) {
lines.push(this.parseRow_(row));
}
}
return lines;
};
PassmanImporter.readJson = function (string){
return JSON.parse(string);
};