doc/api.mdwn
author Myhailo Danylenko <isbear@ukrpost.net>
Sun, 20 May 2012 22:15:51 +0300
changeset 29 23fa36d480fb
child 30 a66ed0454ca8
permissions -rw-r--r--
Merge pep modules & use events * merge mood, tune, activity, geoloc, avatar * split them into functionality/ui * tune, geoloc: fix timeout bug * geoloc: fix guard unregistering * tune, mood: fix memleaking delayed info * mood: fix non-publish of offline-delayed data * activity: unregister reply handler on disconnect * fix silly copyright typo * update hgignore * v0.0.3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     2
# Events interface
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     3
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
Events are currently designed for useage with pep notifications, but
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
potentially could be used with any notification system, eg a module, that adds
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     6
currently playing song to your status.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     7
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     8
Every module pair (eg pep_tune and tune) use a pair of hooks. One for incoming
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     9
notifications ('*-in') and one for the cases, when server needs to be notified
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
about user state change ('*-out'). Note, that '*-out' causes server
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
notification, not vice versa. In general, these hooks have the same set of fields,
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    12
except that incoming events also have 'from' field, that is mandatory.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    13
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    14
For more clear description of fields and what can be put in there, refer to
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    15
corresponding XEPs.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    16
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    17
* [XEP-0118](http://xmpp.org/extensions/xep-0118.html) - tune
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    18
* [XEP-0107](http://xmpp.org/extensions/xep-0107.html) - mood
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
* [XEP-0108](http://xmpp.org/extensions/xep-0108.html) - activity
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    20
* [XEP-0080](http://xmpp.org/extensions/xep-0080.html) - geoloc
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
## tune-*
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
* argtist
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
* length
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
* rating
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
* source
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
* title
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    28
* track
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    29
* uri
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    30
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    31
## mood-*
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    32
* mood
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    33
* text
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    34
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    35
## activity-*
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    36
* major
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
* minor
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    38
* text
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    40
## geoloc-*
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
* accuracy
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    42
* alt
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
* area
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
* bearing
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
* building
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    46
* country
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    47
* datum
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    48
* description
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
* error
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
* floor
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
* lat
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
* locality
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    53
* lon
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    54
* postalcode
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    55
* region
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    56
* room
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    57
* speed
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    58
* street
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
* text
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    60
* timestamp
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    61
* uri
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    63
# C interface
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    64
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    65
## general conventions
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    66
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    67
### NS_*
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    68
XMLNS namespace constants.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    69
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    70
### HOOK_*
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    71
Hook name constants. Usually are the same as actual hook name, but
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    72
uppercased, with 'HOOK_' added and with underscores instead of dashes.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    73
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    74
### *_request ( to, error )
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    75
Request corresponding data from the jid, specified in 'to'.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    76
'error' may be used for error control. If no error occured,
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    77
and remote side have replied with notification stanza, call
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    78
to one of this functions will eventually result in corresponding
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    79
event '*-in'. Currently there's no way to detect an
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    80
error on the remote side (eg, if it does not support PEP).
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    81
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    82
### *_publish ( ... )
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    83
Publish supplied data as corresponding user's update. Note,
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    84
that this function bypasses event interface, thus, it can
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    85
be used to publish *only* via PEP. In general, it is
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    86
suggested to use event (hooks) interface, as it allows
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    87
multiplexing and non-breaking extensibility.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    88
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    89
## pep
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    90
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    91
### (*pep_xmlns_handler_t) ( from, node, n, id, userdata )
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    92
Type of function to supply as a handler for pep xmlns namespace.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    93
'from' is a jid.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    94
'node' is pep node.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    95
'n' is loudmouth message node object, containing xmlns-specific data.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    96
'userdata' is pointer to data, passed at registration time.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    97
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    98
### pep_register_xmlns_handler ( xmlns, handler, userdata, notify )
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    99
Specify a handler for xmlns namespace.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   100
'userdata' will be directly specified.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   101
'notify' is a function, that may be called for userdata destruction.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   102
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   103
### pep_unregister_xmlns_handler ( xmlns )
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   104
Remove handler from given xmlns namespace.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   105
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   106
## tune
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   107
'tune_publish' takes list of key-value pairs.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   108
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   109
## mood
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   110
'mood_publish' takes two string arguments - mood and mood message.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   111
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   112
## activity
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   113
'activity_publish' takes three string arguments - major activity, minor, and
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   114
activity message.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   115
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   116
## geoloc
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   117
'geoloc_publish' takes list of key-value pairs.
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   118
23fa36d480fb Merge pep modules & use events
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   119
<!-- -->