root/other-projects/is-sheet-music-encore/trunk/dapiclient2.pl @ 32931

Revision 32931, 2.2 KB (checked in by davidb, 17 months ago)

Sample client from HathiTrust?

  • Property svn:executable set to *
Line 
1#!/usr/bin/env perl
2
3=head1 NAME
4
5dapiclient_2
6
7=head1 DESCRIPTION
8
9This is an example perl 2-legged oauth client that makes a request to
10the full Data API. Replace OAUTH_CONSUMER_SECRET and
11OAUTH_CONSUMER_KEY (below) with the keys you received from
12http://babel.hathitrust.org/cgi/kgs and MY_IP_ADDRESS by the IP
13address of workstation or server running this script.
14
15It uses a hardcoded URL to request a single page image for a public domain item.
16
17It is intended to aid development of a fully function Data API client
18in Perl or other languages that implement HMAC_SHA1 OAuth libraries.
19
20=head1 SYNOPSIS
21
22At the Unix command line:
23
24  % cd /path/to/dapiclient_2/directory
25  % chmod u+x dapiclient_2
26
27then:
28
29  % curl 'http://yourhost/path_to_client/dapiclient_2' > mdp.39015000000128.png
30
31If your png is corrupt, run without i/o redirection to see the error code:
32
33  % curl 'http://yourhost/path_to_client/dapiclient_2'
34
35or paste the URL to your browser.
36
37=head1 OUTPUT
38
39Stream of data for the above mentioned page image file or error code.
40
41=cut
42
43use strict;
44use warnings;
45
46use CGI;
47use OAuth::Lite::Consumer;
48use OAuth::Lite::AuthMethod;
49
50
51my $access_key = 'OAUTH_CONSUMER_KEY';    # replace with your access_key
52my $secret_key = 'OAUTH_CONSUMER_SECRET'; # replace with your secret_key
53my $ip_address = 'MY_IP_ADDRESS';         # replace with the IP address of your workstation or server
54   
55my $request_url = 'https://babel.hathitrust.org/cgi/htd/volume/pageimage/mdp.39015000000128/1';
56   
57my $consumer = OAuth::Lite::Consumer->new
58  (
59   consumer_key    => $access_key,
60   consumer_secret => $secret_key,
61   auth_method     => OAuth::Lite::AuthMethod::URL_QUERY,
62  );
63
64my $response = $consumer->request
65  (
66   method  => 'GET',
67   url     => $request_url,
68   params  => {
69               v => '2',
70               format => 'png',
71               ip => $ip_address,
72              },
73  );
74
75my $success = $response->is_success;
76my $content_type = 'image/png';
77
78unless ($success) {
79    $content_type = 'text/html';
80}
81
82print CGI::header(
83                  Content_type => $content_type,
84                  Status => $response->status_line,
85                 );
86
87unless ($success) {
88    print "<p><b>Error: " . $response->content . "</b><br/>";
89}
90else {
91    print $response->content;
92}
93
94exit $success;
95
96
97
Note: See TracBrowser for help on using the browser.