Coverage for packages/azericard/src/integrify/azericard/helpers.py: 100%
9 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-19 02:39 +0000
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-19 02:39 +0000
1from html import escape
3from integrify.schemas import DryResponse
6def json_to_html_form(json_data: DryResponse, with_submit: bool = False) -> str:
7 """AzeriCard-ə göndərilməli datanı HTML formuna çevirən funksiya
9 Bütün dəyərlər HTML atributuna yazılmadan əvvəl `html.escape(..., quote=True)` ilə
10 escape olunur ki, tərkibində `"` və ya `<` olan dəyər atributdan çıxıb HTML/JS
11 injection-a səbəb olmasın.
13 Args:
14 json_data: DryResponse payload
15 with_submit: HTML form-da submit butonunu elavə etmə(mə)k
16 """
18 url = escape(str(json_data['url']), quote=True)
19 verb = escape(str(json_data['verb']), quote=True)
20 data = json_data['data']
22 # Create HTML form based on keys and values of json_data. Every field is str, str.
23 form = '\n'.join(
24 f'<input type="hidden" name="{escape(str(key), quote=True)}" '
25 f'value="{escape(str(value), quote=True)}">'
26 for key, value in data.items()
27 )
29 submit = '<input type="submit" value="Submit">\n' if with_submit else ''
30 return (
31 f'<form name="azericard_form" action="{url}" method="{verb}">\n{form}\n{submit}</form>\n'
32 '<script>document.azericard_form.submit();</script>'
33 )