diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..6bef8b7
Binary files /dev/null and b/.DS_Store differ
diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
new file mode 100644
index 0000000..53f82e1
--- /dev/null
+++ b/.dart_tool/package_config.json
@@ -0,0 +1,308 @@
+{
+ "configVersion": 2,
+ "packages": [
+ {
+ "name": "_fe_analyzer_shared",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/_fe_analyzer_shared-59.0.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "analyzer",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/analyzer-5.11.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "args",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/args-2.4.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "async",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/async-2.11.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "boolean_selector",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "collection",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/collection-1.17.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "convert",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/convert-3.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "coverage",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/coverage-1.6.3",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "crypto",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/crypto-3.0.3",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "file",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/file-6.1.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "frontend_server_client",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/frontend_server_client-3.2.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "glob",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/glob-2.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.15"
+ },
+ {
+ "name": "http",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/http-0.13.6",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "http_methods",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/http_methods-1.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "http_multi_server",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/http_multi_server-3.2.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "http_parser",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/http_parser-4.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "io",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/io-1.0.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "js",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/js-0.6.7",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "lints",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/lints-2.0.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "logging",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/logging-1.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "matcher",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/matcher-0.12.15",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "meta",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/meta-1.9.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "mime",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/mime-1.0.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "node_preamble",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/node_preamble-2.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "package_config",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/package_config-2.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "path",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/path-1.8.3",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "pool",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/pool-1.5.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "pub_semver",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/pub_semver-2.1.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "shelf",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/shelf-1.4.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "shelf_packages_handler",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/shelf_packages_handler-3.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "shelf_router",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/shelf_router-1.1.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "shelf_static",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/shelf_static-1.1.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "shelf_web_socket",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/shelf_web_socket-1.0.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "source_map_stack_trace",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/source_map_stack_trace-2.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "source_maps",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/source_maps-0.10.12",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "source_span",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/source_span-1.10.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "stack_trace",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/stack_trace-1.11.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "stream_channel",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/stream_channel-2.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "string_scanner",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/string_scanner-1.2.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "term_glyph",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/term_glyph-1.2.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "test",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/test-1.24.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "test_api",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/test_api-0.5.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "test_core",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/test_core-0.5.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "typed_data",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/typed_data-1.3.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "vm_service",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/vm_service-11.5.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "watcher",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/watcher-1.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "web_socket_channel",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/web_socket_channel-2.4.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.15"
+ },
+ {
+ "name": "webkit_inspection_protocol",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/webkit_inspection_protocol-1.2.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "yaml",
+ "rootUri": "file:///Users/alwaleddm-khushaim/.pub-cache/hosted/pub.dev/yaml-3.1.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "bake_end_lab1",
+ "rootUri": "../",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ }
+ ],
+ "generated": "2023-05-08T12:28:00.635555Z",
+ "generator": "pub",
+ "generatorVersion": "2.19.6"
+}
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..effe43c
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,3 @@
+## 1.0.0
+
+- Initial version.
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..c333dee
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,21 @@
+# Use latest stable channel SDK.
+FROM dart:stable AS build
+
+# Resolve app dependencies.
+WORKDIR /app
+COPY pubspec.* ./
+RUN dart pub get
+
+# Copy app source code (except anything in .dockerignore) and AOT compile app.
+COPY . .
+RUN dart compile exe bin/server.dart -o bin/server
+
+# Build minimal serving image from AOT-compiled `/server`
+# and the pre-built AOT-runtime in the `/runtime/` directory of the base image.
+FROM scratch
+COPY --from=build /runtime/ /
+COPY --from=build /app/bin/server /app/bin/
+
+# Start server.
+EXPOSE 8080
+CMD ["/app/bin/server"]
diff --git a/README.md b/README.md
index fd6b77a..e695d9d 100644
--- a/README.md
+++ b/README.md
@@ -1,46 +1,49 @@
-
Lab #3
-
-Submission instructions:
-
- 1. Fork this repo.
- 2. Clone your version of the homework into you local development environment.
- ```console
- git clone
- ```
- 3. Create a branch with your name, the following commands might help you:
- ```console
- // Create the branch
- git branch firstname-lastname
-
- // Checkout the branch
- git checkout firstname-lastname
-
- //
- /// Add your files that you will solve the hw in
- //
-
- // Add your new files to the staging level
- git add .
-
- // Commit you staged files
- git commit -am "solve: descriptive meassge"
-
- // Push your branch
- git push --set-upstream origin firstname-lastname
- ```
- 5. Create a PR containing your solution to the homework original repo
-
-
-
-# Details
-
-1. Create a Dart Server called `Backend-Lab-1`.
-2. Create 3 endpoints, each endpoint returns a different message.
-
-
-# Deadline
-
-Submit by 8/5/2023 3:00 PM
-
-# Note
-Make sure that the name of the PR is your `firstname lastname`
+A server app built using [Shelf](https://pub.dev/packages/shelf),
+configured to enable running with [Docker](https://www.docker.com/).
+
+This sample code handles HTTP GET requests to `/` and `/echo/`
+
+# Running the sample
+
+## Running with the Dart SDK
+
+You can run the example with the [Dart SDK](https://dart.dev/get-dart)
+like this:
+
+```
+$ dart run bin/server.dart
+Server listening on port 8080
+```
+
+And then from a second terminal:
+```
+$ curl http://0.0.0.0:8080
+Hello, World!
+$ curl http://0.0.0.0:8080/echo/I_love_Dart
+I_love_Dart
+```
+
+## Running with Docker
+
+If you have [Docker Desktop](https://www.docker.com/get-started) installed, you
+can build and run with the `docker` command:
+
+```
+$ docker build . -t myserver
+$ docker run -it -p 8080:8080 myserver
+Server listening on port 8080
+```
+
+And then from a second terminal:
+```
+$ curl http://0.0.0.0:8080
+Hello, World!
+$ curl http://0.0.0.0:8080/echo/I_love_Dart
+I_love_Dart
+```
+
+You should see the logging printed in the first terminal:
+```
+2021-05-06T15:47:04.620417 0:00:00.000158 GET [200] /
+2021-05-06T15:47:08.392928 0:00:00.001216 GET [200] /echo/I_love_Dart
+```
diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000..dee8927
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1,30 @@
+# This file configures the static analysis results for your project (errors,
+# warnings, and lints).
+#
+# This enables the 'recommended' set of lints from `package:lints`.
+# This set helps identify many issues that may lead to problems when running
+# or consuming Dart code, and enforces writing Dart using a single, idiomatic
+# style and format.
+#
+# If you want a smaller set of lints you can change this to specify
+# 'package:lints/core.yaml'. These are just the most critical lints
+# (the recommended set includes the core lints).
+# The core lints are also what is used by pub.dev for scoring packages.
+
+include: package:lints/recommended.yaml
+
+# Uncomment the following section to specify additional rules.
+
+# linter:
+# rules:
+# - camel_case_types
+
+# analyzer:
+# exclude:
+# - path/to/excluded/files/**
+
+# For more information about the core and recommended set of lints, see
+# https://dart.dev/go/core-lints
+
+# For additional information about configuring this file, see
+# https://dart.dev/guides/language/analysis-options
diff --git a/bin/server.dart b/bin/server.dart
new file mode 100644
index 0000000..8c6fa4a
--- /dev/null
+++ b/bin/server.dart
@@ -0,0 +1,25 @@
+import 'dart:io';
+
+import 'package:shelf/shelf.dart';
+import 'package:shelf/shelf_io.dart';
+import 'package:shelf_router/shelf_router.dart';
+
+// Configure routes.
+void main(List args) async {
+ final ip = InternetAddress.anyIPv4;
+ final rawter = Router()
+ ..get("/home", (Request req) {
+ return Response.ok("home is ok");
+ })
+ ..get("/seting", (Request req) {
+ return Response.ok("seting is ok");
+ })
+ ..get("/login", (Request req) {
+ return Response.ok("login is ok");
+ });
+ final handler = Pipeline().addMiddleware((innerHandler) => rawter);
+ final port = int.parse(Platform.environment['PORT'] ?? '8080');
+
+ final servar = await serve(rawter, ip, port);
+ print("verfve //http://${servar.address.host}:${servar.port}");
+}
diff --git a/pubspec.lock b/pubspec.lock
new file mode 100644
index 0000000..b4f575c
--- /dev/null
+++ b/pubspec.lock
@@ -0,0 +1,397 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+ _fe_analyzer_shared:
+ dependency: transitive
+ description:
+ name: _fe_analyzer_shared
+ sha256: "8880b4cfe7b5b17d57c052a5a3a8cc1d4f546261c7cc8fbd717bd53f48db0568"
+ url: "https://pub.dev"
+ source: hosted
+ version: "59.0.0"
+ analyzer:
+ dependency: transitive
+ description:
+ name: analyzer
+ sha256: a89627f49b0e70e068130a36571409726b04dab12da7e5625941d2c8ec278b96
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.11.1"
+ args:
+ dependency: "direct main"
+ description:
+ name: args
+ sha256: c372bb384f273f0c2a8aaaa226dad84dc27c8519a691b888725dec59518ad53a
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.1"
+ async:
+ dependency: transitive
+ description:
+ name: async
+ sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.11.0"
+ boolean_selector:
+ dependency: transitive
+ description:
+ name: boolean_selector
+ sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ collection:
+ dependency: transitive
+ description:
+ name: collection
+ sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.17.1"
+ convert:
+ dependency: transitive
+ description:
+ name: convert
+ sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.1"
+ coverage:
+ dependency: transitive
+ description:
+ name: coverage
+ sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.6.3"
+ crypto:
+ dependency: transitive
+ description:
+ name: crypto
+ sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.3"
+ file:
+ dependency: transitive
+ description:
+ name: file
+ sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.1.4"
+ frontend_server_client:
+ dependency: transitive
+ description:
+ name: frontend_server_client
+ sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.0"
+ glob:
+ dependency: transitive
+ description:
+ name: glob
+ sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ http:
+ dependency: "direct dev"
+ description:
+ name: http
+ sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.13.6"
+ http_methods:
+ dependency: transitive
+ description:
+ name: http_methods
+ sha256: "6bccce8f1ec7b5d701e7921dca35e202d425b57e317ba1a37f2638590e29e566"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ http_multi_server:
+ dependency: transitive
+ description:
+ name: http_multi_server
+ sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.1"
+ http_parser:
+ dependency: transitive
+ description:
+ name: http_parser
+ sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.2"
+ io:
+ dependency: transitive
+ description:
+ name: io
+ sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
+ js:
+ dependency: transitive
+ description:
+ name: js
+ sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.6.7"
+ lints:
+ dependency: "direct dev"
+ description:
+ name: lints
+ sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.1"
+ logging:
+ dependency: transitive
+ description:
+ name: logging
+ sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ matcher:
+ dependency: transitive
+ description:
+ name: matcher
+ sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.12.15"
+ meta:
+ dependency: transitive
+ description:
+ name: meta
+ sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.9.1"
+ mime:
+ dependency: transitive
+ description:
+ name: mime
+ sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
+ node_preamble:
+ dependency: transitive
+ description:
+ name: node_preamble
+ sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.2"
+ package_config:
+ dependency: transitive
+ description:
+ name: package_config
+ sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.0"
+ path:
+ dependency: transitive
+ description:
+ name: path
+ sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.8.3"
+ pool:
+ dependency: transitive
+ description:
+ name: pool
+ sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.5.1"
+ pub_semver:
+ dependency: transitive
+ description:
+ name: pub_semver
+ sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.4"
+ shelf:
+ dependency: "direct main"
+ description:
+ name: shelf
+ sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.1"
+ shelf_packages_handler:
+ dependency: transitive
+ description:
+ name: shelf_packages_handler
+ sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.2"
+ shelf_router:
+ dependency: "direct main"
+ description:
+ name: shelf_router
+ sha256: f5e5d492440a7fb165fe1e2e1a623f31f734d3370900070b2b1e0d0428d59864
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.4"
+ shelf_static:
+ dependency: transitive
+ description:
+ name: shelf_static
+ sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.2"
+ shelf_web_socket:
+ dependency: transitive
+ description:
+ name: shelf_web_socket
+ sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
+ source_map_stack_trace:
+ dependency: transitive
+ description:
+ name: source_map_stack_trace
+ sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ source_maps:
+ dependency: transitive
+ description:
+ name: source_maps
+ sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.10.12"
+ source_span:
+ dependency: transitive
+ description:
+ name: source_span
+ sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.10.0"
+ stack_trace:
+ dependency: transitive
+ description:
+ name: stack_trace
+ sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.11.0"
+ stream_channel:
+ dependency: transitive
+ description:
+ name: stream_channel
+ sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ string_scanner:
+ dependency: transitive
+ description:
+ name: string_scanner
+ sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.0"
+ term_glyph:
+ dependency: transitive
+ description:
+ name: term_glyph
+ sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.1"
+ test:
+ dependency: "direct dev"
+ description:
+ name: test
+ sha256: "4f92f103ef63b1bbac6f4bd1930624fca81b2574464482512c4f0896319be575"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.24.2"
+ test_api:
+ dependency: transitive
+ description:
+ name: test_api
+ sha256: daadc9baabec998b062c9091525aa95786508b1c48e9c30f1f891b8bf6ff2e64
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.5.2"
+ test_core:
+ dependency: transitive
+ description:
+ name: test_core
+ sha256: "3642b184882f79e76ca57a9230fb971e494c3c1fd09c21ae3083ce891bcc0aa1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.5.2"
+ typed_data:
+ dependency: transitive
+ description:
+ name: typed_data
+ sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.1"
+ vm_service:
+ dependency: transitive
+ description:
+ name: vm_service
+ sha256: d1ba6ce3fa60807433511f943b51607bd7073f8fe5c14286d66fec8e05c8d24c
+ url: "https://pub.dev"
+ source: hosted
+ version: "11.5.0"
+ watcher:
+ dependency: transitive
+ description:
+ name: watcher
+ sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.2"
+ web_socket_channel:
+ dependency: transitive
+ description:
+ name: web_socket_channel
+ sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.0"
+ webkit_inspection_protocol:
+ dependency: transitive
+ description:
+ name: webkit_inspection_protocol
+ sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.0"
+ yaml:
+ dependency: transitive
+ description:
+ name: yaml
+ sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.2"
+sdks:
+ dart: ">=2.19.6 <3.0.0"
diff --git a/pubspec.yaml b/pubspec.yaml
new file mode 100644
index 0000000..d89bb2c
--- /dev/null
+++ b/pubspec.yaml
@@ -0,0 +1,17 @@
+name: bake_end_lab1
+description: A server app using the shelf package and Docker.
+version: 1.0.0
+# repository: https://github.com/my_org/my_repo
+
+environment:
+ sdk: '>=2.19.6 <3.0.0'
+
+dependencies:
+ args: ^2.3.0
+ shelf: ^1.4.0
+ shelf_router: ^1.1.0
+
+dev_dependencies:
+ http: ^0.13.0
+ lints: ^2.0.0
+ test: ^1.21.0
diff --git a/test/server_test.dart b/test/server_test.dart
new file mode 100644
index 0000000..3081d87
--- /dev/null
+++ b/test/server_test.dart
@@ -0,0 +1,39 @@
+import 'dart:io';
+
+import 'package:http/http.dart';
+import 'package:test/test.dart';
+
+void main() {
+ final port = '8080';
+ final host = 'http://0.0.0.0:$port';
+ late Process p;
+
+ setUp(() async {
+ p = await Process.start(
+ 'dart',
+ ['run', 'bin/server.dart'],
+ environment: {'PORT': port},
+ );
+ // Wait for server to start and print to stdout.
+ await p.stdout.first;
+ });
+
+ tearDown(() => p.kill());
+
+ test('Root', () async {
+ final response = await get(Uri.parse('$host/'));
+ expect(response.statusCode, 200);
+ expect(response.body, 'Hello, World!\n');
+ });
+
+ test('Echo', () async {
+ final response = await get(Uri.parse('$host/echo/hello'));
+ expect(response.statusCode, 200);
+ expect(response.body, 'hello\n');
+ });
+
+ test('404', () async {
+ final response = await get(Uri.parse('$host/foobar'));
+ expect(response.statusCode, 404);
+ });
+}