Revision 1678
Added by Aaron Marcuse-Kubitza over 12 years ago
digir_client | ||
---|---|---|
1 | 1 |
#!/usr/bin/env python |
2 | 2 |
# A DiGIR client |
3 | 3 |
|
4 |
import os |
|
4 | 5 |
import os.path |
5 | 6 |
import sys |
6 | 7 |
import urllib |
... | ... | |
8 | 9 |
|
9 | 10 |
sys.path.append(os.path.dirname(__file__)+"/../lib") |
10 | 11 |
|
12 |
import dates |
|
11 | 13 |
import opts |
12 | 14 |
import streams |
13 | 15 |
import util |
... | ... | |
30 | 32 |
http://digir.sourceforge.net/schema/conceptual/darwin/2003/1.0/darwin2.xsd"> |
31 | 33 |
<header> |
32 | 34 |
<version>1.0</version> |
33 |
<sendTime>2012-03-29 01:01:33.00Z</sendTime>
|
|
34 |
<source>128.111.220.180</source>
|
|
35 |
<sendTime>[time]</sendTime>
|
|
36 |
<source>[source]</source>
|
|
35 | 37 |
<destination resource="[resource]">[url]</destination> |
36 | 38 |
<type>search</type> |
37 | 39 |
</header> |
38 | 40 |
<search> |
39 | 41 |
<filter> |
40 | 42 |
<equals> |
41 |
<darwin:Kingdom>PLANTAE</darwin:Kingdom>
|
|
43 |
<darwin:Kingdom>plantae</darwin:Kingdom>
|
|
42 | 44 |
</equals> |
43 | 45 |
</filter> |
44 | 46 |
<records limit="[count]" start="[start]"> |
... | ... | |
60 | 62 |
resource = opts.get_env_var('resource', None, env_names) |
61 | 63 |
start = util.cast(int, opts.get_env_var('start', 0, env_names)) |
62 | 64 |
count = util.cast(int, opts.get_env_var('n', 1, env_names)) |
65 |
debug = opts.env_flag('debug', False, env_names) |
|
63 | 66 |
if url == None or resource == None: usage_err() |
64 | 67 |
|
65 |
this_request_xml_template = (request_xml_template.replace('[url]', url) |
|
66 |
.replace('[resource]', resource).replace('[count]', str(count))) |
|
68 |
def clear_line(): sys.stderr.write('\n') |
|
69 |
log_indent = 0 |
|
70 |
def log(msg, line_ending='\n'): |
|
71 |
sys.stderr.write((' '*log_indent)+msg+line_ending) |
|
67 | 72 |
|
68 |
request_xml = this_request_xml_template.replace('[start]', str(start)) |
|
73 |
self_dir = os.path.dirname(__file__) |
|
74 |
source = os.popen(self_dir+"/local_ip").read().strip() |
|
75 |
this_request_xml_template = (request_xml_template |
|
76 |
.replace('[source]', source) |
|
77 |
.replace('[url]', url) |
|
78 |
.replace('[resource]', resource) |
|
79 |
.replace('[count]', str(count)) |
|
80 |
) |
|
81 |
|
|
82 |
time = dates.strftime('%Y-%m-%d %H:%M:%S %Z', dates.now()) |
|
83 |
request_xml = (this_request_xml_template |
|
84 |
.replace('[start]', str(start)) |
|
85 |
.replace('[time]', time) |
|
86 |
) |
|
87 |
if debug: sys.stderr.write(request_xml) |
|
69 | 88 |
this_url = url+'?'+urllib.urlencode({'request': request_xml}) |
70 | 89 |
stream = streams.StreamIter(streams.TimeoutInputStream( |
71 | 90 |
urllib2.urlopen(this_url), timeout)) |
Also available in: Unified diff
digir_client: Set header sendTime, source dynamically. In debug mode, print the request XML.