Skip to content
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

Closed
DartBot opened this issue Mar 7, 2012 · 5 comments
Closed

Make HttpStatus instantiable #2044

DartBot opened this issue Mar 7, 2012 · 5 comments
Labels
area-core-library SDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries. closed-not-planned Closed as we don't intend to take action on the reported issue library-io

Comments

@DartBot
Copy link

DartBot commented Mar 7, 2012

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) //...

@DartBot
Copy link
Author

DartBot commented Mar 7, 2012

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
// or
response.status.code = 200

For this particular status code it might be useful add the following shortcut:

response.status.isOk

@madsager
Copy link
Contributor

madsager commented Mar 8, 2012

cc @sgjesse.
Added Area-IO, Triaged labels.

@DartBot
Copy link
Author

DartBot commented Mar 8, 2012

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]) {
  HttpStatus ret = HttpStatusImpl._getStandardStatus(code, reasonPhrase);
  return null == ret ? new HttpStatusImpl._internal(code, reasonPhrase) : ret;
}

@sgjesse
Copy link
Contributor

sgjesse commented Jun 8, 2012

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.

@kevmoo
Copy link
Member

kevmoo commented May 14, 2014

Removed Area-IO label.
Added Area-Library, Library-IO labels.

@DartBot DartBot added Type-Defect area-core-library SDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries. library-io labels May 14, 2014
@kevmoo kevmoo added closed-not-planned Closed as we don't intend to take action on the reported issue and removed resolution-wont_fix labels Mar 1, 2016
copybara-service bot pushed a commit that referenced this issue Apr 3, 2023
…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 <scheglov@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-core-library SDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries. closed-not-planned Closed as we don't intend to take action on the reported issue library-io
Projects
None yet
Development

No branches or pull requests

4 participants