diff --git a/src/S3.jl b/src/S3.jl index e887f1a192..8ebb53eeb0 100644 --- a/src/S3.jl +++ b/src/S3.jl @@ -26,7 +26,7 @@ type RequestOptions ostream::Union{IO, String, Void} auto_content_type::Bool - RequestOptions(; blocking=true, query_params=Array(Tuple,0), request_timeout=def_rto, callback=null_cb, content_type="", headers=Array(Tuple,0), ostream=nothing, auto_content_type=true) = + RequestOptions(; blocking=true, query_params=Array{Tuple}(0), request_timeout=def_rto, callback=null_cb, content_type="", headers=Array{Tuple}(0), ostream=nothing, auto_content_type=true) = new(blocking, query_params, request_timeout, callback, content_type, headers, ostream, auto_content_type) end @@ -42,9 +42,9 @@ end -macro req_n_process(resp_obj_type) +macro req_n_process(env, ro, resp_obj_type) quote - s3_resp = do_request(env, ro) + s3_resp = do_request($(esc(env)), $(esc(ro))) if (isa(s3_resp.obj, String) && (length(s3_resp.obj) > 0)) s3_resp.pd = LightXML.root(LightXML.parse_string(s3_resp.obj)) s3_resp.obj = $(esc(resp_obj_type))(s3_resp.pd) @@ -99,7 +99,7 @@ export RO function list_all_buckets(env::AWSEnv) ro = RO(:GET, "", "") - @req_n_process(ListAllMyBucketsResult) + @req_n_process(env, ro, ListAllMyBucketsResult) end @@ -156,21 +156,21 @@ function get_bkt(env::AWSEnv, bkt::String; options::GetBucketOptions=GetBucketOp ro = RO(:GET, bkt, "") ro.sub_res=get_subres(Tuple[], options) - @req_n_process(ListBucketResult) + @req_n_process(env, ro, ListBucketResult) end function get_bkt_acl(env::AWSEnv, bkt::String) ro = RO(:GET, bkt, "") ro.sub_res=[("acl", "")] - @req_n_process(AccessControlPolicy) + @req_n_process(env, ro, AccessControlPolicy) end function get_bkt_cors(env::AWSEnv, bkt::String) ro = RO(:GET, bkt, "") ro.sub_res=[("cors", "")] - @req_n_process(CORSConfiguration) + @req_n_process(env, ro, CORSConfiguration) end function get_bkt_lifecycle(env::AWSEnv, bkt::String) @@ -195,28 +195,28 @@ function get_bkt_location(env::AWSEnv, bkt::String) ro = RO(:GET, bkt, "") ro.sub_res=[("location", "")] - @req_n_process(LocationConstraint) + @req_n_process(env, ro, LocationConstraint) end function get_bkt_logging(env::AWSEnv, bkt::String) ro = RO(:GET, bkt, "") ro.sub_res=[("logging", "")] - @req_n_process(BucketLoggingStatus) + @req_n_process(env, ro, BucketLoggingStatus) end function get_bkt_notification(env::AWSEnv, bkt::String) ro = RO(:GET, bkt, "") ro.sub_res=[("notification", "")] - @req_n_process(NotificationConfiguration) + @req_n_process(env, ro, NotificationConfiguration) end function get_bkt_tagging(env::AWSEnv, bkt::String) ro = RO(:GET, bkt, "") ro.sub_res=[("tagging", "")] - @req_n_process(Tagging) + @req_n_process(env, ro, Tagging) end @@ -225,21 +225,21 @@ function get_bkt_object_versions(env::AWSEnv, bkt::String; options::GetBucketObj ro = RO(:GET, bkt, "") ro.sub_res=get_subres([("versions", "")], options) - @req_n_process(ListVersionsResult) + @req_n_process(env, ro, ListVersionsResult) end function get_bkt_request_payment(env::AWSEnv, bkt::String) ro = RO(:GET, bkt, "") ro.sub_res=[("requestPayment", "")] - @req_n_process(RequestPaymentConfiguration) + @req_n_process(env, ro, RequestPaymentConfiguration) end function get_bkt_versioning(env::AWSEnv, bkt::String) ro = RO(:GET, bkt, "") ro.sub_res=[("versioning", "")] - @req_n_process(VersioningConfiguration) + @req_n_process(env, ro, VersioningConfiguration) end function get_bkt_website(env::AWSEnv, bkt::String) @@ -308,7 +308,7 @@ function get_bkt_multipart_uploads(env::AWSEnv, bkt::String; options::GetBucketU ro = RO(:GET, bkt, "") ro.sub_res=get_subres([("uploads", "")], options) - @req_n_process(ListMultipartUploadsResult) + @req_n_process(env, ro, ListMultipartUploadsResult) end @@ -461,7 +461,7 @@ function del_object_multi(env::AWSEnv, bkt::String, delset::DeleteObjectsType; m ro.body= xml(delset) if (mfa != "") ro.amz_hdrs = [("mfa", mfa)] end - @req_n_process(DeleteResult) + @req_n_process(env, ro, DeleteResult) end @@ -484,7 +484,7 @@ function get_object_acl(env::AWSEnv, bkt::String, key::String; version_id::Strin ro.sub_res=[("acl", "")] if (version_id != "") push!(ro.sub_res, ("versionId", version_id)) end - @req_n_process(AccessControlPolicy) + @req_n_process(env, ro, AccessControlPolicy) end function get_object_torrent(env::AWSEnv, bkt::String, key::String, out::Union{IO, String}) # out is either an IOStream or a filename @@ -538,7 +538,7 @@ function put_object(env::AWSEnv, bkt::String, key::String, data:: Union{IO, Stri ro.cont_typ = "application/octet-stream" ro.amz_hdrs = amz_headers(Tuple[], options) - ro.http_hdrs = http_headers(Array(Tuple, 0), options) + ro.http_hdrs = http_headers(Array{Tuple}(0), options) if (content_type != "") ro.cont_typ = content_type end if isa(data, String) @@ -580,18 +580,18 @@ function copy_object(env::AWSEnv, dest_bkt::String, dest_key::String, options::C ro.sub_res=[("versionId", version_id)] end - @req_n_process(CopyObjectResult) + @req_n_process(env, ro, CopyObjectResult) end function initiate_multipart_upload(env::AWSEnv, bkt::String, key::String; content_type="", options::PutObjectOptions=PutObjectOptions()) ro = RO(:POST, bkt, key) ro.cont_typ = "application/octet-stream" ro.amz_hdrs = amz_headers(Tuple[], options) - ro.http_hdrs = http_headers(Array(Tuple, 0), options) + ro.http_hdrs = http_headers(Array{Tuple}(0), options) if (content_type != "") ro.cont_typ = content_type end ro.sub_res=[("uploads", "")] - @req_n_process(InitiateMultipartUploadResult) + @req_n_process(env, ro, InitiateMultipartUploadResult) end function upload_part(env::AWSEnv, bkt::String, key::String, part_number::String, upload_id::String, data:: Union{IO, String, Tuple}) @@ -620,7 +620,7 @@ function copy_upload_part(env::AWSEnv, bkt::String, key::String, part_number::St ro.sub_res = [("partNumber", "$(part_number)"), ("uploadId", "$(upload_id)")] ro.amz_hdrs = amz_headers(options) - @req_n_process(CopyPartResult) + @req_n_process(env, ro, CopyPartResult) end @@ -631,7 +631,7 @@ function complete_multipart_upload(env::AWSEnv, bkt::String, key::String, upload ro.body = xml("CompleteMultipartUpload", part_ids) - @req_n_process(CompleteMultipartUploadResult) + @req_n_process(env, ro, CompleteMultipartUploadResult) end @@ -651,7 +651,7 @@ function list_upload_parts(env::AWSEnv, bkt::String, key::String, ro = RO(:GET, bkt, key) ro.sub_res = [("uploadId", "$(upload_id)"), ("max-parts", "$max_parts"), ("part-number-marker", "$part_number_marker")] - @req_n_process(ListPartsResult) + @req_n_process(env, ro, ListPartsResult) end function do_request(env::AWSEnv, ro::RO; conv_to_string=true) diff --git a/src/ec2_simple.jl b/src/ec2_simple.jl index 50fae6c436..1d4af130aa 100644 --- a/src/ec2_simple.jl +++ b/src/ec2_simple.jl @@ -7,7 +7,7 @@ export ec2_basic -flatten_params(d::Dict) = flatten_params(Array(Tuple, 0), "", d) +flatten_params(d::Dict) = flatten_params(Array{Tuple}(0), "", d) function flatten_params(ft::Array, pfx::String, d::Dict) for (k, v) in collect(d) if isa(v, Array) @@ -128,7 +128,7 @@ function generate_sshnames(hostnames, num_workers, workers_per_instance, use_pub end else # distribute it equally across available hosts - nwmap = Array(Tuple, 0) + nwmap = Array{Tuple}(0) for i in 1:length(hostnames) host = hostnames[i][idx] push!(nwmap, (host, round(Int, floor(num_workers/num_hosts)))) diff --git a/src/s3_types.jl b/src/s3_types.jl index e1300e07c7..47601ee2ec 100644 --- a/src/s3_types.jl +++ b/src/s3_types.jl @@ -10,9 +10,9 @@ xml_hdr(name) = "<$(name) xmlns=\"http xml_ftr(name) = "" -macro add_amz_hdr(name, value) +macro add_amz_hdr(hdrs, name, value) quote - if ($(esc(value)) != nothing) push!(hdrs, ("x-amz-" * $(esc(name)), string($(esc(value))) )) end + if ($(esc(value)) != nothing) push!($(esc(hdrs)), ("x-amz-" * $(esc(name)), string($(esc(value))) )) end end end @@ -643,10 +643,10 @@ type CopyMatchOptions end end function amz_headers(hdrs, o::CopyMatchOptions) - @add_amz_hdr("copy-source-if-match", o.if_match) - @add_amz_hdr("copy-source-if-none-match", o.if_none_match) - @add_amz_hdr("copy-source-if-unmodified-since", o.if_unmodified_since) - @add_amz_hdr("copy-source-if-modified-since", o.if_modified_since) + @add_amz_hdr(hdrs, "copy-source-if-match", o.if_match) + @add_amz_hdr(hdrs, "copy-source-if-none-match", o.if_none_match) + @add_amz_hdr(hdrs, "copy-source-if-unmodified-since", o.if_unmodified_since) + @add_amz_hdr(hdrs, "copy-source-if-modified-since", o.if_modified_since) hdrs end export S3PartTag @@ -685,7 +685,7 @@ end function amz_headers(hdrs, o::S3_ACL) # Either a canned acl or specific acls (but not both) are supported if o.acl != nothing - @add_amz_hdr("acl", o.acl) + @add_amz_hdr(hdrs, "acl", o.acl) else add_acl_grantee(hdrs, "grant-read", o.grant_read) add_acl_grantee(hdrs, "grant-write", o.grant_write) @@ -698,7 +698,7 @@ end function add_acl_grantee(hdrs, xamz_name::String, arr::Vector{S3_ACL_Grantee}) for a in arr - @add_amz_hdr(xamz_name, hdr_str(a)) + @add_amz_hdr(hdrs, xamz_name, hdr_str(a)) end hdrs end @@ -724,16 +724,16 @@ type CopyObjectOptions end function amz_headers(hdrs, o::CopyObjectOptions) - @add_amz_hdr("copy-source", o.copy_source) - @add_amz_hdr("metadata-directive", o.metadata_directive) + @add_amz_hdr(hdrs, "copy-source", o.copy_source) + @add_amz_hdr(hdrs, "metadata-directive", o.metadata_directive) if (o.match_options != nothing) hdrs = amz_headers(hdrs, o.match_options) end - @add_amz_hdr("server-side-encryption", o.server_side_encryption) - @add_amz_hdr("storage-class", o.storage_class) - @add_amz_hdr("website-redirect-location", o.website_redirect_location) + @add_amz_hdr(hdrs, "server-side-encryption", o.server_side_encryption) + @add_amz_hdr(hdrs, "storage-class", o.storage_class) + @add_amz_hdr(hdrs, "website-redirect-location", o.website_redirect_location) if o.acl != nothing hdrs = amz_headers(hdrs, o.acl) @@ -752,7 +752,7 @@ type CopyUploadPartOptions end function amz_headers(o::CopyUploadPartOptions) hdrs = [("x-amz-copy-source", o.copy_source)] - @add_amz_hdr("source-range", o.source_range) + @add_amz_hdr(hdrs, "source-range", o.source_range) hdrs = (o.match_options != nothing) ? amz_headers(hdrs, o.match_options) : hdrs hdrs end @@ -784,13 +784,13 @@ end function amz_headers(hdrs, o::PutObjectOptions) if (o.meta != nothing) for t in collect(o.meta) - @add_amz_hdr("meta-" * t[1], t[2]) + @add_amz_hdr(hdrs, "meta-" * t[1], t[2]) end end - @add_amz_hdr("server-side-encryption", o.server_side_encryption) - @add_amz_hdr("storage-class", o.storage_class) - @add_amz_hdr("website-redirect-location", o.website_redirect_location) + @add_amz_hdr(hdrs, "server-side-encryption", o.server_side_encryption) + @add_amz_hdr(hdrs, "storage-class", o.storage_class) + @add_amz_hdr(hdrs, "website-redirect-location", o.website_redirect_location) if o.acl != nothing hdrs = amz_headers(hdrs, o.acl) diff --git a/src/sign.jl b/src/sign.jl index 830aa72582..dd29e8d0c1 100644 --- a/src/sign.jl +++ b/src/sign.jl @@ -81,7 +81,7 @@ function signature_version_4(env::AWSEnv, service, use_post, request_parameters) if use_post ## payload = urlencode_form(request_parameters) payload = Requests.format_query_str(request_parameters) - request_parameters = Array(Tuple, 0) + request_parameters = Array{Tuple}(0) end method = use_post ? "POST" : "GET"