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

Last change on this file since 32931 was 32931, checked in by davidb, 2 years ago

Sample client from HathiTrust

  • Property svn:executable set to *
File size: 2.2 KB
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 repository browser.