mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-14 20:59:53 +05:00
Adding timezone in Event.MissingParams function
This commit is contained in:
@@ -45,7 +45,7 @@ type Event interface {
|
||||
GetDisconnectCause(string) string
|
||||
GetOriginatorIP(string) string
|
||||
GetExtraFields() map[string]string
|
||||
MissingParameter() bool
|
||||
MissingParameter(string) bool
|
||||
ParseEventValue(*utils.RSRField, string) string
|
||||
PassesFieldFilter(*utils.RSRField) (bool, string)
|
||||
AsStoredCdr(timezone string) *StoredCdr
|
||||
|
||||
@@ -638,7 +638,7 @@ func (storedCdr *StoredCdr) GetOriginatorIP(fieldName string) string {
|
||||
func (storedCdr *StoredCdr) GetExtraFields() map[string]string {
|
||||
return storedCdr.ExtraFields
|
||||
}
|
||||
func (storedCdr *StoredCdr) MissingParameter() bool {
|
||||
func (storedCdr *StoredCdr) MissingParameter(timezone string) bool {
|
||||
return len(storedCdr.AccId) == 0 ||
|
||||
len(storedCdr.Category) == 0 ||
|
||||
len(storedCdr.Tenant) == 0 ||
|
||||
|
||||
@@ -533,7 +533,7 @@ func TestStoredCdrEventFields(t *testing.T) {
|
||||
if at, _ := cdr.GetAnswerTime(utils.META_DEFAULT, ""); at != time.Date(2013, 11, 7, 8, 42, 27, 0, time.UTC) {
|
||||
t.Error("Received: ", at)
|
||||
}
|
||||
if et, _ := cdr.GetEndTime(); et != time.Date(2013, 11, 7, 8, 42, 37, 0, time.UTC) {
|
||||
if et, _ := cdr.GetEndTime(utils.META_DEFAULT, ""); et != time.Date(2013, 11, 7, 8, 42, 37, 0, time.UTC) {
|
||||
t.Error("Received: ", et)
|
||||
}
|
||||
if dur, _ := cdr.GetDuration(utils.META_DEFAULT); dur != cdr.Usage {
|
||||
|
||||
@@ -168,7 +168,7 @@ func (fsev FSEvent) GetReqType(fieldName string) string {
|
||||
}
|
||||
return utils.FirstNonEmpty(fsev[fieldName], fsev[REQTYPE], reqTypeDetected, config.CgrConfig().DefaultReqType)
|
||||
}
|
||||
func (fsev FSEvent) MissingParameter() bool {
|
||||
func (fsev FSEvent) MissingParameter(timezone string) bool {
|
||||
return strings.TrimSpace(fsev.GetDirection(utils.META_DEFAULT)) == "" ||
|
||||
strings.TrimSpace(fsev.GetAccount(utils.META_DEFAULT)) == "" ||
|
||||
strings.TrimSpace(fsev.GetSubject(utils.META_DEFAULT)) == "" ||
|
||||
|
||||
@@ -191,7 +191,7 @@ func (sm *FSSessionManager) onChannelAnswer(ev engine.Event, connId string) {
|
||||
if ev.GetReqType(utils.META_DEFAULT) == utils.META_NONE { // Do not process this request
|
||||
return
|
||||
}
|
||||
if ev.MissingParameter() {
|
||||
if ev.MissingParameter(sm.timezone) {
|
||||
sm.DisconnectSession(ev, connId, MISSING_PARAMETER)
|
||||
}
|
||||
s := NewSession(ev, connId, sm)
|
||||
|
||||
@@ -194,7 +194,15 @@ func (self GenericEvent) GetExtraFields() map[string]string {
|
||||
return extraFields
|
||||
}
|
||||
|
||||
func (self GenericEvent) MissingParameter() bool {
|
||||
func (self GenericEvent) MissingParameter(timezone string) bool {
|
||||
switch self.GetName() {
|
||||
case utils.CGR_AUTHORIZATION:
|
||||
if setupTime, err := self.GetSetupTime(utils.META_DEFAULT, timezone); err != nil || setupTime == nilTime {
|
||||
return true
|
||||
}
|
||||
return len(self.GetAccount(utils.META_DEFAULT)) == 0 ||
|
||||
len(self.GetDestination(utils.META_DEFAULT)) == 0
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ func (self *KamailioSessionManager) onCgrAuth(evData []byte, connId string) {
|
||||
if kev.GetReqType(utils.META_DEFAULT) == utils.META_NONE { // Do not process this request
|
||||
return
|
||||
}
|
||||
if kev.MissingParameter() {
|
||||
if kev.MissingParameter(self.timezone) {
|
||||
if kar, err := kev.AsKamAuthReply(0.0, "", utils.ErrMandatoryIeMissing); err != nil {
|
||||
utils.Logger.Err(fmt.Sprintf("<SM-Kamailio> Failed building auth reply %s", err.Error()))
|
||||
} else if err = self.conns[connId].Send(kar.String()); err != nil {
|
||||
@@ -127,7 +127,7 @@ func (self *KamailioSessionManager) onCallStart(evData []byte, connId string) {
|
||||
if kamEv.GetReqType(utils.META_DEFAULT) == utils.META_NONE { // Do not process this request
|
||||
return
|
||||
}
|
||||
if kamEv.MissingParameter() {
|
||||
if kamEv.MissingParameter(self.timezone) {
|
||||
self.DisconnectSession(kamEv, connId, utils.ErrMandatoryIeMissing.Error())
|
||||
return
|
||||
}
|
||||
@@ -146,7 +146,7 @@ func (self *KamailioSessionManager) onCallEnd(evData []byte, connId string) {
|
||||
if kev.GetReqType(utils.META_DEFAULT) == utils.META_NONE { // Do not process this request
|
||||
return
|
||||
}
|
||||
if kev.MissingParameter() {
|
||||
if kev.MissingParameter(self.timezone) {
|
||||
utils.Logger.Err(fmt.Sprintf("<SM-Kamailio> Mandatory IE missing out of event: %+v", kev))
|
||||
}
|
||||
go self.ProcessCdr(kev.AsStoredCdr(self.Timezone()))
|
||||
|
||||
@@ -229,11 +229,11 @@ func (kev KamEvent) GetCdrSource() string {
|
||||
return "KAMAILIO_" + kev.GetName()
|
||||
}
|
||||
|
||||
func (kev KamEvent) MissingParameter() bool {
|
||||
func (kev KamEvent) MissingParameter(timezone string) bool {
|
||||
var nullTime time.Time
|
||||
switch kev.GetName() {
|
||||
case CGR_AUTH_REQUEST:
|
||||
if setupTime, err := kev.GetSetupTime(utils.META_DEFAULT, config.CgrConfig().DefaultTimezone); err != nil || setupTime == nullTime {
|
||||
if setupTime, err := kev.GetSetupTime(utils.META_DEFAULT, timezone); err != nil || setupTime == nullTime {
|
||||
return true
|
||||
}
|
||||
return len(kev.GetAccount(utils.META_DEFAULT)) == 0 ||
|
||||
@@ -244,7 +244,7 @@ func (kev KamEvent) MissingParameter() bool {
|
||||
len(kev.GetDestination(utils.META_DEFAULT)) == 0 ||
|
||||
len(kev[KAM_TR_INDEX]) == 0 || len(kev[KAM_TR_LABEL]) == 0
|
||||
case CGR_CALL_START:
|
||||
if aTime, err := kev.GetAnswerTime(utils.META_DEFAULT, config.CgrConfig().DefaultTimezone); err != nil || aTime == nullTime {
|
||||
if aTime, err := kev.GetAnswerTime(utils.META_DEFAULT, timezone); err != nil || aTime == nullTime {
|
||||
return true
|
||||
}
|
||||
return len(kev.GetUUID()) == 0 ||
|
||||
|
||||
@@ -72,35 +72,35 @@ func TestKevAsKamAuthReply(t *testing.T) {
|
||||
func TestKevMissingParameter(t *testing.T) {
|
||||
kamEv := KamEvent{"event": "CGR_AUTH_REQUEST", "tr_index": "36045", "tr_label": "612369399", "cgr_reqtype": utils.META_POSTPAID,
|
||||
"cgr_account": "1001", "cgr_destination": "1002"}
|
||||
if !kamEv.MissingParameter() {
|
||||
if !kamEv.MissingParameter("") {
|
||||
t.Error("Failed detecting missing parameters")
|
||||
}
|
||||
kamEv["cgr_setuptime"] = "1419962256"
|
||||
if kamEv.MissingParameter() {
|
||||
if kamEv.MissingParameter("") {
|
||||
t.Error("False detecting missing parameters")
|
||||
}
|
||||
kamEv = KamEvent{"event": "UNKNOWN"}
|
||||
if !kamEv.MissingParameter() {
|
||||
if !kamEv.MissingParameter("") {
|
||||
t.Error("Failed detecting missing parameters")
|
||||
}
|
||||
kamEv = KamEvent{"event": CGR_LCR_REQUEST, "tr_index": "36045", "tr_label": "612369399", "cgr_reqtype": utils.META_POSTPAID,
|
||||
"cgr_account": "1001"}
|
||||
if !kamEv.MissingParameter() {
|
||||
if !kamEv.MissingParameter("") {
|
||||
t.Error("Failed detecting missing parameters")
|
||||
}
|
||||
kamEv = KamEvent{"event": CGR_LCR_REQUEST, CGR_ACCOUNT: "1001", CGR_DESTINATION: "1002", "tr_index": "36045", "tr_label": "612369399"}
|
||||
if kamEv.MissingParameter() {
|
||||
if kamEv.MissingParameter("") {
|
||||
t.Error("False detecting missing parameters")
|
||||
}
|
||||
kamEv = KamEvent{"event": "CGR_CALL_START", "callid": "9d28ec3ee068babdfe036623f42c0969@0:0:0:0:0:0:0:0", "from_tag": "3131b566",
|
||||
"cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", "cgr_destination": "1002"}
|
||||
if !kamEv.MissingParameter() {
|
||||
if !kamEv.MissingParameter("") {
|
||||
t.Error("Failed detecting missing parameters")
|
||||
}
|
||||
kamEv["h_entry"] = "463"
|
||||
kamEv["h_id"] = "2605"
|
||||
kamEv["cgr_answertime"] = "1419964961"
|
||||
if kamEv.MissingParameter() {
|
||||
if kamEv.MissingParameter("") {
|
||||
t.Error("False detecting missing parameters")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ func (osipsEv *OsipsEvent) GetOriginatorIP(fieldName string) string {
|
||||
}
|
||||
return osipsEv.osipsEvent.OriginatorAddress.IP.String()
|
||||
}
|
||||
func (osipsev *OsipsEvent) MissingParameter() bool {
|
||||
func (osipsev *OsipsEvent) MissingParameter(timezone string) bool {
|
||||
var nilTime time.Time
|
||||
if osipsev.GetName() == "E_ACC_EVENT" && osipsev.osipsEvent.AttrValues["method"] == "INVITE" {
|
||||
return len(osipsev.GetUUID()) == 0 ||
|
||||
@@ -219,15 +219,15 @@ func (osipsev *OsipsEvent) MissingParameter() bool {
|
||||
len(osipsev.osipsEvent.AttrValues[TIME]) == 0
|
||||
} else if osipsev.GetName() == "E_ACC_EVENT" && osipsev.osipsEvent.AttrValues["method"] == "UPDATE" { // Updated event out of start/stop
|
||||
// Data needed when stopping a prepaid loop or building a CDR with start/stop event
|
||||
setupTime, err := osipsev.GetSetupTime(TIME, config.CgrConfig().DefaultTimezone)
|
||||
setupTime, err := osipsev.GetSetupTime(TIME, timezone)
|
||||
if err != nil || setupTime.Equal(nilTime) {
|
||||
return true
|
||||
}
|
||||
aTime, err := osipsev.GetAnswerTime(utils.META_DEFAULT, config.CgrConfig().DefaultTimezone)
|
||||
aTime, err := osipsev.GetAnswerTime(utils.META_DEFAULT, timezone)
|
||||
if err != nil || aTime.Equal(nilTime) {
|
||||
return true
|
||||
}
|
||||
endTime, err := osipsev.GetEndTime(utils.META_DEFAULT, config.CgrConfig().DefaultTimezone)
|
||||
endTime, err := osipsev.GetEndTime(utils.META_DEFAULT, timezone)
|
||||
if err != nil || endTime.Equal(nilTime) {
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -128,14 +128,14 @@ func TestOsipsEventGetValues(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestOsipsEventMissingParameter(t *testing.T) {
|
||||
if !osipsEv.MissingParameter() {
|
||||
if !osipsEv.MissingParameter("") {
|
||||
t.Errorf("Wrongly detected missing parameter: %+v", osipsEv)
|
||||
}
|
||||
osipsEv2 := &OsipsEvent{osipsEvent: &osipsdagram.OsipsEvent{Name: "E_ACC_CDR",
|
||||
AttrValues: map[string]string{"to_tag": "4ea9687f", "cgr_account": "dan", "setuptime": "7", "created": "1406370492", "method": "INVITE", "callid": "ODVkMDI2Mzc2MDY5N2EzODhjNTAzNTdlODhiZjRlYWQ",
|
||||
"sip_reason": "OK", "time": "1406370499", "cgr_reqtype": utils.META_PREPAID, "cgr_subject": "dan", "cgr_tenant": "itsyscom.com", "sip_code": "200",
|
||||
"duration": "20", "from_tag": "eb082607"}}}
|
||||
if !osipsEv2.MissingParameter() {
|
||||
if !osipsEv2.MissingParameter("") {
|
||||
t.Error("Failed to detect missing parameter.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,7 +259,7 @@ func (osm *OsipsSessionManager) onAccEvent(osipsDgram *osipsdagram.OsipsEvent) {
|
||||
|
||||
// Handler of call start event. Mostly starts a session if needed
|
||||
func (osm *OsipsSessionManager) callStart(osipsEv *OsipsEvent) error {
|
||||
if osipsEv.MissingParameter() {
|
||||
if osipsEv.MissingParameter(osm.timezone) {
|
||||
if err := osm.DisconnectSession(osipsEv, "", utils.ErrMandatoryIeMissing.Error()); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -282,7 +282,7 @@ func (osm *OsipsSessionManager) callEnd(osipsEv *OsipsEvent) error {
|
||||
if err := origEvent.updateDurationFromEvent(osipsEv); err != nil {
|
||||
return err
|
||||
}
|
||||
if origEvent.MissingParameter() {
|
||||
if origEvent.MissingParameter(osm.timezone) {
|
||||
return utils.ErrMandatoryIeMissing
|
||||
}
|
||||
if err := osm.sessions.removeSession(s, origEvent); err != nil { // Unreference it early so we avoid concurrency
|
||||
|
||||
Reference in New Issue
Block a user