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

1from html import escape 

2 

3from integrify.schemas import DryResponse 

4 

5 

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 

8 

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. 

12 

13 Args: 

14 json_data: DryResponse payload 

15 with_submit: HTML form-da submit butonunu elavə etmə(mə)k 

16 """ 

17 

18 url = escape(str(json_data['url']), quote=True) 

19 verb = escape(str(json_data['verb']), quote=True) 

20 data = json_data['data'] 

21 

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 ) 

28 

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 )