Migration This is my new public git source viewer. Source coming soon. Please contact with concerns/bugs. Contact me

internal/site/routes.go

79436f09f5539aac9b6f836b5b9049bbbece48aa · 2.6 KB · 79 lines raw

1 // Package site is the route table: the one file you edit when adding a
2 // page or an endpoint. Modules are the "what", routes are the "where".
3 package site
4
5 import (
6 "gsg/internal/api"
7 "gsg/internal/core"
8 )
9
10 func Routes() []core.Route {
11 return []core.Route{
12 // ---- site-scoped -------------------------------------------------
13 {Name: "index", Scope: core.ScopeSite,
14 Pattern: "GET /{$}",
15 Render: core.View{Template: "index.html"}},
16
17 {Name: "api-index", Scope: core.ScopeSite,
18 Pattern: "GET /api/repos.json",
19 Render: core.JSON{Build: api.IndexEndpoint}},
20
21 // ---- per repository ----------------------------------------------
22 // NavLabel order below is the order tabs appear in the repo-scoped
23 // nav (top bar and page-nav chips) -- see core.BuildNav.
24 {Name: "repo",
25 Pattern: "GET /{repo}/{$}",
26 Render: core.View{Template: "tree.html"}},
27
28 {Name: "api-repo",
29 Pattern: "GET /{repo}/api/repo.json",
30 Render: core.JSON{Build: api.RepoEndpoint}},
31
32 // {rest...} fuses ref and path; SplitRefPath separates them by
33 // longest-matching ref, so feature/x/src/main.go works.
34 {Name: "tree", NavLabel: "files",
35 Pattern: "GET /{repo}/tree/{rest...}",
36 Render: core.View{Template: "tree.html"}},
37
38 {Name: "log", NavLabel: "log",
39 Pattern: "GET /{repo}/log/{rest...}",
40 Render: core.View{Template: "log.html"},
41 PageSize: core.LogPageSize},
42
43 {Name: "blob",
44 Pattern: "GET /{repo}/blob/{rest...}",
45 Render: core.View{Template: "blob.html"}},
46
47 // Actual file bytes. See core.Raw for why this is not text/html.
48 {Name: "raw",
49 Pattern: "GET /{repo}/raw/{rest...}",
50 Render: core.Raw{Module: "blobraw"}},
51
52 // The DAG across every ref. {rest...} carries only a ref (never a
53 // path, there's nothing to browse into) -- it exists purely so the
54 // selected branch survives navigating here and back out again.
55 {Name: "graph", NavLabel: "graph",
56 Pattern: "GET /{repo}/graph/{rest...}",
57 Render: core.View{Template: "graph.html"},
58 PageSize: core.GraphPageSize},
59
60 {Name: "refs", NavLabel: "refs",
61 Pattern: "GET /{repo}/refs/{rest...}",
62 Render: core.View{Template: "refs.html"}},
63
64 // Arbitrary two-commit diff: /demo/compare/main...feature
65 {Name: "compare",
66 Pattern: "GET /{repo}/compare/{range}",
67 Render: core.View{Template: "compare.html"},
68 Request: CompareRequest},
69
70 // SHA-addressed: content can never change, so cache forever.
71 {Name: "commit", Immutable: true,
72 Pattern: "GET /{repo}/commit/{rev}",
73 Render: core.View{Template: "commit.html"}},
74
75 {Name: "api-commit", Immutable: true,
76 Pattern: "GET /{repo}/api/commit/{rev}",
77 Render: core.JSON{Build: api.CommitEndpoint}},
78 }
79 }