-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make HttpStatus instantiable #2044
Comments
This comment was originally written by @seaneagan Actually, when checking status codes, you probably wouldn't be able to depend on the reasonPhrase being the standard one for the given status code, so you would probably need to do: response.status.code = HttpStatus.OK.code For this particular status code it might be useful add the following shortcut: response.status.isOk |
This comment was originally written by @seaneagan Actually, on second thought you could override HttpStatus#== to only check the status code and not the reason phrase since that's all that matters in most cases: bool operator ==(HttpStatus other) => code == other.code; which allows going back to: response.status == HttpStatus.OK; Also, the implementation could use a factory constructor to avoid having to create a new status object in the probably 99% of cases when the code and reason phrase match one of the compile time constant HttpStatuses already available (e.g. HttpStatus.OK): factory HttpStatusImpl(int code, [String reasonPhrase]) { |
Creating object instances for each status code does not add much. It might actually create more confusion as the reason phrase is not fixed for any given status code. Added WontFix label. |
Removed Area-IO label. |
…s, markdown, matcher, mockito, path, pool, source_map_stack_trace, sse, stream_channel, string_scanner, test, test_reflective_loader, tools, typed_data, webdev Revisions updated by `dart tools/rev_sdk_deps.dart`. cli_util (https://github.com/dart-lang/cli_util/compare/91747f7..6c318c2): 6c318c2 2023-04-02 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#81) df83fb5 2023-04-02 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#80) collection (https://github.com/dart-lang/collection/compare/0d0e184..30fd0f8): 30fd0f8 2023-04-02 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#277) dartdoc (https://github.com/dart-lang/dartdoc/compare/0746cda..9be04e0): 9be04e0c 2023-03-28 Jonas Finnemann Jensen Allow ID attributes on headings when running with --sanitize-html (#3358) 8785dd24 2023-03-27 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#3377) 0944fa32 2023-03-27 dependabot[bot] Bump github/codeql-action from 2.2.6 to 2.2.9 (#3379) e318d34f 2023-03-27 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#3378) ffi (https://github.com/dart-lang/ffi/compare/32f5eef..04fa38a): 04fa38a 2023-04-03 Daco Harkes test zero termination of Utf8 string (#147) eb93bbb 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#188) 2a6b643 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#189) intl (https://github.com/dart-lang/intl/compare/fca552f..a958db0): a958db0 2023-03-29 Googler Internal change json_rpc_2 (https://github.com/dart-lang/json_rpc_2/compare/0280ac6..aea3bea): aea3bea 2023-03-28 Kevin Moore Fix analysis, bump min SDK to 2.19 (#93) lints (https://github.com/dart-lang/lints/compare/dfded5e..f09399a): f09399a 2023-04-02 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#110) 9581bab 2023-03-25 Parker Lougheed Fix 'recommended' spelling in README (#109) c92e1ca 2023-03-23 Michael Thomsen Update README.md (#108) 7134608 2023-02-01 dependabot[bot] Bump actions/checkout from 3.2.0 to 3.3.0 (#98) markdown (https://github.com/dart-lang/markdown/compare/ecbffa9..d437c85): d437c85 2023-04-02 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#529) 3550fe6 2023-04-01 dependabot[bot] Bump subosito/flutter-action from 2.8.0 to 2.10.0 (#528) d1b7907 2023-04-01 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#527) 0daf231 2023-03-31 le.chang Footnote support (#441) b96bc08 2023-03-30 Jonas Finnemann Jensen Prepare a release of 7.0.2 (#526) matcher (https://github.com/dart-lang/matcher/compare/dc310d9..61f4347): 61f4347 2023-03-21 Nate Bosch Prepare to publish (#214) mockito (https://github.com/dart-lang/mockito/compare/ed5bd84..28e8eda): 28e8eda 2023-04-02 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 ccb9abf 2023-04-01 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 65ee0c4 2023-03-23 Nate Bosch Expand pub constraint on test_api (#615) e6ea7ad 2023-03-23 Nate Bosch GitHub Sync (#614) path (https://github.com/dart-lang/path/compare/24b58a2..cd37179): cd37179 2023-04-02 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#139) pool (https://github.com/dart-lang/pool/compare/694cfd8..338bfb4): 338bfb4 2023-04-02 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#67) source_map_stack_trace (https://github.com/dart-lang/source_map_stack_trace/compare/45ea368..08a81a8): 08a81a8 2023-04-02 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#37) 4cbe06e 2023-04-02 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#36) sse (https://github.com/dart-lang/sse/compare/8c03b73..8c3efdc): 8c3efdc 2023-04-02 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#80) e35336a 2023-04-02 dependabot[bot] Bump nanasess/setup-chromedriver from 1.1.0 to 2.0.0 (#81) stream_channel (https://github.com/dart-lang/stream_channel/compare/a20ccd4..fe0f5e4): fe0f5e4 2023-04-02 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#89) string_scanner (https://github.com/dart-lang/string_scanner/compare/29e471e..f7a656f): f7a656f 2023-04-02 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#56) fe8c301 2023-04-02 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#55) test (https://github.com/dart-lang/test/compare/cc0598b..a01b185): a01b185e 2023-03-30 Nate Bosch More smoothly handle missing compiler info (#1980) b24b4668 2023-03-27 Daco Harkes Support native assets (#1975) c3828267 2023-03-23 Nate Bosch Prepare to publish (#1974) 9035bba8 2023-03-21 Parker Lougheed Use deps.dev for OpenSSF scorecard results link (#1976) test_reflective_loader (https://github.com/dart-lang/test_reflective_loader/compare/c4c2d5c..a85a930): a85a930 2023-04-01 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#46) 27bc418 2023-04-01 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#47) tools (https://github.com/dart-lang/tools/compare/fb2dada..d40ca93): d40ca93 2023-04-03 dependabot[bot] Bump actions/labeler from 4.0.2 to 4.0.3 (#66) 4185d6d 2023-04-03 dependabot[bot] Bump coverallsapp/github-action from 1.2.4 to 2.0.0 (#65) b14d5be 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#64) typed_data (https://github.com/dart-lang/typed_data/compare/f858046..d85363d): d85363d 2023-04-02 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#62) 0f57d9b 2023-04-02 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#63) webdev (https://github.com/dart-lang/webdev/compare/c2c8b17..b139649): b139649e 2023-03-31 Elliott Brooks Don't show non-instantiated variables (#2061) 8437f60a 2023-03-31 Elliott Brooks Move project-specific getters to `TestProject` instead of `TestContext` (#2052) 652e040c 2023-03-30 Elliott Brooks Provide an app entrypoint to DWDS (#2047) 0afc9eb4 2023-03-30 Elliott Brooks Add Dart Code Metrics (#2055) 5fcbb803 2023-03-29 Elliott Brooks Apply `trailing-comma` lint (#2054) 5bd21384 2023-03-28 Elliott Brooks Skip failing webdev integration_test cases (#2051) 2d8e9c23 2023-03-24 Elliott Brooks (she/her) Adds a script for the release steps of `dwds` and `webdev` (#2049) afee8c74 2023-03-23 Elliott Brooks (she/her) Reset `webdev`, `dwds`, `test_common` after publishing (#2048) 4122b234 2023-03-22 Devon Carew update to the latest mono_repo generated CI (#2044) 2b6e9182 2023-03-22 Elliott Brooks (she/her) Prepare Webdev for `3.0.3` release (#2046) c3cbd89b 2023-03-22 Elliott Brooks (she/her) Prepare DWDS for 18.0.2 release (#2045) bb22b3a0 2023-03-22 Anna Gringauze Make debugger skip same locations in dart during stepping. (#2043) b9499819 2023-03-20 Anna Gringauze Prepare for variable names changes due to patterns support in DDC (#2042) Change-Id: I5b8d591d1b906338564cf008f935b17f85ed2813 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292922 Reviewed-by: Konstantin Shcheglov <[email protected]> Commit-Queue: Devon Carew <[email protected]>
This issue was originally filed by @seaneagan
An http status contains much more information than a simple int can convey, and thus would be better represented by a dedicated interface as follows...
interface HttpStatus {
static final HttpStatus ACCEPTED;
// ...
static final HttpStatus OK;
// etc.
// const constructor
const HttpStatus(int code, [String reasonPhrase/* = ''*/]);
final int code;
final String reasonPhrase;
final bool isInformational; // 1xx
final bool isSuccess; // 2xx
final bool isRedirection; // 3xx
final bool isClientError; // 4xx
final bool isServerError; // 5xx
final bool isError; => isClientError || isServerError
// returns the http Status-Line associated with this status
String toString();
}
interface HttpResponse {
HttpStatus status; // could default to HttpStatus.OK
}
interface HttpClientResponse {
final HttpStatus status; // client can't change status
}
Examples:
// server
response.status = HttpStatus.NOT_FOUND
// client
if(response.status = HttpStatus.OK) //...
if(response.status.isError) //...
The text was updated successfully, but these errors were encountered: