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
|
define_tag(
'getfullforecast',
-namespace='weatherbug_',
-required='key',
-required='zip',
-priority='replace',
-description='Returns a 7-day forecast for the given zip code.'
);
local('url' = 'http://' + #key + '.api.wxbug.net/getFullForecast.aspx');
local('getparams') = array(
'acode' = #key,
'zipcode' = #zip
);
local('response') = include_url(
#url,
-getparams=#getparams
);
#response->replace(' xmlns:aws="http://www.aws.com/aws"','')&replace('aws:','');
local('xmldata') = xml(#response);
local('forecasts') = #xmldata->extract('//forecast');
local('out' = array);
local('fields') = array(
'title',
'short-title',
'image',
'description',
'prediction',
'high',
'low'
);
iterate(#forecasts, local('s'));
#s = xml('<?xml version="1.0" encoding="utf-8" ?>' + #s);
local('map' = map);
iterate(#fields, local('f'));
local('v') = #s->extract('//' + #f + '/text()')->first;
#map->insert(#f = #v);
/iterate;
#out->insert(#map);
/iterate;
return(@#out);
/define_tag;
|