2023-06-15 07:10:20 -05:00
|
|
|
tag @?
|
|
|
|
namespace examples.full
|
|
|
|
|
|
|
|
// Standard Imports
|
|
|
|
import std::str::StringBounds
|
|
|
|
|
|
|
|
settings {
|
|
|
|
indexed-all=false
|
|
|
|
allow-debugging=true
|
|
|
|
}
|
|
|
|
|
2023-06-23 22:16:35 -05:00
|
|
|
|
|
|
|
@affects=struct protocol
|
|
|
|
settings MailSettings {
|
2023-06-15 07:10:20 -05:00
|
|
|
indexed=true
|
|
|
|
}
|
|
|
|
|
2023-06-23 22:16:35 -05:00
|
|
|
|
2023-06-15 07:10:20 -05:00
|
|
|
@settings=MailSettings
|
|
|
|
struct Mail {
|
|
|
|
1# sender: str
|
|
|
|
2# recipient: str
|
|
|
|
}
|
|
|
|
|
|
|
|
struct Article {
|
|
|
|
@validators=[StringBounds(min_chars=3 max_chars=32]
|
|
|
|
1# title: str
|
|
|
|
|
|
|
|
@validators=[StringBounds(min_chars=24 max_chars=412]
|
|
|
|
2# content: str
|
|
|
|
}
|
|
|
|
|
|
|
|
@hidden
|
|
|
|
@settings=MailSettings
|
|
|
|
protocol Mail {
|
|
|
|
1# async function send(Mail)
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Maximum amount of articles that a provider can send
|
|
|
|
const SENT_ARTICLES_MAX: u8 = 10
|
|
|
|
|
|
|
|
//#provider=Server // TODO: This is the original proposal, it would only dictate direction, below is the new proposal
|
|
|
|
#provider=Multiple consumer=Multiple // TODO: These parameters need more situational introspection to be documented
|
|
|
|
protocol Feed {
|
|
|
|
// Fetches new articles since last fetch
|
|
|
|
@flexible async stream
|
|
|
|
#timeout=1000ms per_send_timeout=10s cooldown=10s
|
|
|
|
1# function fetch_articles() -> Article[SENT_ARTICLES_MAX]
|
|
|
|
}
|