项目作者: domenkozar

项目描述 :
Haskell client implementation of mixpanel HTTP api
高级语言: Haskell
项目地址: git://github.com/domenkozar/mixpanel-client.git
创建时间: 2018-08-20T18:22:33Z
项目社区:https://github.com/domenkozar/mixpanel-client

开源协议:Other

下载


MixPanel client for Haskell

Build Status
Hackage

Implements major features of MixPanel HTTP API:

  • track
  • alias
  • engage
  • import
  • export

Getting started

  1. import Data.Aeson ( (.=) )
  2. import Data.Time.Clock ( getCurrentTime )
  3. import GHC.Exts ( fromList )
  4. import MixPanel ( Operation(Set), engage, track, alias
  5. , AuthToken(..), mkEnv
  6. -- reexports
  7. , newManager, tlsManagerSettings)
  8. main :: IO ()
  9. main = do
  10. -- setup
  11. manager <- newManager tlsManagerSettings
  12. let env = mkEnv (AuthToken "foobar") manager
  13. -- track a simple event
  14. Right () <- track env "Played Video" mempty
  15. -- track an event with extra properties
  16. Right () <- track env "Played Video Unique per user"
  17. $ fromList [ "distinct_id" .= ("generated-id" :: String)
  18. , "customProperty" .= True ]
  19. -- alias the user
  20. Right () <- alias env "generated-id" "user@example.com"
  21. -- profile engagement
  22. now <- getCurrentTime
  23. Right () <- engage env "user@example.com"
  24. $ Set (fromList [ "$created" .= now])
  25. putStrLn "All good!"

Design questions

a) Why does it use Object/Array intemediate values from Data.Aeson?

TODO

  • batch requests
  • expose extra url query paramerers
  • engage special properties more type safe?
  • filter out null values in requests to mixpanel
  • api support for tracking revenue