rspec/rules/S5167/python/rule.adoc

91 lines
2.0 KiB
Plaintext
Raw Normal View History

== Why is this an issue?
2020-06-30 12:50:28 +02:00
include::../description.adoc[]
=== Noncompliant code example
2020-06-30 12:50:28 +02:00
Flask
2022-02-04 17:28:24 +01:00
[source,python]
2020-06-30 12:50:28 +02:00
----
from flask import Response, request
from werkzeug.datastructures import Headers
@app.route('/route')
def route():
content_type = request.args["Content-Type"]
response = Response()
headers = Headers()
headers.add("Content-Type", content_type) # Noncompliant
response.headers = headers
return response
----
Django
2022-02-04 17:28:24 +01:00
[source,python]
2020-06-30 12:50:28 +02:00
----
import django.http
def route(request):
content_type = request.GET.get("Content-Type")
response = django.http.HttpResponse()
response.__setitem__('Content-Type', content_type) # Noncompliant
return response
----
=== Compliant solution
2020-06-30 12:50:28 +02:00
Flask
2022-02-04 17:28:24 +01:00
[source,python]
2020-06-30 12:50:28 +02:00
----
from flask import Response, request
from werkzeug.datastructures import Headers
import re
@app.route('/route')
def route():
content_type = request.args["Content-Type"]
allowed_content_types = r'application/(pdf|json|xml)'
response = Response()
headers = Headers()
if re.match(allowed_content_types, content_type):
headers.add("Content-Type", content_type) # Compliant
else:
headers.add("Content-Type", "application/json")
response.headers = headers
return response
----
Django
2022-02-04 17:28:24 +01:00
[source,python]
2020-06-30 12:50:28 +02:00
----
import django.http
import re
def route(request):
content_type = request.GET.get("Content-Type")
allowed_content_types = r'application/(pdf|json|xml)'
response = django.http.HttpResponse()
if re.match(allowed_content_types, content_type):
response.__setitem__('Content-Type', content_type) # Compliant
else:
response.__setitem__('Content-Type', "application/json")
return response
----
include::../see.adoc[]
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
include::../message.adoc[]
include::../highlighting.adoc[]
endif::env-github,rspecator-view[]