Updated typos in cdre

This commit is contained in:
Trial97
2020-01-21 16:21:10 +02:00
parent 9abf3fa36d
commit 60703280a6
7 changed files with 97 additions and 100 deletions

View File

@@ -161,7 +161,7 @@ func (api *ApierV1) ExportCdrsToFile(attr utils.AttrExpFileCdrs, reply *utils.Ex
}
*reply = utils.ExportedFileCdrs{ExportedFilePath: filePath,
TotalRecords: len(cdrs), TotalCost: cdrexp.TotalCost(),
FirstOrderId: cdrexp.FirstOrderId(), LastOrderId: cdrexp.LastOrderId()}
FirstOrderId: cdrexp.FirstOrderID(), LastOrderId: cdrexp.LastOrderID()}
if !attr.SuppressCgrIds {
reply.ExportedCgrIds = cdrexp.PositiveExports()
reply.UnexportedCgrIds = cdrexp.NegativeExports()
@@ -299,7 +299,7 @@ func (api *ApierV1) ExportCDRs(arg ArgExportCDRs, reply *RplExportedCDRs) (err e
return
}
*reply = RplExportedCDRs{ExportedPath: filePath, TotalRecords: len(cdrs), TotalCost: cdrexp.TotalCost(),
FirstOrderID: cdrexp.FirstOrderId(), LastOrderID: cdrexp.LastOrderId()}
FirstOrderID: cdrexp.FirstOrderID(), LastOrderID: cdrexp.LastOrderID()}
if arg.Verbose {
reply.ExportedCGRIDs = cdrexp.PositiveExports()
reply.UnexportedCGRIDs = cdrexp.NegativeExports()

View File

@@ -117,7 +117,7 @@ func (apiv2 *ApierV2) ExportCdrsToFile(attr AttrExportCdrsToFile, reply *utils.E
return nil
}
*reply = utils.ExportedFileCdrs{ExportedFilePath: filePath, TotalRecords: len(cdrs),
TotalCost: cdrexp.TotalCost(), FirstOrderId: cdrexp.FirstOrderId(), LastOrderId: cdrexp.LastOrderId()}
TotalCost: cdrexp.TotalCost(), FirstOrderId: cdrexp.FirstOrderID(), LastOrderId: cdrexp.LastOrderID()}
if !attr.Verbose {
reply.ExportedCgrIds = cdrexp.PositiveExports()
reply.UnexportedCgrIds = cdrexp.NegativeExports()

View File

@@ -594,9 +594,9 @@ func (cdr *CDR) UpdateFromCGREvent(cgrEv *utils.CGREvent, fields []string) (err
return
}
default:
fldVal, err := cgrEv.FieldAsString(fldName)
if err != nil {
return err
var fldVal string
if fldVal, err = cgrEv.FieldAsString(fldName); err != nil {
return
}
cdr.ExtraFields[fldName] = fldVal
}

View File

@@ -37,18 +37,17 @@ import (
)
const (
META_EXPORTID = "*export_id"
META_TIMENOW = "*time_now"
META_FIRSTCDRATIME = "*first_cdr_atime"
META_LASTCDRATIME = "*last_cdr_atime"
META_NRCDRS = "*cdrs_number"
META_DURCDRS = "*cdrs_duration"
META_SMSUSAGE = "*sms_usage"
META_MMSUSAGE = "*mms_usage"
META_GENERICUSAGE = "*generic_usage"
META_DATAUSAGE = "*data_usage"
META_COSTCDRS = "*cdrs_cost"
META_FORMATCOST = "*format_cost"
metaExportID = "*export_id"
metaTimeNow = "*time_now"
metaFirstCDRAtime = "*first_cdr_atime"
metaLastCDRAtime = "*last_cdr_atime"
metaNrCDRs = "*cdrs_number"
metaDurCDRs = "*cdrs_duration"
metaSMSUsage = "*sms_usage"
metaMMSUsage = "*mms_usage"
metaGenericUsage = "*generic_usage"
metaDataUsage = "*data_usage"
metaCostCDRs = "*cdrs_cost"
)
// NewCDRExporter returns a new CDRExporter
@@ -111,32 +110,32 @@ type CDRExporter struct {
// Handle various meta functions used in header/trailer
func (cdre *CDRExporter) metaHandler(tag, arg string) (string, error) {
switch tag {
case META_EXPORTID:
case metaExportID:
return cdre.exportID, nil
case META_TIMENOW:
case metaTimeNow:
return time.Now().Format(arg), nil
case META_FIRSTCDRATIME:
case metaFirstCDRAtime:
return cdre.firstCdrATime.Format(arg), nil
case META_LASTCDRATIME:
case metaLastCDRAtime:
return cdre.lastCdrATime.Format(arg), nil
case META_NRCDRS:
case metaNrCDRs:
return strconv.Itoa(cdre.numberOfRecords), nil
case META_DURCDRS:
case metaDurCDRs:
cdr := &CDR{ToR: utils.VOICE, Usage: cdre.totalDuration}
return cdr.FieldAsString(&config.RSRParser{Rules: "~" + utils.Usage, AllFiltersMatch: true})
case META_SMSUSAGE:
case metaSMSUsage:
cdr := &CDR{ToR: utils.SMS, Usage: cdre.totalDuration}
return cdr.FieldAsString(&config.RSRParser{Rules: "~" + utils.Usage, AllFiltersMatch: true})
case META_MMSUSAGE:
case metaMMSUsage:
cdr := &CDR{ToR: utils.MMS, Usage: cdre.totalDuration}
return cdr.FieldAsString(&config.RSRParser{Rules: "~" + utils.Usage, AllFiltersMatch: true})
case META_GENERICUSAGE:
case metaGenericUsage:
cdr := &CDR{ToR: utils.GENERIC, Usage: cdre.totalDuration}
return cdr.FieldAsString(&config.RSRParser{Rules: "~" + utils.Usage, AllFiltersMatch: true})
case META_DATAUSAGE:
case metaDataUsage:
cdr := &CDR{ToR: utils.DATA, Usage: cdre.totalDuration}
return cdr.FieldAsString(&config.RSRParser{Rules: "~" + utils.Usage, AllFiltersMatch: true})
case META_COSTCDRS:
case metaCostCDRs:
return strconv.FormatFloat(utils.Round(cdre.totalCost,
globalRoundingDecimals, utils.ROUNDING_MIDDLE), 'f', -1, 64), nil
default:
@@ -240,36 +239,29 @@ func (cdre *CDRExporter) postCdr(cdr *CDR) (err error) {
var body interface{}
switch cdre.exportFormat {
case utils.MetaHTTPjsonCDR, utils.MetaAMQPjsonCDR:
jsn, err := json.Marshal(cdr)
if err != nil {
return err
if body, err = json.Marshal(cdr); err != nil {
return
}
body = jsn
case utils.MetaHTTPjsonMap, utils.MetaAMQPjsonMap, utils.MetaAMQPV1jsonMap, utils.MetaSQSjsonMap, utils.MetaKafkajsonMap, utils.MetaS3jsonMap:
expMp, err := cdr.AsExportMap(cdre.exportTemplate.ContentFields, cdre.httpSkipTLSCheck, nil, cdre.filterS)
if err != nil {
return err
var expMp map[string]string
if expMp, err = cdr.AsExportMap(cdre.exportTemplate.ContentFields, cdre.httpSkipTLSCheck, nil, cdre.filterS); err != nil {
return
}
jsn, err := json.Marshal(expMp)
if err != nil {
return err
if body, err = json.Marshal(expMp); err != nil {
return
}
body = jsn
case utils.META_HTTP_POST:
expMp, err := cdr.AsExportMap(cdre.exportTemplate.ContentFields, cdre.httpSkipTLSCheck, nil, cdre.filterS)
if err != nil {
return err
var expMp map[string]string
if expMp, err = cdr.AsExportMap(cdre.exportTemplate.ContentFields, cdre.httpSkipTLSCheck, nil, cdre.filterS); err != nil {
return
}
vals := url.Values{}
var vals url.Values
for fld, val := range expMp {
vals.Set(fld, val)
}
body = vals
default:
err = fmt.Errorf("unsupported exportFormat: <%s>", cdre.exportFormat)
}
if err != nil {
return
return fmt.Errorf("unsupported exportFormat: <%s>", cdre.exportFormat)
}
// compute fallbackPath
fallbackPath := utils.META_NONE
@@ -317,11 +309,11 @@ func (cdre *CDRExporter) processCDR(cdr *CDR) (err error) {
if err = connMgr.Call(cdre.attrsConns, nil,
utils.AttributeSv1ProcessEvent,
args, &evReply); err != nil {
return err
return
}
if len(evReply.AlteredFields) != 0 {
if err := cdr.UpdateFromCGREvent(evReply.CGREvent, evReply.AlteredFields); err != nil {
return err
if err = cdr.UpdateFromCGREvent(evReply.CGREvent, evReply.AlteredFields); err != nil {
return
}
}
}
@@ -378,7 +370,7 @@ func (cdre *CDRExporter) processCDR(cdr *CDR) (err error) {
if cdre.lastExpOrderID < cdr.OrderID {
cdre.lastExpOrderID = cdr.OrderID
}
return nil
return
}
// Builds header, content and trailers
@@ -435,55 +427,55 @@ func (cdre *CDRExporter) processCDRs() (err error) {
}
// Simple write method
func (cdre *CDRExporter) writeOut(ioWriter io.Writer) error {
func (cdre *CDRExporter) writeOut(ioWriter io.Writer) (err error) {
cdre.Lock()
defer cdre.Unlock()
if len(cdre.header) != 0 {
for _, fld := range append(cdre.header, "\n") {
if _, err := io.WriteString(ioWriter, fld); err != nil {
return err
if _, err = io.WriteString(ioWriter, fld); err != nil {
return
}
}
}
for _, cdrContent := range cdre.content {
for _, cdrFld := range append(cdrContent, "\n") {
if _, err := io.WriteString(ioWriter, cdrFld); err != nil {
return err
if _, err = io.WriteString(ioWriter, cdrFld); err != nil {
return
}
}
}
if len(cdre.trailer) != 0 {
for _, fld := range append(cdre.trailer, "\n") {
if _, err := io.WriteString(ioWriter, fld); err != nil {
return err
if _, err = io.WriteString(ioWriter, fld); err != nil {
return
}
}
}
return nil
return
}
// csvWriter specific method
func (cdre *CDRExporter) writeCsv(csvWriter *csv.Writer) error {
func (cdre *CDRExporter) writeCsv(csvWriter *csv.Writer) (err error) {
csvWriter.Comma = cdre.fieldSeparator
cdre.RLock()
defer cdre.RUnlock()
if len(cdre.header) != 0 {
if err := csvWriter.Write(cdre.header); err != nil {
return err
if err = csvWriter.Write(cdre.header); err != nil {
return
}
}
for _, cdrContent := range cdre.content {
if err := csvWriter.Write(cdrContent); err != nil {
return err
if err = csvWriter.Write(cdrContent); err != nil {
return
}
}
if len(cdre.trailer) != 0 {
if err := csvWriter.Write(cdre.trailer); err != nil {
return err
if err = csvWriter.Write(cdre.trailer); err != nil {
return
}
}
csvWriter.Flush()
return nil
return
}
// ExportCDRs exports the given CDRs
@@ -512,9 +504,9 @@ func (cdre *CDRExporter) ExportCDRs() (err error) {
fileName := fmt.Sprintf("cdre_%s.%s", utils.UUIDSha1Prefix(), expFormat)
expPath = path.Join(expPath, fileName)
}
fileOut, err := os.Create(expPath)
if err != nil {
return err
var fileOut *os.File
if fileOut, err = os.Create(expPath); err != nil {
return
}
defer fileOut.Close()
if cdre.exportFormat == utils.MetaFileCSV {
@@ -525,13 +517,13 @@ func (cdre *CDRExporter) ExportCDRs() (err error) {
return
}
// FirstOrderId returns the first exported Cdr OrderId
func (cdre *CDRExporter) FirstOrderId() int64 {
// FirstOrderID returns the first exported Cdr OrderId
func (cdre *CDRExporter) FirstOrderID() int64 {
return cdre.firstExpOrderID
}
// LastOrderId return the last exported Cdr OrderId
func (cdre *CDRExporter) LastOrderId() int64 {
// LastOrderID return the last exported Cdr OrderId
func (cdre *CDRExporter) LastOrderID() int64 {
return cdre.lastExpOrderID
}

View File

@@ -45,7 +45,7 @@ var hdrJsnCfgFlds = []*config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("FileSeqNr"),
Type: utils.StringPointer(utils.META_HANDLER),
Value: utils.StringPointer(META_EXPORTID),
Value: utils.StringPointer(metaExportID),
Width: utils.IntPointer(5),
Strip: utils.StringPointer("right"),
Padding: utils.StringPointer("zeroleft")},
@@ -53,12 +53,12 @@ var hdrJsnCfgFlds = []*config.FcTemplateJsonCfg{
Tag: utils.StringPointer("LastCdr"),
Type: utils.StringPointer(utils.META_HANDLER),
Width: utils.IntPointer(12),
Value: utils.StringPointer(META_LASTCDRATIME),
Value: utils.StringPointer(metaLastCDRAtime),
Layout: utils.StringPointer("020106150400")},
{
Tag: utils.StringPointer("FileCreationfTime"),
Type: utils.StringPointer(utils.META_HANDLER),
Value: utils.StringPointer(META_TIMENOW),
Value: utils.StringPointer(metaTimeNow),
Width: utils.IntPointer(12),
Layout: utils.StringPointer("020106150400")},
{
@@ -213,20 +213,20 @@ var trailerJsnCfgFlds = []*config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("FileSeqNr"),
Type: utils.StringPointer(utils.META_HANDLER),
Value: utils.StringPointer(META_EXPORTID),
Value: utils.StringPointer(metaExportID),
Width: utils.IntPointer(5),
Strip: utils.StringPointer("right"),
Padding: utils.StringPointer("zeroleft")},
{
Tag: utils.StringPointer("NumberOfRecords"),
Type: utils.StringPointer(utils.META_HANDLER),
Value: utils.StringPointer(META_NRCDRS),
Value: utils.StringPointer(metaNrCDRs),
Width: utils.IntPointer(6),
Padding: utils.StringPointer("zeroleft")},
{
Tag: utils.StringPointer("CdrsDuration"),
Type: utils.StringPointer(utils.META_HANDLER),
Value: utils.StringPointer(META_DURCDRS),
Value: utils.StringPointer(metaDurCDRs),
Width: utils.IntPointer(8),
Padding: utils.StringPointer("zeroleft"),
Layout: utils.StringPointer(utils.SECONDS)},
@@ -234,13 +234,13 @@ var trailerJsnCfgFlds = []*config.FcTemplateJsonCfg{
Tag: utils.StringPointer("FirstCdrTime"),
Type: utils.StringPointer(utils.META_HANDLER),
Width: utils.IntPointer(12),
Value: utils.StringPointer(META_FIRSTCDRATIME),
Value: utils.StringPointer(metaFirstCDRAtime),
Layout: utils.StringPointer("020106150400")},
{
Tag: utils.StringPointer("LastCdrTime"),
Type: utils.StringPointer(utils.META_HANDLER),
Width: utils.IntPointer(12),
Value: utils.StringPointer(META_LASTCDRATIME),
Value: utils.StringPointer(metaLastCDRAtime),
Layout: utils.StringPointer("020106150400")},
{
Tag: utils.StringPointer("Filler2"),
@@ -318,11 +318,11 @@ func TestWriteCdr(t *testing.T) {
t.Error("Unexpected total cost in the stats: ", cdre.totalCost)
}
if cdre.FirstOrderId() != 1 {
t.Error("Unexpected FirstOrderId", cdre.FirstOrderId())
if cdre.FirstOrderID() != 1 {
t.Error("Unexpected FirstOrderId", cdre.FirstOrderID())
}
if cdre.LastOrderId() != 1 {
t.Error("Unexpected LastOrderId", cdre.LastOrderId())
if cdre.LastOrderID() != 1 {
t.Error("Unexpected LastOrderId", cdre.LastOrderID())
}
if cdre.TotalCost() != utils.Round(cdr.Cost, 5, utils.ROUNDING_MIDDLE) {
t.Error("Unexpected TotalCost: ", cdre.TotalCost())
@@ -399,11 +399,11 @@ func TestWriteCdrs(t *testing.T) {
if cdre.totalCost != 5.99568 {
t.Error("Unexpected total cost in the stats: ", cdre.totalCost)
}
if cdre.FirstOrderId() != 2 {
t.Error("Unexpected FirstOrderId", cdre.FirstOrderId())
if cdre.FirstOrderID() != 2 {
t.Error("Unexpected FirstOrderId", cdre.FirstOrderID())
}
if cdre.LastOrderId() != 4 {
t.Error("Unexpected LastOrderId", cdre.LastOrderId())
if cdre.LastOrderID() != 4 {
t.Error("Unexpected LastOrderId", cdre.LastOrderID())
}
if cdre.TotalCost() != 5.99568 {
t.Error("Unexpected TotalCost: ", cdre.TotalCost())

View File

@@ -185,15 +185,14 @@ func (cdrS *CDRServer) rateCDR(cdr *CDRWithArgDispatcher) ([]*CDR, error) {
cdrClone.CostDetails = nil
if qryCC, err = cdrS.getCostFromRater(&CDRWithArgDispatcher{CDR: cdrClone}); err != nil {
return nil, err
} else {
smCost = &SMCost{
CGRID: cdrClone.CGRID,
RunID: cdrClone.RunID,
OriginHost: cdrClone.OriginID,
CostSource: utils.CDRs,
Usage: cdrClone.Usage,
CostDetails: NewEventCostFromCallCost(qryCC, cdrClone.CGRID, cdrClone.RunID),
}
}
smCost = &SMCost{
CGRID: cdrClone.CGRID,
RunID: cdrClone.RunID,
OriginHost: cdrClone.OriginID,
CostSource: utils.CDRs,
Usage: cdrClone.Usage,
CostDetails: NewEventCostFromCallCost(qryCC, cdrClone.CGRID, cdrClone.RunID),
}
}
cdrClone.Cost = smCost.CostDetails.GetCost()

View File

@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
package utils
// NewStringSet returns a new StringSet
func NewStringSet(dataSlice []string) (s *StringSet) {
s = &StringSet{data: make(map[string]struct{})}
s.AddSlice(dataSlice)
@@ -29,25 +30,30 @@ type StringSet struct {
data map[string]struct{}
}
// Add adds a key in set
func (s *StringSet) Add(val string) {
s.data[val] = struct{}{}
}
// Remove removes a key from set
func (s *StringSet) Remove(val string) {
delete(s.data, val)
}
// Has returns if the key is in set
func (s *StringSet) Has(val string) bool {
_, has := s.data[val]
return has
}
// AddSlice adds all the element of a slice
func (s *StringSet) AddSlice(dataSlice []string) {
for _, val := range dataSlice {
s.Add(val)
}
}
// AsSlice returns the keys as string slice
func (s *StringSet) AsSlice() []string {
result := make([]string, len(s.data))
i := 0