package example:service@0.1.0;
interface types {
resource request {
constructor(headers: list<tuple<list<u8>, list<u8>>>, body: list<u8>);
headers: func() -> list<tuple<list<u8>, list<u8>>>;
body: func() -> list<u8>;
}
resource response {
constructor(headers: list<tuple<list<u8>, list<u8>>>, body: list<u8>);
headers: func() -> list<tuple<list<u8>, list<u8>>>;
body: func() -> list<u8>;
}
enum error {
bad-request,
}
}
interface handler {
use types.{request, response, error};
execute: func(req: request) -> result<response, error>;
}
interface logging {
resource logger {
log: func(message: string);
}
get-logger: func() -> logger;
}
world service {
import logging;
export handler;
}
world middleware {
import logging;
import handler;
export handler;
}