github.com/grokify/go-ringcentral-client@v0.3.31/office/v1/util/event_filter.go (about) 1 package clientutil 2 3 import ( 4 "fmt" 5 "regexp" 6 "strings" 7 ) 8 9 const ( 10 InstantMessageSMSExample = "/restapi/v1.0/account/~/extension/12345678/message-store/instant?type=SMS" 11 InstantMessageSMSPattern = `message-store/instant.+type=SMS` 12 InstantMessageSMSPatternX = `message-store/instant` 13 GlipPostEventFilterPattern = `/restapi/v1.0/glip/posts` 14 SubscriptionRenewalFilter = `/restapi/v1.0/subscription/.+\?threshold=` 15 ) 16 17 type EventType int 18 19 const ( 20 AccountPresenceEvent EventType = iota 21 ContactDirectoryEvent 22 DetailedExtensionPresenceEvent 23 DetailedExtensionPresenceWithSIPEvent 24 ExtensionFavoritesEvent 25 ExtensionFavoritesPresenceEvent 26 ExtensionGrantListEvent 27 ExtensionListEvent 28 ExtensionInfoEvent 29 ExtensionPresenceEvent 30 ExtensionPresenceLineEvent 31 GlipGroupsEvent 32 GlipPostEvent 33 GlipUnreadMessageCountEvent 34 InboundMessageEvent 35 IncomingCallEvent 36 InstantMessageEvent 37 MessageEvent 38 MissedCallEvent 39 RCVideoNotificationsEvent 40 SubscriptionRenewalEvent 41 ) 42 43 // Events is an array of event structs for reference. 44 var Events = []string{ 45 "AccountPresenceEvent", 46 "ContactDirectoryEvent", 47 "DetailedExtensionPresenceEvent", 48 "DetailedExtensionPresenceWithSIPEvent", 49 "ExtensionFavoritesEvent", 50 "ExtensionFavoritesPresenceEvent", 51 "ExtensionGrantListEvent", 52 "ExtensionListEvent", 53 "ExtensionInfoEvent", 54 "ExtensionPresenceEvent", 55 "ExtensionPresenceLineEvent", 56 "GlipGroupsEvent", 57 "GlipPostEvent", 58 "GlipUnreadMessageCountEvent", 59 "InboundMessageEvent", 60 "IncomingCallEvent", 61 "InstantMessageEvent", 62 "MessageEvent", 63 "MissedCallEvent", 64 "RCVideoNotificationsEvent", 65 "SubscriptionRenewalEvent", 66 } 67 68 func (d EventType) String() string { return Events[d] } 69 70 /* 71 func IsInstantMessageSMS(s string) bool { 72 if strings.Index(s, InstantMessageSMSPattern) == -1 { 73 return false 74 } 75 return true 76 } 77 */ 78 func ParseEventTypeForFilter(eventFilter string) (EventType, error) { 79 if strings.Contains(eventFilter, GlipPostEventFilterPattern) { 80 return GlipPostEvent, nil 81 } 82 rx := regexp.MustCompile(SubscriptionRenewalFilter) 83 m := rx.FindString(eventFilter) 84 if len(m) > 0 { 85 return SubscriptionRenewalEvent, nil 86 } 87 fmt.Printf("EVT_FILTER: %v\n", eventFilter) 88 m2 := regexp.MustCompile(InstantMessageSMSPattern).FindString(eventFilter) 89 if len(m2) > 0 { 90 fmt.Println("HERE") 91 return InstantMessageEvent, nil 92 } 93 fmt.Println("NODICE") 94 95 return GlipPostEvent, fmt.Errorf("No Event found for filter %v", eventFilter) 96 }