mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Updated typos in cdre
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
130
engine/cdre.go
130
engine/cdre.go
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user