From 3cabda8c48dfe559e3f707c2750036247988d9d3 Mon Sep 17 00:00:00 2001 From: Matthieu Huin Date: Tue, 13 Aug 2013 17:58:55 +0200 Subject: Allow custom headers when using swift download (CLI) This fixes bug #1051046 A repeatable option, --header or -H, is added so a user can specify custom headers such as Range or If-Modified-Since when downloading an object with the swift CLI. Change-Id: I1f7dcf64cf625f2e5a4488c210894cfe6e0d5974 --- bin/swift | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'bin') diff --git a/bin/swift b/bin/swift index 4c00b6c..baee9ec 100755 --- a/bin/swift +++ b/bin/swift @@ -265,6 +265,11 @@ Optional arguments: Number of threads to use for deleting containers --no-download Perform download(s), but don't actually write anything to disk + --header + Adds a customized request header to the query, like + "Range" or "If-Match". This argument is repeatable. + Example --header "content-type:text/plain" + '''.strip("\n") @@ -293,6 +298,13 @@ def st_download(parser, args, thread_manager): '', '--no-download', action='store_true', default=False, help="Perform download(s), but don't actually write anything to disk") + parser.add_option( + '-H', '--header', action='append', dest='header', + default=[], + help='Specify a request header, as --header NAME:VALUE. ' + 'Adds a customized request header to the query, like "Range" or ' + '"If-Match". This argument is repeatable. Example' + ' --header "content-type:text/plain"') (options, args) = parse_args(parser, args) args = args[1:] if options.out_file == '-': @@ -303,6 +315,7 @@ def st_download(parser, args, thread_manager): thread_manager.error('Usage: %s download %s\n%s', basename(argv[0]), st_download_options, st_download_help) return + req_headers = split_headers(options.header, '', thread_manager) def _download_object(queue_arg, conn): if len(queue_arg) == 2: @@ -315,7 +328,8 @@ def st_download(parser, args, thread_manager): try: start_time = time() headers, body = \ - conn.get_object(container, obj, resp_chunk_size=65536) + conn.get_object(container, obj, resp_chunk_size=65536, + headers=req_headers) header_receipt = time() content_type = headers.get('content-type') if 'content-length' in headers: -- cgit v1.2.1