annotate variant_effect_predictor/Bio/DB/Query/WebQuery.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: WebQuery.pm,v 1.5 2002/12/05 13:46:32 heikki Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::DB::WebQuery.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Lincoln Stein <lstein@cshl.org>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Lincoln Stein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Bio::DB::Query::WebQuery - Helper class for web-based sequence queryies
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 Do not use this class directly. See Bio::DB::QueryI and one of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 implementor classes (such as Bio::DB::GenBankQuery) for information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 Do not use this class directly. See Bio::DB::QueryI and one of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 implementor classes (such as Bio::DB::GenBankQuery) for information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 Those writing subclasses must define _get_params() and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 _parse_response(), and possibly override _request_method().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 User feedback is an integral part of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 evolution of this and other Bioperl modules. Send
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 of the Bioperl mailing lists. Your participation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 Report bugs to the Bioperl bug tracking system to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 help us keep track the bugs and their resolution.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 Bug reports can be submitted via email or the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 =head1 AUTHOR - Lincoln Stein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 Email lstein@cshl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 The rest of the documentation details each of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 object methods. Internal methods are usually
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 package Bio::DB::Query::WebQuery;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 use URI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 use LWP::UserAgent;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 use HTTP::Request::Common;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 use Bio::DB::QueryI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 use vars qw(@ISA $VERSION);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 @ISA = qw(Bio::Root::Root Bio::DB::QueryI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 $VERSION = '0.1';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 Usage : $db = Bio::DB::WebQuery->new(@args)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 Function: create new query object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 Returns : new query object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 Args : -db database (e.g. 'protein')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 -ids array ref of ids (overrides query)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 -verbose turn on verbose debugging
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 This method creates a new query object. Typically you will specify a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 -db and a -query argument. The value of -query is a database-specific
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 string.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 If you provide an array reference of IDs in -ids, the query will be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 ignored and the list of IDs will be used when the query is passed to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 # Borrowed shamelessly from WebDBSeqI. Some of this code should be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 # refactored.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 my $self = $class->SUPER::new(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 my ($query,$ids,$verbose) = $self->_rearrange(['QUERY','IDS','VERBOSE'],@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 $self->throw('must provide one of the the -query or -ids arguments')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 unless defined($query) || defined($ids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 $query ||= join ',',ref($ids) ? @$ids : $ids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 $query && $self->query($query);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 $verbose && $self->verbose($verbose);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 my $ua = new LWP::UserAgent;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $ua->agent(ref($self) ."/$VERSION");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 $self->ua($ua);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 $self->{'_authentication'} = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 =head2 ua
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 Title : ua
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 Usage : my $ua = $self->ua or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 $self->ua($ua)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 Function: Get/Set a LWP::UserAgent for use
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 Returns : reference to LWP::UserAgent Object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 Args : $ua - must be a LWP::UserAgent
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 sub ua {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 my ($self, $ua) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 my $d = $self->{'_ua'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 if( defined $ua && $ua->isa("LWP::UserAgent") ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 $self->{'_ua'} = $ua;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 $d;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 =head2 proxy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Title : proxy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 Usage : $httpproxy = $db->proxy('http') or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 $db->proxy(['http','ftp'], 'http://myproxy' )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 Function: Get/Set a proxy for use of proxy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 Returns : a string indicating the proxy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 Args : $protocol : an array ref of the protocol(s) to set/get
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 $proxyurl : url of the proxy to use for the specified protocol
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 $username : username (if proxy requires authentication)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 $password : password (if proxy requires authentication)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 sub proxy {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 my ($self,$protocol,$proxy,$username,$password) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 return undef if ( !defined $self->ua || !defined $protocol
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 || !defined $proxy );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 $self->authentication($username, $password)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 if ($username && $password);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 return $self->ua->proxy($protocol,$proxy);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 =head2 authentication
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 Title : authentication
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 Usage : $db->authentication($user,$pass)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 Function: Get/Set authentication credentials
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 Returns : Array of user/pass
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 Args : Array or user/pass
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 sub authentication{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 my ($self,$u,$p) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 if( defined $u && defined $p ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 $self->{'_authentication'} = [ $u,$p];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 return @{$self->{'_authentication'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 =head2 ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 Title : ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Usage : @ids = $db->ids([@ids])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 Function: get/set matching ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Returns : array of sequence ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Args : (optional) array ref with new set of ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 sub ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 my $d = $self->{'_ids'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 my $arg = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 $self->{'_ids'} = ref $arg ? $arg : [$arg];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 return $d ? @$d : ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 $self->_fetch_ids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 return @{$self->{'_ids'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 =head2 query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Title : query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 Usage : $query = $db->query([$query])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 Function: get/set query string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 Returns : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 Args : (optional) new query string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 sub query {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 my $d = $self->{'_query'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 $self->{'_query'} = shift if @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $d;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 =head2 _fetch_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 Title : _fetch_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Usage : @ids = $db->_fetch_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 Function: run query, get ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 Returns : array of sequence ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 sub _fetch_ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 $self->_run_query;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 $self->_run_query(1) if $self->_truncated;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $self->throw('Id list has been truncated even after maxids requested')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 if $self->_truncated;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 return @{$self->{'_ids'}} if $self->{'_ids'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 =head2 _run_query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Title : _run_query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Usage : $success = $db->_run_query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 Function: run query, parse results
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 Returns : true if successful
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 sub _run_query {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 my $force = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 # allow the query to be run one extra time if truncated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 return $self->{'_ran_query'} if $self->{'_ran_query'}++ && !$force;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 my $request = $self->_get_request;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 $self->debug("request is ".$request->url) if $self->verbose;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 my $response = $self->ua->request($request);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 return unless $response->is_success;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 $self->debug("response is ".$response->content) if $self->verbose;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 $self->_parse_response($response->content);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 =head2 _truncated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 Title : _truncated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 Usage : $flag = $db->_truncated([$newflag])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 Function: get/set truncation flag
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 Returns : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 Args : new flag
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 Some databases will truncate output unless explicitly asked
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 not to. This flag allows a "two probe" attempt.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 sub _truncated {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 my $d = $self->{'_truncated'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 $self->{'_truncated'} = shift if @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 $d;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 =head2 _get_request
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 Title : _get_request
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 Usage : $http_request = $db->_get_request(@params)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 Function: create an HTTP::Request with indicated parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 Returns : HTTP::Request object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 Args : CGI parameter list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 sub _get_request {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 my ($method,$base,@params) = $self->_request_parameters;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 my $uri = URI->new($base);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 my $request;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 if ($method eq 'get') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 $uri->query_form(@params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 $request = GET $uri;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 $request = POST $uri,\@params;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 $request->proxy_authorization_basic($self->authentication)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 if $self->authentication;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 $request;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 =head2 _parse_response
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 Title : _parse_response
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 Usage : $db->_parse_response($content)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 Function: parse out response
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 Returns : empty
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 Throws : 'unparseable output exception'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 NOTE: This method must be implemented by subclass.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 sub _parse_response {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 my $content = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 $self->throw_not_implemented;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 =head2 _request_parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 Title : _request_parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 Usage : ($method,$base,@params = $db->_request_parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 Function: return information needed to construct the request
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 Returns : list of method, url base and key=>value pairs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 NOTE: This method must be implemented by subclass.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 sub _request_parameters {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 $self->throw_not_implemented;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 1;