The acceptable content types for a Response returned for this instance.
This list is determined by parsing the Accept
header (or the concatenation
of multiple Accept
headers). The list is ordered such the more desirable
content-types appear earlier in the list. Desirability is determined by
a q-value (if one exists) and the specificity of the content-type.
See also acceptsContentType.
Source
List<ContentType> get acceptableContentTypes { if (_cachedAcceptableTypes == null) { try { var contentTypes = innerRequest .headers[HttpHeaders.ACCEPT] ?.expand((h) => h.split(",").map((s) => s.trim())) ?.where((h) => h.isNotEmpty) ?.map((h) => ContentType.parse(h)) ?.toList() ?? []; contentTypes.sort((c1, c2) { num q1 = num.parse(c1.parameters["q"] ?? "1.0"); num q2 = num.parse(c2.parameters["q"] ?? "1.0"); var comparison = q1.compareTo(q2); if (comparison == 0) { if (c1.primaryType == "*" && c2.primaryType != "*") { return 1; } else if (c1.primaryType != "*" && c2.primaryType == "*") { return -1; } if (c1.subType == "*" && c2.subType != "*") { return 1; } else if (c1.subType != "*" && c2.subType == "*") { return -1; } } return -comparison; }); _cachedAcceptableTypes = contentTypes; } catch (_) { throw new HTTPResponseException(400, "Accept header is malformed"); } } return _cachedAcceptableTypes; }