author | Myhailo Danylenko <isbear@ukrpost.net> |
Fri, 05 Mar 2010 19:15:08 +0200 | |
changeset 92 | 5d691423c8a6 |
parent 70 | e43e386c8a33 |
child 99 | ed4676536ed9 |
permissions | -rw-r--r-- |
62 | 1 |
|
70 | 2 |
local lm = require 'lm' |
3 |
local vcard = require 'lm.vcard' |
|
4 |
local base64 = require 'base64' |
|
5 |
local mime = require 'mime-type' |
|
67
d33ca5572e91
Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
6 |
|
68
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
7 |
main.command ( 'vcard-temp', |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
8 |
function ( args ) |
70 | 9 |
local who |
10 |
local action = args[1] |
|
11 |
local conn = lm.connection.bless ( main.connection () ) |
|
12 |
if not action then |
|
13 |
who = conn:jid():gsub ( '/.*', '' ) |
|
14 |
elseif action == 'photo' then |
|
15 |
local file = args[2] |
|
16 |
if not file then |
|
17 |
print ( 'You must specify filename' ) |
|
18 |
return |
|
19 |
end |
|
20 |
who = conn:jid():gsub ( '/.*', '' ) |
|
21 |
vcard.retrieve ( conn, who, |
|
22 |
function ( form, submit, reject ) |
|
23 |
local h = io.open ( file, 'r' ) |
|
24 |
if not h then |
|
25 |
print ( 'Cannot open file ' .. file ) |
|
26 |
reject ( form, |
|
27 |
function () |
|
28 |
print ( 'Photo publication cancelled' ) |
|
29 |
end, |
|
30 |
function ( mesg ) |
|
31 |
print ( 'Photo publication cancellation error: ' .. mesg ) |
|
32 |
end ) |
|
33 |
return |
|
34 |
end |
|
35 |
local data = h:read ( '*a' ) |
|
36 |
h:close () |
|
37 |
local mtype = mime.type ( file ) |
|
38 |
local ptype = form:field ( 'PHOTO/TYPE' ) |
|
39 |
if ptype then |
|
40 |
ptype:value ( mtype ) |
|
41 |
else |
|
42 |
form:add ( 'PHOTO/TYPE', { value = mtype } ) |
|
43 |
end |
|
44 |
local pdata = form:field ( 'PHOTO/BINVAL' ) |
|
45 |
if pdata then |
|
46 |
pdata:value ( base64.encode ( data ) ) |
|
47 |
else |
|
48 |
form:add ( 'PHOTO/BINVAL', { value = base64.encode ( data ) } ) |
|
49 |
end |
|
50 |
submit ( form, |
|
51 |
function () |
|
52 |
print ( 'Photo published' ) |
|
53 |
end, |
|
54 |
function ( mesg ) |
|
55 |
print ( 'Photo publication error: ' .. mesg ) |
|
56 |
end ) |
|
57 |
end, |
|
58 |
function ( mesg ) |
|
59 |
print ( 'Vcard obtaining error: ' .. mesg ) |
|
60 |
end ) |
|
61 |
return |
|
62 |
elseif action == '.' then |
|
63 |
who = main.current_buddy () |
|
64 |
else |
|
65 |
who = action |
|
66 |
end |
|
67 |
vcard.retrieve ( conn, who, |
|
68
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
68 |
function ( form, submit, reject ) |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
69 |
insert_form ( form, |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
70 |
function ( form ) |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
71 |
submit ( form, |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
72 |
function () |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
73 |
print ( 'Vcard changed' ) |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
74 |
end, |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
75 |
function ( mesg ) |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
76 |
print ( 'Vcard changing error: ' .. mesg ) |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
77 |
end ) |
62 | 78 |
end, |
68
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
79 |
function ( form ) |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
80 |
reject ( form, |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
81 |
function () |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
82 |
print ( 'Vcard changing cancelled' ) |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
83 |
end, |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
84 |
function ( mesg ) |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
85 |
print ( 'Vcard changing cancellation error: ' .. mesg ) |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
86 |
end ) |
62 | 87 |
end ) |
68
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
88 |
end, |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
89 |
function ( mesg ) |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
90 |
print ( 'Vcard obtaining error: ' .. mesg ) |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
91 |
end ) |
742878c74b8e
Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
92 |
end, true, 'jid' ) |
62 | 93 |
|
70 | 94 |
commands_help['vcard-temp'] = '[photo filename | . | jid]\n\nObtains vcard (as a form, but you may not submit it). Without arguments obtains your own vcard. "." means current buddy.\nYou can also publish your photo from file, that will automatically get your vcard, put a data into it and submit to server.' |
95 |
||
62 | 96 |
-- vim: se ts=4: -- |