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  }