examples/geoloc.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Wed, 28 Nov 2012 20:17:53 +0200
changeset 146 04d19c9c1196
parent 68 742878c74b8e
permissions -rw-r--r--
Fix module loading problem
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
59
4660c4f10ef1 Pep splitting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     2
local lm     = require 'lm'
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     3
local geoloc = require 'lm.geoloc'
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     4
local pubsub = require 'lm.pubsub'
59
4660c4f10ef1 Pep splitting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     6
pubsub.handler ( 'http://jabber.org/protocol/geoloc',
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     7
	function ( from, node, data )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     8
		if not main.yesno ( main.option ( 'lua_pep_notification' ) ) then
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     9
			return true
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    10
		end
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    11
		local item = data:child ()
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    12
		local text = ''
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    13
		while item do
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    14
			text = ("%s\n- %s: %s"):format ( text, item:name (), item:value () or '' )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    15
			item = item:next ()
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    16
		end
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    17
		if text ~= '' then
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    18
			text = 'Now at:' .. text
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    19
		else
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    20
			text = 'Now in unknown location'
59
4660c4f10ef1 Pep splitting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
		end
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    22
		main.print_info ( from, text )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    23
		return true
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    24
	end )
59
4660c4f10ef1 Pep splitting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    26
main.command ( 'location',
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    27
	function ( args )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    28
		geoloc.publish ( lm.connection.bless ( main.connection () ),
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    29
			function ()
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    30
				print ( 'Geolocation published' )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    31
			end,
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    32
			function ( mesg )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    33
				print ( 'Error geolocation publishing: ' .. mesg )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    34
			end, args )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    35
	end, true )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    36
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    37
commands_help['location'] = "[-key value [-key value ...]]\n\nPublishes your current geolocation.\nValid keys are accuracy, alt, area, bearing, building, country, datum, description, error, floor, lat, locality, lon, postalcode, region, room, speed, street, text, timestamp and uri, according to xep0080."
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    38
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    39
main.add_feature ( 'http://jabber.org/protocol/geoloc+notify' )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    40
main.add_feature ( 'http://jabber.org/protocol/geoloc' )
59
4660c4f10ef1 Pep splitting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
4660c4f10ef1 Pep splitting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    42
-- vim: se ts=4: --