hissmetrics-0.2.1: Unofficial API bindings to KISSmetrics.

Safe HaskellSafe-Infered

Web.KISSmetrics

Contents

Description

This module is meant to be imported qualified:

 import qualified Web.KISSmetrics as KISSmetrics

Synopsis

Data types

type APIKey = AsciiSource

Your KISSmetrics API key.

type SimpleText = AsciiSource

KISSmetrics names and identities are limited to at most 255 characters and all commas (,) and colons (:) are changed to spaces ( ). Nothing is checked by this Haskell library, so be careful =).

type Property = (SimpleText, Text)Source

A KISSmetrics property. The property names needs to follow the rules outlined on SimpleTexts documentation. The property value, on the other hand, are only limited to 8 KiB and don't have any other restrictions.

data Timestamp Source

A timestamp used only to ignore duplicated events.

Constructors

Automatic

Use KISSmetrics' servers time as the timestamp.

Manual UTCTime

Use given time as the timestamp.

Making calls

callSource

Arguments

:: (EventName event, Identity ident) 
=> Manager

HTTP connection manager (cf. newManager).

-> APIKey

Your KISSmetrics API key.

-> CallType event ident

Which call you would like to make.

-> IO () 

Call KISSmetrics' API. See CallType for documentation about which calls you may make.

KISSmetrics does not return errors even when an error occurs and there's absolutely no way of knowing if your request went through. However, this function may throw an exception if we fail to make the request to KISSmetrics (e.g. if there's a problem with your server's Internet connection).

Note that official KISSmetrics' APIs provide many functions (usually four) while we provide just this one and a sum data type. This function alone does the work of record, set, identify and alias.

TODO: Currently there's no support for automatically retrying failed request, you need to retry yourself.

data CallType event ident Source

A type of call that may be made to KISSmetrics. See also http://support.kissmetrics.com/apis/specifications.

Constructors

Record

Record an event.

Fields

eventName :: event

Name of the event being recorded.

identity :: ident

Identity of the person you're aliasing.

Identity of the person whose properties will be changed.

Identity of the person doing the event.

timestamp :: Timestamp

See Timestamp.

See Timestamp.

properties :: [Property]

Properties to be set.

Any additional properties you may want.

SetProps

Set user properties without recording an event.

Fields

identity :: ident

Identity of the person you're aliasing.

Identity of the person whose properties will be changed.

Identity of the person doing the event.

timestamp :: Timestamp

See Timestamp.

See Timestamp.

properties :: [Property]

Properties to be set.

Any additional properties you may want.

Alias

Alias two identities as the same one.

Fields

identity :: ident

Identity of the person you're aliasing.

Identity of the person whose properties will be changed.

Identity of the person doing the event.

identity' :: ident

Other identity you want to alias.

Type classes

class EventName event whereSource

Type class of data types that are event names.

You may just use SimpleText (which is the only instance provided by default), but you may also create your own data type for event names and add an instance of this class.

Methods

fromEventName :: event -> SimpleTextSource

Instances

EventName ByteString

This is the same as SimpleText.

class Identity ident whereSource

Type class of data types that are user identities.

You may just use SimpleText (which is the only instance provided by default), but you may also create your own data type for event names and add an instance of this class.

Methods

fromIdentity :: ident -> SimpleTextSource

Instances

Identity ByteString

This is the same as SimpleText.