From 93ff049e54d3dafce4193729d22281d88718e2e9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Mon, 2 Oct 2023 23:49:09 +0200 Subject: [PATCH] Improved version of url_decode --- src/lib/http/http_server.pl | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/lib/http/http_server.pl b/src/lib/http/http_server.pl index faa76ce5..4c22e497 100644 --- a/src/lib/http/http_server.pl +++ b/src/lib/http/http_server.pl @@ -300,25 +300,21 @@ http_query(http_request(_, _, Queries), Key, Value) :- member(Key-Value, Queries parse_queries([Key-Value|Queries]) --> string_without("=", Key0), - { - phrase(url_decode(Key), Key0) - }, "=", string_without("&", Value0), - { - phrase(url_decode(Value), Value0) - }, "&", - parse_queries(Queries). + parse_queries(Queries), + { + phrase(url_decode(Key), Key0), + phrase(url_decode(Value), Value0) + }. parse_queries([Key-Value]) --> string_without("=", Key0), - { - phrase(url_decode(Key), Key0) - }, "=", string_without(" ", Value0), { + phrase(url_decode(Key), Key0), phrase(url_decode(Value), Value0) }. @@ -329,9 +325,13 @@ parse_queries([]) --> url_decode([Char|Chars]) --> [Char], { - Char \= '%' + Char \= '%', + Char \= (+) }, url_decode(Chars). +url_decode([' '|Chars]) --> + "+", + url_decode(Chars). url_decode([Char|Chars]) --> "%", [A], -- 2.54.0