1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
define_type(
'bitly',
-prototype,
-description='Wrapper for the bit.ly URL shortener API.'
);
local(
'login' = string,
'apiKey' = string,
'version' = '2.0.1',
'format' = 'json', // options: json, xml, text
'history' = 1
);
define_tag(
'oncreate',
-req='login',
-req='apiKey',
-opt='format',
-opt='history'
);
self->'login' = #login;
self->'apiKey' = #apiKey;
local_defined('format') ? self->'format' = #format;
local_defined('history') ? self->'history' = #history;
/define_tag;
define_tag(
'send',
-req='method',
-req='params', -type='array',
-encodenone
);
local('getparams') = array(
'login' = self->'login',
'apiKey' = self->'apiKey',
'version' = self->'version',
'format' = self->'format',
'history' = self->'history'
);
#getparams->merge(#params);
local('response') = string;
protect;
#response = string(include_url(
'http://api.bit.ly/' + #method,
-getparams=#getparams,
-connecttimeout=15,
-timeout=15
));
handle_error;
return(map('errorCode' = error_code, 'errorMessage' = error_msg));
/handle_error;
/protect;
if(self->'format' == 'json');
#response = decode_json(#response);
else;
#response = xml_tree(#response);
/if;
return(#response);
/define_tag;
define_tag('_unknowntag');
local('params') = array;
iterate(params, local('i'));
#params->insert(string(#i->first)->removeleading('-')& = #i->second);
/iterate;
return(self->send(tag_name, #params));
/define_tag;
/define_type;
|