yumemi/gen/reader/gate
面の門の宣言(<face>/src/gate.gleam の pub const gate、型は yumemi/gate)を読む。
宣言が無い面は、入口 Http の admit / subject から既定の門を組む(Authenticated の面だけ)。
CSP は門の csp(Page 群と閉じた指令の組、0.12)。host の綴りが外れれば exit 4(51 v6 第 38 条)。
数える口 pageview の欄の重なりと綴り(第 35 条)、pages の指し先(第 34 条)もここで見る。
session を読む口は api/src/server.gleam の attached_roles の ReadSession が指す attached の path
(framework は app の口の名を知らない)。門が session を読むのに ReadSession が無ければ exit 3。
Page の指し先(Exact / Prefix)が面の route に無ければ exit 4。
Types
pub type Fail {
ToSignIn(status: Int, back: Bool)
Deny(status: Int, body: String)
RedirectTo(location: String)
RedirectBack(location: String, param: String)
}
Constructors
-
ToSignIn(status: Int, back: Bool) -
Deny(status: Int, body: String) -
RedirectTo(location: String) -
RedirectBack(location: String, param: String)0.11.5:面の中の
locationへ、queryparamに要求の path + search を付けて返す。
pub type Gate {
Gate(
declared: Bool,
sign_in_path: String,
sign_in_fallback: String,
rules: List(Rule),
redirects: List(Redirect),
csp: List(Csp),
pageview: option.Option(Pageview),
session_path: option.Option(String),
)
}
Constructors
-
Gate( declared: Bool, sign_in_path: String, sign_in_fallback: String, rules: List(Rule), redirects: List(Redirect), csp: List(Csp), pageview: option.Option(Pageview), session_path: option.Option(String), )Arguments
- declared
-
src/gate.gleamから読んだか(False は入口からの既定か、門無し)。 - session_path
-
session を読む口の path(
ReadSessionの attached)。宣言が無ければ None。
pub type Match {
Exact(path: String)
Prefix(path: String)
Every
}
Constructors
-
Exact(path: String) -
Prefix(path: String) -
Every
pub type Pageview {
Pageview(
pages: List(Match),
only: List(model.GateWhen),
fields: List(model.PageviewField),
sink: model.PageviewSink,
)
}
Constructors
-
Pageview( pages: List(Match), only: List(model.GateWhen), fields: List(model.PageviewField), sink: model.PageviewSink, )
pub type Redirect {
Redirect(pages: List(Match), when: model.GateWhen, to: To)
}
Constructors
-
Redirect(pages: List(Match), when: model.GateWhen, to: To)
Values
pub fn covers(match: Match, path: String) -> Bool
match が route path を指すか(生成時の判定。実行時は gate.mjs が同じ規則で見る)。
pub const event_names: List(String)
受け口の event の欄の名(framework の id と fields の欄)。FromQuery の name には使えない(51 v6 第 35 条)。
pub fn field_names(field: model.PageviewField) -> List(String)
欄の名(送る本文の鍵)。Referrer は referrer_path / referrer_host の 2 つ。
pub fn host_spelling(host: String) -> Bool
host の綴り([a-z0-9.-]+、先頭に *. を 1 つ許す)。51 v6 第 38 条。
pub fn prefix_covers(prefix: String, route: String) -> Bool
pub fn read(
face_name: String,
face_units: List(source.Unit),
back_units: List(source.Unit),
entries: List(model.Entry),
route_paths: List(String),
session_path: option.Option(String),
) -> #(Gate, List(stop.Note))
pub fn reads_session(gate: Gate) -> Bool
門が session を読むか(rules・redirects か、条件 only を持つ pageview のどれかを持つ)。