aboutsummaryrefslogtreecommitdiff
path: root/examples/webserver.sloth
diff options
context:
space:
mode:
authorCody <cody@codyq.dev>2023-01-29 20:58:04 -0600
committerCody <cody@codyq.dev>2023-01-29 20:58:04 -0600
commita653a6602fe5ae5eb4739755db7b34bc92ecdadf (patch)
tree2d99c570ccd77767e1d5fcf9b098d45c79cbe6e4 /examples/webserver.sloth
parentb856e5c7226e71e500be5eff7079c5d3b0e9e2f4 (diff)
downloadsloth-a653a6602fe5ae5eb4739755db7b34bc92ecdadf.tar.gz
More stuffs
Diffstat (limited to 'examples/webserver.sloth')
-rw-r--r--examples/webserver.sloth108
1 files changed, 108 insertions, 0 deletions
diff --git a/examples/webserver.sloth b/examples/webserver.sloth
new file mode 100644
index 0000000..abbead3
--- /dev/null
+++ b/examples/webserver.sloth
@@ -0,0 +1,108 @@
+# Include the external dependency itself as a module named "slow_api"
+use extern "slowapi" as slow_api;
+
+# Use some things from the "slow_api" module
+use std::serde::Serializable;
+use std::serde::format::Json;
+
+use slow_api::{SlowAPI, Method};
+
+# Construct a slow API server
+val server = SlowApi();
+
+type Person derives Serializable = {
+ name: String,
+ age: Option<String>
+};
+
+fn hello_route(
+ name: Argument<String>,
+ age: Argument<Option<String>>,
+) -> Json<Person> {
+ Person { name, age }
+}
+
+# Start the server
+server
+ .route(Method::GET, "/hello", hello_route)
+ .start("0.0.0.0:8000");
+#
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+###
+type Poggies;
+
+trait Constructor<..T> {
+ fn new(..T) -> Self;
+}
+
+impl Constructor<> for Poggies {
+ fn new() -> Self {
+ #
+ }
+}
+
+impl<T: Constructor<>> Default for T {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+###
+type Person = {
+ name: String,
+ age: i32,
+};
+
+type Person derives Serialize, Deserialize = {
+ name: String,
+ age: i32,
+};
+
+@route::get("/teacup") # vvvvvv - Requires T to implement Serialize
+fn teacup_route() -> Response<Person> {
+ Response(418, Person {
+ name: "Cody Q",
+ age: 17,
+ })
+}