examples/mc_activity.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Fri, 27 Mar 2009 12:06:19 +0200
changeset 66 542f61e113cb
permissions -rw-r--r--
Modularization, I * activity * attention * avatar * disco * evil * geoloc * ibb * iq * mood * oob * ping * pubsub * tune * mpd * pep
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
66
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     2
local lm       = require 'lm'
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     3
local activity = require 'activity'
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
local pubsub   = require 'pubsub'
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     6
pubsub.handler ( 'http://jabber.org/protocol/activity',
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     7
	function ( from, node, data )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     8
		if not main.yesno ( main.option ( 'lua_pep_notification' ) ) then
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     9
			return true
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
		end
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
		local item = data:child ()
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    12
		local activity, desc
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    13
		while item do
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    14
			if item:name () == 'text' then
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    15
				desc = item:value ()
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    16
			else
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    17
				activity = item:name ()
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    18
				local subitem = item:child ()
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
				if subitem then
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    20
					-- here we can check for non-standard subactivity elements,
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
					-- add subactivity child elements handling
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
					activity = ("%s: %s"):format ( activity, subitem:name () )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
				end
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
			end
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
			item = item:next ()
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
		end
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
		if activity then
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    28
			main.print_info ( from, ("Now %s %s"):format ( activity, desc or '' ) )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    29
		else
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    30
			main.print_info ( from, "Buddy hides his activity" )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    31
		end
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    32
		return true
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    33
	end )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    34
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    35
main.command ( 'activity',
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    36
	function ( args )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
		local a, text = args[1], args[2]
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    38
		local act, subact = a:match ( "(.-)%-(.+)" )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
		if not act then
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    40
			act = a
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
		end
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    42
		activity.publish ( lm.connection.bless ( main.connection () ),
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
			function ()
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
				print ( 'Activity published' )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
			end,
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    46
			function ( mesg )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    47
				print ( 'Error publishing activity: ' .. mesg )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    48
			end, act, subact, text )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
	end, true )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
commands_help['activity'] = "[activity[-specific_activity] [text]]\n\nPublishes your activity.\nNote, that for now it does not checks for activity validity, so, see xep0108 for valid activity values."
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    53
main.add_feature ( 'http://jabber.org/protocol/activity+notify' )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    54
main.add_feature ( 'http://jabber.org/protocol/activity' )
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    55
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    56
-- vim: se ts=4: --