Subj : Re: Synchronet Javascript and reading XML
To   : echicken
From : KenDB3
Date : Sat Jul 30 2016 01:01 am

> > I notice in the IRC bot code that you can get banned for hitting the web
> > page too often.

> Yes, this is something that I recall hearing about in the past.  I guess you
> get x number of hits per day.
>
> > Would there be a way to bring in the XML data without an HTTPRequest from
> > a local file? Say

> Sure.  I would do something like this:

> load('http.js');

> var url = 'http://www.hamqsl.com/solarxml.php';
> var file = system.data_dir + 'solardata.xml';
> var age = 43200; // Seconds

> // Fetch data via HTTP and write to file specified above
> function getSolarData() {
>   var sd = (new HTTPRequest()).Get(url);
>   var f = new File(file);
>   f.open('w');
>   f.write(sd);
>   f.close();
> }

> // Read data from local file and return parsed XML object
> function readSolarData() {
>  var f = new File(file);
>  f.open('r');
>  var sd = new XML(f.read().replace(/<\?[^?]*\?>/g, ''));
>  f.close();
>  return sd;
> }

> // Fetch new data if local file timestamp less than file age specified above
> if (!file_exists(file) || time() - file_utime(file) > 43200) getSolarData();

> // Read the current data on hand
> var sd = readSolarData();

> // Now start printing out that fascinating solar data and your happy/sad sun
> face

> It would be worth throwing in some try ... catch blocks somewhere in there,
> because the HTTP load or XML parsing portions may fail for a variety of
> reasons.

> You could also move the data-fetching part into a separate script and run it
> on a schedule once, twice, or however many times per day that you want, then
> the user facing script just loads whatever data is in the file that the
> other script writes to.



Thanks again EC, it is much appreciated. :-)

~KenDB3