♻️ Copy session-handling code to FreenetRequest
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / WebInterfaceModule.kt
1 package net.pterodactylus.sone.web
2
3 import com.google.inject.*
4 import freenet.l10n.*
5 import freenet.support.api.*
6 import net.pterodactylus.sone.core.*
7 import net.pterodactylus.sone.data.*
8 import net.pterodactylus.sone.database.*
9 import net.pterodactylus.sone.freenet.*
10 import net.pterodactylus.sone.freenet.wot.*
11 import net.pterodactylus.sone.main.*
12 import net.pterodactylus.sone.template.*
13 import net.pterodactylus.sone.text.*
14 import net.pterodactylus.util.template.*
15 import javax.inject.Singleton
16
17 class WebInterfaceModule : AbstractModule() {
18
19         @Provides
20         @Singleton
21         fun getTemplateContextFactory(
22                         soneAccessor: SoneAccessor,
23                         postAccessor: PostAccessor,
24                         replyAccessor: ReplyAccessor,
25                         identityAccessor: IdentityAccessor,
26                         profileAccessor: ProfileAccessor,
27                         l10nFilter: L10nFilter,
28                         parserFilter: ParserFilter,
29                         renderFilter: RenderFilter,
30                         linkedElementsFilter: LinkedElementsFilter,
31                         unknownDateFilter: UnknownDateFilter,
32                         imageLinkFilter: ImageLinkFilter,
33                         loaders: Loaders
34         ) =
35                         TemplateContextFactory().apply {
36                                 addAccessor(Any::class.java, ReflectionAccessor())
37                                 addAccessor(Collection::class.java, CollectionAccessor())
38                                 addAccessor(Sone::class.java, soneAccessor)
39                                 addAccessor(Post::class.java, postAccessor)
40                                 addAccessor(Reply::class.java, replyAccessor)
41                                 addAccessor(Album::class.java, AlbumAccessor())
42                                 addAccessor(Image::class.java, ImageAccessor())
43                                 addAccessor(Identity::class.java, identityAccessor)
44                                 addAccessor(Trust::class.java, TrustAccessor())
45                                 addAccessor(HTTPRequest::class.java, HttpRequestAccessor())
46                                 addAccessor(Profile::class.java, profileAccessor)
47
48                                 addFilter("date", DateFilter())
49                                 addFilter("html", HtmlFilter())
50                                 addFilter("replace", ReplaceFilter())
51                                 addFilter("store", StoreFilter())
52                                 addFilter("l10n", l10nFilter)
53                                 addFilter("substring", SubstringFilter())
54                                 addFilter("xml", XmlFilter())
55                                 addFilter("change", RequestChangeFilter())
56                                 addFilter("match", MatchFilter())
57                                 addFilter("css", CssClassNameFilter())
58                                 addFilter("js", JavascriptFilter())
59                                 addFilter("parse", parserFilter)
60                                 addFilter("shorten", ShortenFilter())
61                                 addFilter("render", renderFilter)
62                                 addFilter("linked-elements", linkedElementsFilter)
63                                 addFilter("render-linked-element", LinkedElementRenderFilter())
64                                 addFilter("reparse", ReparseFilter())
65                                 addFilter("unknown", unknownDateFilter)
66                                 addFilter("format", FormatFilter())
67                                 addFilter("sort", CollectionSortFilter())
68                                 addFilter("image-link", imageLinkFilter)
69                                 addFilter("replyGroup", ReplyGroupFilter())
70                                 addFilter("in", ContainsFilter())
71                                 addFilter("unique", UniqueElementFilter())
72                                 addFilter("mod", ModFilter())
73                                 addFilter("paginate", PaginationFilter())
74
75                                 addProvider(TemplateProvider.TEMPLATE_CONTEXT_PROVIDER)
76                                 addProvider(loaders.templateProvider)
77                         }
78
79         @Provides
80         fun getSoneAccessor(core: Core, timeTextConverter: TimeTextConverter) =
81                         SoneAccessor(core, timeTextConverter)
82
83         @Provides
84         fun getPostAccessor(core: Core) =
85                         PostAccessor(core)
86
87         @Provides
88         fun getReplyAccessor(core: Core) =
89                         ReplyAccessor(core)
90
91         @Provides
92         fun getIdentityAccessor(core: Core) =
93                         IdentityAccessor(core)
94
95         @Provides
96         fun getProfileAccessor(core: Core) =
97                         ProfileAccessor(core)
98
99         @Provides
100         fun getL10nFilter(l10n: BaseL10n) =
101                         L10nFilter(l10n)
102
103         @Provides
104         fun getParserFilter(core: Core, soneTextParser: SoneTextParser) =
105                         ParserFilter(core, soneTextParser)
106
107         @Provides
108         fun getRenderFilter(soneProvider: SoneProvider, soneTextParser: SoneTextParser, htmlFilter: HtmlFilter) =
109                         RenderFilter(soneProvider, soneTextParser, htmlFilter)
110
111         @Provides
112         fun getLinkedElementsFilter(elementLoader: ElementLoader) =
113                         LinkedElementsFilter(elementLoader)
114
115         @Provides
116         fun getUnknownDateFilter(l10n: BaseL10n) =
117                         UnknownDateFilter(l10n, "View.Sone.Text.UnknownDate")
118
119         @Provides
120         fun getImageLinkFilter(core: Core) =
121                         ImageLinkFilter(core)
122
123 }