fixeria has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41124?usp=email )
Change subject: library/HTTP_Adapter: do not hard-code 'Content-Type'
......................................................................
library/HTTP_Adapter: do not hard-code 'Content-Type'
* Do not send `Content-Type` when request contains no body.
** This is wrong and some servers would reject such a request.
* Allow passing custom `Content-Type` to
** `f_http_tx_request()` and
** `f_http_transact()`.
* Use `application/json` by default.
Change-Id: Ie35ffc56b4fedc0b4d8c4a689a2232b515b7b326
---
M library/HTTP_Adapter.ttcn
1 file changed, 14 insertions(+), 6 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/24/41124/1
diff --git a/library/HTTP_Adapter.ttcn b/library/HTTP_Adapter.ttcn
index ab5e6b1..8f15958 100644
--- a/library/HTTP_Adapter.ttcn
+++ b/library/HTTP_Adapter.ttcn
@@ -73,6 +73,7 @@
function f_ts_HTTP_Header(template (omit) charstring body := omit,
template (omit) octetstring binary_body := omit,
+ template (omit) charstring content_type := omit,
template (omit) charstring host := omit,
HeaderLines custom_hdr := { })
return template (value) HeaderLines {
@@ -87,7 +88,9 @@
if (not istemplatekind(host, "omit")) {
hdr := hdr & {valueof(ts_HeaderLine("Host", valueof(host)))};
}
- hdr := hdr & {{ header_name := "Content-Type", header_value :=
"application/json" }};
+ if (not istemplatekind(content_type, "omit")) {
+ hdr := hdr & {valueof(ts_HeaderLine("Content-Type",
valueof(content_type)))};
+ }
if (not istemplatekind(body, "omit")) {
hdr := hdr & {valueof(ts_HeaderLine("Content-Length",
int2str(lengthof(body))))};
}
@@ -108,6 +111,7 @@
template (value) HTTPMessage ts_HTTP_Req(charstring url,
charstring method := "GET",
template (omit) charstring body := omit,
+ template (omit) charstring content_type := omit,
integer v_maj := 1, integer v_min := 1,
charstring host,
HeaderLines custom_hdr := { },
@@ -118,7 +122,7 @@
uri := url,
version_major := v_maj,
version_minor := v_min,
- header := f_ts_HTTP_Header(body, omit, host, custom_hdr),
+ header := f_ts_HTTP_Header(body, omit, content_type, host, custom_hdr),
body := f_ts_body_or_empty(body)
}
}
@@ -133,6 +137,7 @@
template (value) HTTPMessage ts_HTTP_Req_Bin(charstring url,
charstring method := "GET",
template (omit) octetstring body := omit,
+ template (omit) charstring content_type := omit,
integer v_maj := 1, integer v_min := 1,
charstring host,
HeaderLines custom_hdr := { },
@@ -143,7 +148,7 @@
uri := url,
version_major := v_maj,
version_minor := v_min,
- header := f_ts_HTTP_Header(omit, body, host, custom_hdr),
+ header := f_ts_HTTP_Header(omit, body, content_type, host, custom_hdr),
body := f_ts_body_or_empty_bin(body)
}
}
@@ -177,6 +182,7 @@
function f_http_tx_request(charstring url, charstring method := "GET",
template (omit) charstring body := omit,
template (omit) octetstring binary_body := omit,
+ charstring content_type := "application/json",
HeaderLines custom_hdr := { },
float tout := 2.0,
template (omit) integer client_id := omit,
@@ -223,11 +229,12 @@
if (not istemplatekind(body, "omit") and istemplatekind(binary_body,
"omit")) {
/* HTTP message with ASCII content */
- HTTP.send(ts_HTTP_Req(url, method, body, host := use_http_pars.http_host &
":" & int2str(use_http_pars.http_port),
+ HTTP.send(ts_HTTP_Req(url, method, body, content_type,
+ host := use_http_pars.http_host & ":" &
int2str(use_http_pars.http_port),
custom_hdr := custom_hdr, client_id := use_client_id));
} else if (not istemplatekind(binary_body, "omit") and istemplatekind(body,
"omit")) {
/* HTTP message with binary content */
- HTTP.send(ts_HTTP_Req_Bin(url, method, binary_body,
+ HTTP.send(ts_HTTP_Req_Bin(url, method, binary_body, content_type,
host := use_http_pars.http_host & ":" &
int2str(use_http_pars.http_port),
custom_hdr := custom_hdr, client_id := use_client_id));
} else if (istemplatekind(binary_body, "omit") and istemplatekind(body,
"omit")) {
@@ -274,13 +281,14 @@
function f_http_transact(charstring url, charstring method := "GET",
template (omit) charstring body := omit,
template (omit) octetstring binary_body := omit,
+ charstring content_type := "application/json",
template HTTPMessage exp := tr_HTTP_Resp2xx,
float tout := 2.0, HeaderLines custom_hdr := { },
template (omit) integer client_id := omit,
boolean keep_connection := false,
template (omit) HTTP_Adapter_Params http_pars := omit)
runs on http_CT return HTTPMessage {
- f_http_tx_request(url, method, body, binary_body, custom_hdr, tout, client_id,
http_pars);
+ f_http_tx_request(url, method, body, binary_body, content_type, custom_hdr, tout,
client_id, http_pars);
return f_http_rx_response(exp, tout, client_id, keep_connection);
}
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41124?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ie35ffc56b4fedc0b4d8c4a689a2232b515b7b326
Gerrit-Change-Number: 41124
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>