#!/usr/bin/tclsh

set username [lindex $argv 0]
set servername "nes.ru"
set given [lindex $argv 1]
set family [lindex $argv 2]
set orgname "New Economic School"

proc xmlelement {tag args} {
    set attrs {}
    set children {}
    foreach {key val} $args {
	switch -- $key {
	    -attr {
		lappend attrs "{\"[lindex $val 0]\", \"[lindex $val 1]\"}"
	    }
	    -cdata {
		lappend children "{xmlcdata, \"$val\"}"
	    }
	    -subtag {
		lappend children $val
	    }
	}
    }
    set sattrs [join $attrs ", "]
    set schildren [join $children ", "]
    return "{xmlelement, \"$tag\", \[$sattrs\], \[$schildren\]}"
}

proc jid {username servername} {
    return "{jid, \"$username\", \"$servername\", \"\", \"$username\", \"$servername\", \"\"}"
}

proc query {subel} {
    return "{iq, \"\", set, \"\", \"en\", $subel}"
}

set vCard [xmlelement vCard \
	       -attr {xmlns vcard-temp} \
	       -subtag [xmlelement FN -cdata "$given $family"] \
	       -subtag [xmlelement N \
			    -subtag [xmlelement FAMILY -cdata $family] \
			    -subtag [xmlelement GIVEN -cdata $given]] \
	       -subtag [xmlelement ORG \
			    -subtag [xmlelement ORGNAME -cdata $orgname]]]

set jid [jid $username $servername]

set query [query $vCard]

set hostname [lindex [split [info hostname] .] 0]

puts -nonewline "$username@$servername: "
set res [exec erl -sname vcards << \
	     "rpc:call(ejabberd@$hostname, mod_vcard, process_sm_iq, \[$jid, $jid, $query\])."]
if {[string first result $res] >= 0} {
    puts OK
} else {
    puts Failed
    puts $res
}


