From d6c97eec9899ad1104614faca0b1fc49a143a319 Mon Sep 17 00:00:00 2001 From: DanB Date: Tue, 21 Oct 2014 10:30:54 +0200 Subject: [PATCH] TPExporter considering fileFormat --- apier/v2/tp.go | 3 +++ engine/tpexporter.go | 31 ++++++++++++++++++++++--------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/apier/v2/tp.go b/apier/v2/tp.go index ef828b4ed..895e612d0 100644 --- a/apier/v2/tp.go +++ b/apier/v2/tp.go @@ -27,6 +27,9 @@ import ( ) func (self *ApierV2) RemTP(tpid string, reply *string) error { + if len(tpid) == 0 { + return fmt.Errorf("%s:TPid", utils.ERR_MANDATORY_IE_MISSING) + } if err := self.StorDb.RemTPData("", tpid); err != nil { return fmt.Errorf("%s:%s", utils.ERR_SERVER_ERROR, err.Error()) } else { diff --git a/engine/tpexporter.go b/engine/tpexporter.go index 90f522690..a6de3a295 100644 --- a/engine/tpexporter.go +++ b/engine/tpexporter.go @@ -24,6 +24,7 @@ import ( "encoding/csv" "errors" "fmt" + "io" "os" "path" "unicode/utf8" @@ -130,23 +131,35 @@ func (self *TPExporter) writeOut(fileName string, tpData []utils.ExportedData) e if len(tpData) == 0 { return nil } + var fWriter io.Writer var writerOut utils.CgrRecordWriter + var err error + if self.compress { - if f, err := self.zipWritter.Create(fileName); err != nil { + if fWriter, err = self.zipWritter.Create(fileName); err != nil { + return err + } + } else if len(self.exportPath) != 0 { + if f, err := os.Create(path.Join(self.exportPath, fileName)); err != nil { return err } else { - writerOut = utils.NewCgrIORecordWriter(f) + fWriter = f + defer f.Close() } - } else { // For now the only supported here is csv - fileOut, err := os.Create(path.Join(self.exportPath, fileName)) - if err != nil { - return err - } - defer fileOut.Close() - csvWriter := csv.NewWriter(fileOut) + + } else { + fWriter = new(bytes.Buffer) + } + + switch self.fileFormat { + case utils.CSV: + csvWriter := csv.NewWriter(fWriter) csvWriter.Comma = self.sep writerOut = csvWriter + default: + writerOut = utils.NewCgrIORecordWriter(fWriter) } + for _, tpItem := range tpData { for _, record := range tpItem.AsExportSlice() { if err := writerOut.Write(record); err != nil {