Examples using the How'd They Vote API
These code snippets interact with the API outlined here. If you have a code snippet to contribute to this collection, please submit it using the contact form or mailing list.
PHP
FindMember using JSON: a simple postal code lookup tool which finds a Member of Parliament.
Code:
<?php
$postal_code = '';
if (!empty($_GET['postal_code'])) {
$postal_code = $_GET['postal_code'];
$postal_code = preg_replace('/[^a-zA-Z0-9]/', '', $postal_code);
}
?>
<form action="?" method="get" name="find" id="find">
Postal Code: <input type="text" name="postal_code" size="7" class="inputbox" value="<? print $postal_code; ?>" />
<input type="submit" name="search" value="Search" />
</form>
<p>
<?php
if ($postal_code) {
$json = file_get_contents("http://howdtheyvote.ca/api.php?key=APITESTKEY&call=findmember&house_id=1&format=json&postal_code=$postal_code");
$response = json_decode($json);
if ($response->{'error'}) {
print 'ERROR: '.$response->{'error'};
} else if ($response->{'member'}) {
$mp = $response->{'member'};
print $mp->{'name'};
print '<br>'.$mp->{'party'};
print '<br>'.$mp->{'riding_name'};
print '<br>'.$mp->{'province'};
print '<br>'.$mp->{'edid'};
print '<br>'.$mp->{'email'};
print '<br>'.$mp->{'phone'}.' (ph)';
print '<br>'.$mp->{'fax'}.' (fax)';;
print '<br><a href="'.$mp->{'url'}.'">'.$mp->{'url'}.'</a>';
print '<br><a href="'.$mp->{'website_official'}.'">'.$mp->{'website_official'}.'</a>';
print '<br><a href="'.$mp->{'website'}.'">'.$mp->{'website'}.'</a>';
}
}
?>
</p>
Perl
GetHouses using XML: a quick intro to making a call and parsing XML in Perl.
Code:
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request;
use XML::Twig;
my $key = 'APITESTKEY';
my $lang = 'en';
my $ua = LWP::UserAgent->new;
my $domains = {
'en' => 'http://howdtheyvote.ca',
'fr' => 'http://quivotequoi.ca',
};
my $url = $domains->{$lang}."/api.php?call=gethouses&key=$key";
my $req = HTTP::Request->new(GET => $url);
my $res = $ua->request($req);
die $res->content if !$res->is_success;
my $xml = $res->content;
my $twig = XML::Twig->new;
$twig->parse($xml);
if (my $error = $twig->root->first_descendant('error')) {
print 'ERROR: '.$error->field."\n";
} else {
foreach my $house ($twig->root->children('houses')) {
print 'house_id: '.$house->first_descendant('house_id')->field."\n";
print 'house_name: '.$house->first_descendant('house_name')->field."\n";
print 'url: '.$house->first_descendant('url')->field."\n";
}
}
signaler une erreur sur cette page
