< Summary

Line coverage
0%
Covered lines: 0
Uncovered lines: 104
Coverable lines: 104
Total lines: 145
Line coverage: 0%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.cctor()100%110%
CreateHeaderField(...)100%110%

File(s)

https://raw.githubusercontent.com/dotnet/runtime/811a7eabb75c42db53440e8ba3f60c07511cfd1f/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/QPack/H3StaticTable.Http3.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4using System.Text;
 5
 6namespace System.Net.Http.QPack
 7{
 8    internal static partial class H3StaticTable
 9    {
 10        public static bool TryGetStatusIndex(int status, out int index)
 11        {
 12            index = status switch
 13            {
 14                103 => 24,
 15                200 => 25,
 16                304 => 26,
 17                404 => 27,
 18                503 => 28,
 19                100 => 63,
 20                204 => 64,
 21                206 => 65,
 22                302 => 66,
 23                400 => 67,
 24                403 => 68,
 25                421 => 69,
 26                425 => 70,
 27                500 => 71,
 28                _ => -1
 29            };
 30
 31            return index != -1;
 32        }
 33
 034        public static int Count => s_staticTable.Length;
 35
 36        public static ref readonly HeaderField Get(int index) => ref s_staticTable[index];
 37
 038        private static readonly HeaderField[] s_staticTable = new HeaderField[]
 039        {
 040            CreateHeaderField(":authority", ""), // 0
 041            CreateHeaderField(":path", "/"), // 1
 042            CreateHeaderField("age", "0"), // 2
 043            CreateHeaderField("content-disposition", ""), //3
 044            CreateHeaderField("content-length", "0"), // 4
 045            CreateHeaderField("cookie", ""), // 5
 046            CreateHeaderField("date", ""), // 6
 047            CreateHeaderField("etag", ""), // 7
 048            CreateHeaderField("if-modified-since", ""), // 8
 049            CreateHeaderField("if-none-match", ""), // 9
 050            CreateHeaderField("last-modified", ""), // 10
 051            CreateHeaderField("link", ""), // 11
 052            CreateHeaderField("location", ""), // 12
 053            CreateHeaderField("referer", ""), // 13
 054            CreateHeaderField("set-cookie", ""), // 14
 055            CreateHeaderField(":method", "CONNECT"), // 15
 056            CreateHeaderField(":method", "DELETE"), // 16
 057            CreateHeaderField(":method", "GET"), // 17
 058            CreateHeaderField(":method", "HEAD"), // 18
 059            CreateHeaderField(":method", "OPTIONS"), // 19
 060            CreateHeaderField(":method", "POST"), // 20
 061            CreateHeaderField(":method", "PUT"), // 21
 062            CreateHeaderField(":scheme", "http"), // 22
 063            CreateHeaderField(":scheme", "https"), // 23
 064            CreateHeaderField(":status", "103"), // 24
 065            CreateHeaderField(":status", "200"), // 25
 066            CreateHeaderField(":status", "304"), // 26
 067            CreateHeaderField(":status", "404"), // 27
 068            CreateHeaderField(":status", "503"), // 28
 069            CreateHeaderField("accept", "*/*"), //29
 070            CreateHeaderField("accept", "application/dns-message"), // 30
 071            CreateHeaderField("accept-encoding", "gzip, deflate, br"), // 31
 072            CreateHeaderField("accept-ranges", "bytes"), // 32
 073            CreateHeaderField("access-control-allow-headers", "cache-control"), // 33
 074            CreateHeaderField("access-control-allow-headers", "content-type"), // 34
 075            CreateHeaderField("access-control-allow-origin", "*"), // 35
 076            CreateHeaderField("cache-control", "max-age=0"), // 36
 077            CreateHeaderField("cache-control", "max-age=2592000"), // 37
 078            CreateHeaderField("cache-control", "max-age=604800"), // 38
 079            CreateHeaderField("cache-control", "no-cache"), // 39
 080            CreateHeaderField("cache-control", "no-store"), // 40
 081            CreateHeaderField("cache-control", "public, max-age=31536000"), // 41
 082            CreateHeaderField("content-encoding", "br"), // 42
 083            CreateHeaderField("content-encoding", "gzip"), // 43
 084            CreateHeaderField("content-type", "application/dns-message"), // 44
 085            CreateHeaderField("content-type", "application/javascript"), // 45
 086            CreateHeaderField("content-type", "application/json"), // 46
 087            CreateHeaderField("content-type", "application/x-www-form-urlencoded"), // 47
 088            CreateHeaderField("content-type", "image/gif"), // 48
 089            CreateHeaderField("content-type", "image/jpeg"), // 49
 090            CreateHeaderField("content-type", "image/png"), // 50
 091            CreateHeaderField("content-type", "text/css"), // 51
 092            CreateHeaderField("content-type", "text/html; charset=utf-8"), // 52
 093            CreateHeaderField("content-type", "text/plain"), // 53
 094            CreateHeaderField("content-type", "text/plain;charset=utf-8"), // 54
 095            CreateHeaderField("range", "bytes=0-"), // 55
 096            CreateHeaderField("strict-transport-security", "max-age=31536000"), // 56
 097            CreateHeaderField("strict-transport-security", "max-age=31536000; includesubdomains"), // 57; TODO confirm s
 098            CreateHeaderField("strict-transport-security", "max-age=31536000; includesubdomains; preload"), // 58
 099            CreateHeaderField("vary", "accept-encoding"), // 59
 0100            CreateHeaderField("vary", "origin"), // 60
 0101            CreateHeaderField("x-content-type-options", "nosniff"), // 61
 0102            CreateHeaderField("x-xss-protection", "1; mode=block"), // 62
 0103            CreateHeaderField(":status", "100"), // 63
 0104            CreateHeaderField(":status", "204"), // 64
 0105            CreateHeaderField(":status", "206"), // 65
 0106            CreateHeaderField(":status", "302"), // 66
 0107            CreateHeaderField(":status", "400"), // 67
 0108            CreateHeaderField(":status", "403"), // 68
 0109            CreateHeaderField(":status", "421"), // 69
 0110            CreateHeaderField(":status", "425"), // 70
 0111            CreateHeaderField(":status", "500"), // 71
 0112            CreateHeaderField("accept-language", ""), // 72
 0113            CreateHeaderField("access-control-allow-credentials", "FALSE"), // 73
 0114            CreateHeaderField("access-control-allow-credentials", "TRUE"), // 74
 0115            CreateHeaderField("access-control-allow-headers", "*"), // 75
 0116            CreateHeaderField("access-control-allow-methods", "get"), // 76
 0117            CreateHeaderField("access-control-allow-methods", "get, post, options"), // 77
 0118            CreateHeaderField("access-control-allow-methods", "options"), // 78
 0119            CreateHeaderField("access-control-expose-headers", "content-length"), // 79
 0120            CreateHeaderField("access-control-request-headers", "content-type"), // 80
 0121            CreateHeaderField("access-control-request-method", "get"), // 81
 0122            CreateHeaderField("access-control-request-method", "post"), // 82
 0123            CreateHeaderField("alt-svc", "clear"), // 83
 0124            CreateHeaderField("authorization", ""), // 84
 0125            CreateHeaderField("content-security-policy", "script-src 'none'; object-src 'none'; base-uri 'none'"), // 85
 0126            CreateHeaderField("early-data", "1"), // 86
 0127            CreateHeaderField("expect-ct", ""), // 87
 0128            CreateHeaderField("forwarded", ""), // 88
 0129            CreateHeaderField("if-range", ""), // 89
 0130            CreateHeaderField("origin", ""), // 90
 0131            CreateHeaderField("purpose", "prefetch"), // 91
 0132            CreateHeaderField("server", ""), // 92
 0133            CreateHeaderField("timing-allow-origin", "*"), // 93
 0134            CreateHeaderField("upgrade-insecure-requests", "1"), // 94
 0135            CreateHeaderField("user-agent", ""), // 95
 0136            CreateHeaderField("x-forwarded-for", ""), // 96
 0137            CreateHeaderField("x-frame-options", "deny"), // 97
 0138            CreateHeaderField("x-frame-options", "sameorigin"), // 98
 0139        };
 140
 141        private static HeaderField CreateHeaderField(string name, string value)
 0142            => new HeaderField(Encoding.ASCII.GetBytes(name), Encoding.ASCII.GetBytes(value));
 143    }
 144}
 145