Skip to content

Instantly share code, notes, and snippets.

Created June 2, 2016 20:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/1e215773e16f4960a352f91b250f31c8 to your computer and use it in GitHub Desktop.
Save anonymous/1e215773e16f4960a352f91b250f31c8 to your computer and use it in GitHub Desktop.
class MixpanelService {
static transactional = false
def grailsApplication
def springSecurityService
void createOrUpdateUserProfile(User user) {
if(Environment.current != Environment.TEST) {
Executors.newFixedThreadPool(1).execute({
User.withNewSession {
user = User.get(user.id)
MessageBuilder messageBuilder = new MessageBuilder(MIXPANEL_TOKEN)
JSONObject props = new JSONObject()
props.put('$name', user.fullName)
props.put('$email', user.email)
props.put('$distinct_id', user.id)
props.put('Date created', user.dateCreated)
props.put('Role', user.authorities*.authority?.join(','))
new MixpanelAPI().sendMessage(messageBuilder.set(user.id.toString(), props))
}
})
}
}
void sendViewInfo(String eventType, String url) {
Long userId = springSecurityService.currentUser?.id
Executors.newFixedThreadPool(1).execute({
try {
User.withNewSession {
User user = userId ? User.read(userId) : null
MessageBuilder messageBuilder = new MessageBuilder(MIXPANEL_TOKEN)
JSONObject props = new JSONObject()
props.put('Event Type', eventType)
props.put('URL', url)
ClientDelivery delivery = new ClientDelivery()
delivery.addMessage(messageBuilder.event(user?.id?.toString(), eventType, props))
new MixpanelAPI().deliver(delivery)
}
} catch (Throwable e) {
log.error("Failed to sent mixpanel info(eventType: ${eventType}, button: ${button}, url: ${url}) caused: ${e.message}", e)
}
})
}
private void send(JSONObject newNotification) {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment