'use strict' /** * Copyright (c) 2018~2019, OBCon Inc. * All rights reserved. */ /** * @file * @copyright OBCon Inc. Korea 2018~2019 * @author gye hyun james kim [pnuskgh@gmail.com] */ let iconv = require('iconv-lite'); class Csv { constructor() { this._characterset = 'utf-8'; //--- utf-8, euc-kr this._filename = null; //--- ~.csv } get characterset() { return this._characterset; } set characterset(newValue) { this._characterset = newValue; } get filename() { return this._filename; } set filename(newValue) { this._filename = newValue; } header(res) { if (this._characterset == 'euc-kr') { res.setHeader('Content-Type', 'text/csv;characterset=' + this._characterset + '"'); res.setHeader('content-disposition', 'attachment; filename=' + this._filename); } else { res.setHeader('Content-Type', 'text/csv;characterset=utf-8"'); res.setHeader('content-disposition', 'attachment; filename=' + this._filename); } } title(res, header) { let msg = ((typeof(header) == 'string') ? header:header.join(',')) + '\n'; if (this._characterset == 'euc-kr') { res.write(iconv.encode(msg, 'EUC-KR')); } else { res.write(msg); } } item(res, item) { let msg = ((typeof(item) == 'string') ? item:item.join(',')) + '\n'; if (this._characterset == 'euc-kr') { res.write(iconv.encode(msg, 'EUC-KR')); } else { res.write(msg); } } end(res) { res.end(); } } module.exports = Csv;