Skip to content

Commit

Permalink
Add default content-type for restjson
Browse files Browse the repository at this point in the history
  • Loading branch information
DyfanJones authored Feb 21, 2024
2 parents ab92d3d + d6f1de7 commit 1f20488
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 27 deletions.
48 changes: 21 additions & 27 deletions paws.common/R/handlers_rest.R
Original file line number Diff line number Diff line change
Expand Up @@ -14,33 +14,30 @@ rest_build_location_elements <- function(request, values, build_get_query) {

request$http_request$url$raw_path <- request$http_request$url$path

values <- values[lengths(values) > 0]
for (field_name in names(values)) {
field <- values[[field_name]]

if (is_valid(field)) {
name <- tag_get(field, "locationName")
if (name == "") {
name <- field_name
}
name <- tag_get(field, "locationName")
if (name == "") {
name <- field_name
}

if (tag_get(field, "ignore") != "") {
next
}
if (tag_get(field, "ignore") != "") {
next
}

location <- tag_get(field, "location")
if (location == "headers") {
request$http_request$header <- rest_build_header_map(request$http_request$header, field)
} else if (location == "header") {
request$http_request$header <- rest_build_header(request$http_request$header, field, name)
} else if (location == "uri") {
request$http_request$url <- rest_build_uri(request$http_request$url, field, name)
} else if (location == "querystring") {
query <- rest_build_query_string(query, field, name)
} else {
if (build_get_query) {
query <- rest_build_query_string(query, field, name)
}
}
location <- tag_get(field, "location")
if (location == "headers") {
request$http_request$header <- rest_build_header_map(request$http_request$header, field)
} else if (location == "header") {
request$http_request$header <- rest_build_header(request$http_request$header, field, name)
} else if (location == "uri") {
request$http_request$url <- rest_build_uri(request$http_request$url, field, name)
} else if (location == "querystring") {
query <- rest_build_query_string(query, field, name)
} else if (build_get_query) {
query <- rest_build_query_string(query, field, name)
}
}

Expand Down Expand Up @@ -90,9 +87,8 @@ rest_build_query_string <- function(query, field, name) {
}

rest_build_body <- function(request, values) {
field <- values
if (!is.null(field)) {
payload_name <- tag_get(field, "payload")
if (!is.null(values)) {
payload_name <- tag_get(values, "payload")
if (payload_name != "") {
payload <- values[[payload_name]]
t <- tag_get(payload, "type")
Expand All @@ -101,8 +97,6 @@ rest_build_body <- function(request, values) {
request <- set_body(request, as.character(payload))
} else if (t == "blob") {
request <- set_body(request, payload)
} else {
stop()
}
}
}
Expand Down
24 changes: 24 additions & 0 deletions paws.common/R/handlers_restjson.R
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,33 @@ restjson_build <- function(request) {
if (t == "structure" || t == "") {
request <- jsonrpc_build(request)
}
# Developed from boto3:
# https://github.com/boto/botocore/blob/d5b2e4ab4bc4ad84f8e0e568e70ddc8ab7f094a8/botocore/serialize.py#L671-L700
if (has_streaming_payload(request, t)) {
headers <- request[["http_request"]][["header"]]
if (is.null(headers[["Content-Type"]])) {
request[["http_request"]][["header"]][["Content-Type"]] <- "application/json"
}
if (is.null(headers[["Accept"]])) {
request[["http_request"]][["header"]][["Accept"]] <- "application/json"
}
}
return(request)
}

has_streaming_payload <- function(request, type) {
values <- request$params
if (!is.null(values)) {
payload_name <- tag_get(values, "payload")
if (payload_name != "") {
if(length(values[[payload_name]]) > 0 && type %in% c('blob', 'string')) {
return(TRUE)
}
}
}
return(FALSE)
}

# Unmarshal metadata from a REST JSON protocol API response.
restjson_unmarshal_meta <- function(request) {
request <- rest_unmarshal_meta(request)
Expand Down

0 comments on commit 1f20488

Please sign in to comment.