Skip to content

Commit

Permalink
url/percent encode query params
Browse files Browse the repository at this point in the history
  • Loading branch information
dmmulroy authored and lpil committed Mar 12, 2024
1 parent dab491b commit 2f67733
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/gleam/http/request.gleam
Original file line number Diff line number Diff line change
Expand Up @@ -156,15 +156,19 @@ pub fn get_query(request: Request(body)) -> Result(List(#(String, String)), Nil)
}
}

// TODO: escape
/// Set the query of the request.
/// Query params will be percent encoded before being added to the Request.
///
pub fn set_query(
req: Request(body),
query: List(#(String, String)),
) -> Request(body) {
let pair = fn(t: #(String, String)) {
string_builder.from_strings([t.0, "=", t.1])
string_builder.from_strings([
uri.percent_encode(t.0),
"=",
uri.percent_encode(t.1),
])
}
let query =
query
Expand Down
5 changes: 5 additions & 0 deletions test/gleam/http/request_test.gleam
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,11 @@ pub fn set_query_test() {
let updated_request = request.set_query(request, empty_query)
updated_request.query
|> should.equal(Some(""))

let query = [#("foo bar", "x y")]
let updated_request = request.set_query(request, query)
updated_request.query
|> should.equal(Some("foo%20bar=x%20y"))
}

pub fn get_req_header_test() {
Expand Down

0 comments on commit 2f67733

Please sign in to comment.