hdrs.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. """HTTP Headers constants."""
  2. # After changing the file content call ./tools/gen.py
  3. # to regenerate the headers parser
  4. import itertools
  5. from typing import Final, Set
  6. from multidict import istr
  7. METH_ANY: Final[str] = "*"
  8. METH_CONNECT: Final[str] = "CONNECT"
  9. METH_HEAD: Final[str] = "HEAD"
  10. METH_GET: Final[str] = "GET"
  11. METH_DELETE: Final[str] = "DELETE"
  12. METH_OPTIONS: Final[str] = "OPTIONS"
  13. METH_PATCH: Final[str] = "PATCH"
  14. METH_POST: Final[str] = "POST"
  15. METH_PUT: Final[str] = "PUT"
  16. METH_TRACE: Final[str] = "TRACE"
  17. METH_ALL: Final[Set[str]] = {
  18. METH_CONNECT,
  19. METH_HEAD,
  20. METH_GET,
  21. METH_DELETE,
  22. METH_OPTIONS,
  23. METH_PATCH,
  24. METH_POST,
  25. METH_PUT,
  26. METH_TRACE,
  27. }
  28. ACCEPT: Final[istr] = istr("Accept")
  29. ACCEPT_CHARSET: Final[istr] = istr("Accept-Charset")
  30. ACCEPT_ENCODING: Final[istr] = istr("Accept-Encoding")
  31. ACCEPT_LANGUAGE: Final[istr] = istr("Accept-Language")
  32. ACCEPT_RANGES: Final[istr] = istr("Accept-Ranges")
  33. ACCESS_CONTROL_MAX_AGE: Final[istr] = istr("Access-Control-Max-Age")
  34. ACCESS_CONTROL_ALLOW_CREDENTIALS: Final[istr] = istr("Access-Control-Allow-Credentials")
  35. ACCESS_CONTROL_ALLOW_HEADERS: Final[istr] = istr("Access-Control-Allow-Headers")
  36. ACCESS_CONTROL_ALLOW_METHODS: Final[istr] = istr("Access-Control-Allow-Methods")
  37. ACCESS_CONTROL_ALLOW_ORIGIN: Final[istr] = istr("Access-Control-Allow-Origin")
  38. ACCESS_CONTROL_EXPOSE_HEADERS: Final[istr] = istr("Access-Control-Expose-Headers")
  39. ACCESS_CONTROL_REQUEST_HEADERS: Final[istr] = istr("Access-Control-Request-Headers")
  40. ACCESS_CONTROL_REQUEST_METHOD: Final[istr] = istr("Access-Control-Request-Method")
  41. AGE: Final[istr] = istr("Age")
  42. ALLOW: Final[istr] = istr("Allow")
  43. AUTHORIZATION: Final[istr] = istr("Authorization")
  44. CACHE_CONTROL: Final[istr] = istr("Cache-Control")
  45. CONNECTION: Final[istr] = istr("Connection")
  46. CONTENT_DISPOSITION: Final[istr] = istr("Content-Disposition")
  47. CONTENT_ENCODING: Final[istr] = istr("Content-Encoding")
  48. CONTENT_LANGUAGE: Final[istr] = istr("Content-Language")
  49. CONTENT_LENGTH: Final[istr] = istr("Content-Length")
  50. CONTENT_LOCATION: Final[istr] = istr("Content-Location")
  51. CONTENT_MD5: Final[istr] = istr("Content-MD5")
  52. CONTENT_RANGE: Final[istr] = istr("Content-Range")
  53. CONTENT_TRANSFER_ENCODING: Final[istr] = istr("Content-Transfer-Encoding")
  54. CONTENT_TYPE: Final[istr] = istr("Content-Type")
  55. COOKIE: Final[istr] = istr("Cookie")
  56. DATE: Final[istr] = istr("Date")
  57. DESTINATION: Final[istr] = istr("Destination")
  58. DIGEST: Final[istr] = istr("Digest")
  59. ETAG: Final[istr] = istr("Etag")
  60. EXPECT: Final[istr] = istr("Expect")
  61. EXPIRES: Final[istr] = istr("Expires")
  62. FORWARDED: Final[istr] = istr("Forwarded")
  63. FROM: Final[istr] = istr("From")
  64. HOST: Final[istr] = istr("Host")
  65. IF_MATCH: Final[istr] = istr("If-Match")
  66. IF_MODIFIED_SINCE: Final[istr] = istr("If-Modified-Since")
  67. IF_NONE_MATCH: Final[istr] = istr("If-None-Match")
  68. IF_RANGE: Final[istr] = istr("If-Range")
  69. IF_UNMODIFIED_SINCE: Final[istr] = istr("If-Unmodified-Since")
  70. KEEP_ALIVE: Final[istr] = istr("Keep-Alive")
  71. LAST_EVENT_ID: Final[istr] = istr("Last-Event-ID")
  72. LAST_MODIFIED: Final[istr] = istr("Last-Modified")
  73. LINK: Final[istr] = istr("Link")
  74. LOCATION: Final[istr] = istr("Location")
  75. MAX_FORWARDS: Final[istr] = istr("Max-Forwards")
  76. ORIGIN: Final[istr] = istr("Origin")
  77. PRAGMA: Final[istr] = istr("Pragma")
  78. PROXY_AUTHENTICATE: Final[istr] = istr("Proxy-Authenticate")
  79. PROXY_AUTHORIZATION: Final[istr] = istr("Proxy-Authorization")
  80. RANGE: Final[istr] = istr("Range")
  81. REFERER: Final[istr] = istr("Referer")
  82. RETRY_AFTER: Final[istr] = istr("Retry-After")
  83. SEC_WEBSOCKET_ACCEPT: Final[istr] = istr("Sec-WebSocket-Accept")
  84. SEC_WEBSOCKET_VERSION: Final[istr] = istr("Sec-WebSocket-Version")
  85. SEC_WEBSOCKET_PROTOCOL: Final[istr] = istr("Sec-WebSocket-Protocol")
  86. SEC_WEBSOCKET_EXTENSIONS: Final[istr] = istr("Sec-WebSocket-Extensions")
  87. SEC_WEBSOCKET_KEY: Final[istr] = istr("Sec-WebSocket-Key")
  88. SEC_WEBSOCKET_KEY1: Final[istr] = istr("Sec-WebSocket-Key1")
  89. SERVER: Final[istr] = istr("Server")
  90. SET_COOKIE: Final[istr] = istr("Set-Cookie")
  91. TE: Final[istr] = istr("TE")
  92. TRAILER: Final[istr] = istr("Trailer")
  93. TRANSFER_ENCODING: Final[istr] = istr("Transfer-Encoding")
  94. UPGRADE: Final[istr] = istr("Upgrade")
  95. URI: Final[istr] = istr("URI")
  96. USER_AGENT: Final[istr] = istr("User-Agent")
  97. VARY: Final[istr] = istr("Vary")
  98. VIA: Final[istr] = istr("Via")
  99. WANT_DIGEST: Final[istr] = istr("Want-Digest")
  100. WARNING: Final[istr] = istr("Warning")
  101. WWW_AUTHENTICATE: Final[istr] = istr("WWW-Authenticate")
  102. X_FORWARDED_FOR: Final[istr] = istr("X-Forwarded-For")
  103. X_FORWARDED_HOST: Final[istr] = istr("X-Forwarded-Host")
  104. X_FORWARDED_PROTO: Final[istr] = istr("X-Forwarded-Proto")
  105. # These are the upper/lower case variants of the headers/methods
  106. # Example: {'hOst', 'host', 'HoST', 'HOSt', 'hOsT', 'HosT', 'hoSt', ...}
  107. METH_HEAD_ALL: Final = frozenset(
  108. map("".join, itertools.product(*zip(METH_HEAD.upper(), METH_HEAD.lower())))
  109. )
  110. METH_CONNECT_ALL: Final = frozenset(
  111. map("".join, itertools.product(*zip(METH_CONNECT.upper(), METH_CONNECT.lower())))
  112. )
  113. HOST_ALL: Final = frozenset(
  114. map("".join, itertools.product(*zip(HOST.upper(), HOST.lower())))
  115. )