Spaces:
Running
Running
| /** | |
| * 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; | |