1+ <!doctype html>
2+ < html lang ="en ">
3+ < head >
4+ < meta charset ="utf-8 ">
5+ < meta name ="viewport " content ="width=device-width, initial-scale=1, minimum-scale=1 " />
6+ < meta name ="generator " content ="pdoc 0.10.0 " />
7+ < title > slack_bolt.adapter.tornado.async_handler API documentation</ title >
8+ < meta name ="description " content ="" />
9+ < link rel ="preload stylesheet " as ="style " href ="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css " integrity ="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs= " crossorigin >
10+ < link rel ="preload stylesheet " as ="style " href ="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/typography.min.css " integrity ="sha256-7l/o7C8jubJiy74VsKTidCy1yBkRtiUGbVkYBylBqUg= " crossorigin >
11+ < link rel ="stylesheet preload " as ="style " href ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/github.min.css " crossorigin >
12+ < style > : root {--highlight-color : # fe9 }.flex {display : flex !important }body {line-height : 1.5em }# content {padding : 20px }# sidebar {padding : 30px ;overflow : hidden}# sidebar > * : last-child {margin-bottom : 2cm }.http-server-breadcrumbs {font-size : 130% ;margin : 0 0 15px 0 }# footer {font-size : .75em ;padding : 5px 30px ;border-top : 1px solid # ddd ;text-align : right}# footer p {margin : 0 0 0 1em ;display : inline-block}# footer p : last-child {margin-right : 30px }h1 , h2 , h3 , h4 , h5 {font-weight : 300 }h1 {font-size : 2.5em ;line-height : 1.1em }h2 {font-size : 1.75em ;margin : 1em 0 .50em 0 }h3 {font-size : 1.4em ;margin : 25px 0 10px 0 }h4 {margin : 0 ;font-size : 105% }h1 : target , h2 : target , h3 : target , h4 : target , h5 : target , h6 : target {background : var (--highlight-color );padding : .2em 0 }a {color : # 058 ;text-decoration : none;transition : color .3s ease-in-out}a : hover {color : # e82 }.title code {font-weight : bold}h2 [id ^= "header-" ]{margin-top : 2em }.ident {color : # 900 }pre code {background : # f8f8f8 ;font-size : .8em ;line-height : 1.4em }code {background : # f2f2f1 ;padding : 1px 4px ;overflow-wrap : break-word}h1 code {background : transparent}pre {background : # f8f8f8 ;border : 0 ;border-top : 1px solid # ccc ;border-bottom : 1px solid # ccc ;margin : 1em 0 ;padding : 1ex }# http-server-module-list {display : flex;flex-flow : column}# http-server-module-list div {display : flex}# http-server-module-list dt {min-width : 10% }# http-server-module-list p {margin-top : 0 }.toc ul , # index {list-style-type : none;margin : 0 ;padding : 0 }# index code {background : transparent}# index h3 {border-bottom : 1px solid # ddd }# index ul {padding : 0 }# index h4 {margin-top : .6em ;font-weight : bold}@media (min-width : 200ex ){# index .two-column {column-count : 2 }}@media (min-width : 300ex ){# index .two-column {column-count : 3 }}dl {margin-bottom : 2em }dl dl : last-child {margin-bottom : 4em }dd {margin : 0 0 1em 3em }# header-classes + dl > dd {margin-bottom : 3em }dd dd {margin-left : 2em }dd p {margin : 10px 0 }.name {background : # eee ;font-weight : bold;font-size : .85em ;padding : 5px 10px ;display : inline-block;min-width : 40% }.name : hover {background : # e0e0e0 }dt : target .name {background : var (--highlight-color )}.name > span : first-child {white-space : nowrap}.name .class > span : nth-child (2 ){margin-left : .4em }.inherited {color : # 999 ;border-left : 5px solid # eee ;padding-left : 1em }.inheritance em {font-style : normal;font-weight : bold}.desc h2 {font-weight : 400 ;font-size : 1.25em }.desc h3 {font-size : 1em }.desc dt code {background : inherit}.source summary , .git-link-div {color : # 666 ;text-align : right;font-weight : 400 ;font-size : .8em ;text-transform : uppercase}.source summary > * {white-space : nowrap;cursor : pointer}.git-link {color : inherit;margin-left : 1em }.source pre {max-height : 500px ;overflow : auto;margin : 0 }.source pre code {font-size : 12px ;overflow : visible}.hlist {list-style : none}.hlist li {display : inline}.hlist li : after {content : ',\2002' }.hlist li : last-child : after {content : none}.hlist .hlist {display : inline;padding-left : 1em }img {max-width : 100% }td {padding : 0 .5em }.admonition {padding : .1em .5em ;margin-bottom : 1em }.admonition-title {font-weight : bold}.admonition .note , .admonition .info , .admonition .important {background : # aef }.admonition .todo , .admonition .versionadded , .admonition .tip , .admonition .hint {background : # dfd }.admonition .warning , .admonition .versionchanged , .admonition .deprecated {background : # fd4 }.admonition .error , .admonition .danger , .admonition .caution {background : lightpink}</ style >
13+ < style media ="screen and (min-width: 700px) "> @media screen and (min-width : 700px ){# sidebar {width : 30% ;height : 100vh ;overflow : auto;position : sticky;top : 0 }# content {width : 70% ;max-width : 100ch ;padding : 3em 4em ;border-left : 1px solid # ddd }pre code {font-size : 1em }.item .name {font-size : 1em }main {display : flex;flex-direction : row-reverse;justify-content : flex-end}.toc ul ul , # index ul {padding-left : 1.5em }.toc > ul > li {margin-top : .5em }}</ style >
14+ < style media ="print "> @media print{# sidebar h1 {page-break-before : always}.source {display : none}}@media print{* {background : transparent !important ;color : # 000 !important ;box-shadow : none !important ;text-shadow : none !important }a [href ]: after {content : " (" attr (href) ")" ;font-size : 90% }a [href ][title ]: after {content : none}abbr [title ]: after {content : " (" attr (title) ")" }.ir a : after , a [href ^= "javascript:" ]: after , a [href ^= "#" ]: after {content : "" }pre , blockquote {border : 1px solid # 999 ;page-break-inside : avoid}thead {display : table-header-group}tr , img {page-break-inside : avoid}img {max-width : 100% !important }@page {margin : 0.5cm }p , h2 , h3 {orphans : 3 ;widows : 3 }h1 , h2 , h3 , h4 , h5 , h6 {page-break-after : avoid}}</ style >
15+ < script defer src ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js " integrity ="sha256-Uv3H6lx7dJmRfRvH8TH6kJD1TSK1aFcwgx+mdg3epi8= " crossorigin > </ script >
16+ < script > window . addEventListener ( 'DOMContentLoaded' , ( ) => hljs . initHighlighting ( ) ) </ script >
17+ </ head >
18+ < body >
19+ < main >
20+ < article id ="content ">
21+ < header >
22+ < h1 class ="title "> Module < code > slack_bolt.adapter.tornado.async_handler</ code > </ h1 >
23+ </ header >
24+ < section id ="section-intro ">
25+ < details class ="source ">
26+ < summary >
27+ < span > Expand source code</ span >
28+ </ summary >
29+ < pre > < code class ="python "> from tornado.httputil import HTTPServerRequest
30+ from tornado.web import RequestHandler
31+
32+ from slack_bolt.async_app import AsyncApp
33+ from slack_bolt.oauth.async_oauth_flow import AsyncOAuthFlow
34+ from slack_bolt.request.async_request import AsyncBoltRequest
35+ from slack_bolt.response import BoltResponse
36+ from .handler import set_response
37+
38+
39+ class AsyncSlackEventsHandler(RequestHandler):
40+ def initialize(self, app: AsyncApp): # type: ignore
41+ self.app = app
42+
43+ async def post(self):
44+ bolt_resp: BoltResponse = await self.app.async_dispatch(to_async_bolt_request(self.request))
45+ set_response(self, bolt_resp)
46+ return
47+
48+
49+ class AsyncSlackOAuthHandler(RequestHandler):
50+ def initialize(self, app: AsyncApp): # type: ignore
51+ self.app = app
52+
53+ async def get(self):
54+ if self.app.oauth_flow is not None: # type: ignore
55+ oauth_flow: AsyncOAuthFlow = self.app.oauth_flow # type: ignore
56+ if self.request.path == oauth_flow.install_path:
57+ bolt_resp = await oauth_flow.handle_installation(to_async_bolt_request(self.request))
58+ set_response(self, bolt_resp)
59+ return
60+ elif self.request.path == oauth_flow.redirect_uri_path:
61+ bolt_resp = await oauth_flow.handle_callback(to_async_bolt_request(self.request))
62+ set_response(self, bolt_resp)
63+ return
64+ self.set_status(404)
65+
66+
67+ def to_async_bolt_request(req: HTTPServerRequest) -> AsyncBoltRequest:
68+ return AsyncBoltRequest(
69+ body=req.body.decode("utf-8") if req.body else "",
70+ query=req.query,
71+ headers=req.headers,
72+ )</ code > </ pre >
73+ </ details >
74+ </ section >
75+ < section >
76+ </ section >
77+ < section >
78+ </ section >
79+ < section >
80+ < h2 class ="section-title " id ="header-functions "> Functions</ h2 >
81+ < dl >
82+ < dt id ="slack_bolt.adapter.tornado.async_handler.to_async_bolt_request "> < code class ="name flex ">
83+ < span > def < span class ="ident "> to_async_bolt_request</ span > </ span > (< span > req: tornado.httputil.HTTPServerRequest) ‑> < a title ="slack_bolt.request.async_request.AsyncBoltRequest " href ="../../request/async_request.html#slack_bolt.request.async_request.AsyncBoltRequest "> AsyncBoltRequest</ a > </ span >
84+ </ code > </ dt >
85+ < dd >
86+ < div class ="desc "> </ div >
87+ < details class ="source ">
88+ < summary >
89+ < span > Expand source code</ span >
90+ </ summary >
91+ < pre > < code class ="python "> def to_async_bolt_request(req: HTTPServerRequest) -> AsyncBoltRequest:
92+ return AsyncBoltRequest(
93+ body=req.body.decode("utf-8") if req.body else "",
94+ query=req.query,
95+ headers=req.headers,
96+ )</ code > </ pre >
97+ </ details >
98+ </ dd >
99+ </ dl >
100+ </ section >
101+ < section >
102+ < h2 class ="section-title " id ="header-classes "> Classes</ h2 >
103+ < dl >
104+ < dt id ="slack_bolt.adapter.tornado.async_handler.AsyncSlackEventsHandler "> < code class ="flex name class ">
105+ < span > class < span class ="ident "> AsyncSlackEventsHandler</ span > </ span >
106+ < span > (</ span > < span > application: Application, request: tornado.httputil.HTTPServerRequest, **kwargs: Any)</ span >
107+ </ code > </ dt >
108+ < dd >
109+ < div class ="desc "> < p > Base class for HTTP request handlers.</ p >
110+ < p > Subclasses must define at least one of the methods defined in the
111+ "Entry points" section below.</ p >
112+ < p > Applications should not construct < code > RequestHandler</ code > objects
113+ directly and subclasses should not override < code > __init__</ code > (override
114+ < code > ~RequestHandler.initialize</ code > instead).</ p > </ div >
115+ < details class ="source ">
116+ < summary >
117+ < span > Expand source code</ span >
118+ </ summary >
119+ < pre > < code class ="python "> class AsyncSlackEventsHandler(RequestHandler):
120+ def initialize(self, app: AsyncApp): # type: ignore
121+ self.app = app
122+
123+ async def post(self):
124+ bolt_resp: BoltResponse = await self.app.async_dispatch(to_async_bolt_request(self.request))
125+ set_response(self, bolt_resp)
126+ return</ code > </ pre >
127+ </ details >
128+ < h3 > Ancestors</ h3 >
129+ < ul class ="hlist ">
130+ < li > tornado.web.RequestHandler</ li >
131+ </ ul >
132+ < h3 > Methods</ h3 >
133+ < dl >
134+ < dt id ="slack_bolt.adapter.tornado.async_handler.AsyncSlackEventsHandler.initialize "> < code class ="name flex ">
135+ < span > def < span class ="ident "> initialize</ span > </ span > (< span > self, app: < a title ="slack_bolt.app.async_app.AsyncApp " href ="../../app/async_app.html#slack_bolt.app.async_app.AsyncApp "> AsyncApp</ a > )</ span >
136+ </ code > </ dt >
137+ < dd >
138+ < div class ="desc "> </ div >
139+ < details class ="source ">
140+ < summary >
141+ < span > Expand source code</ span >
142+ </ summary >
143+ < pre > < code class ="python "> def initialize(self, app: AsyncApp): # type: ignore
144+ self.app = app</ code > </ pre >
145+ </ details >
146+ </ dd >
147+ < dt id ="slack_bolt.adapter.tornado.async_handler.AsyncSlackEventsHandler.post "> < code class ="name flex ">
148+ < span > async def < span class ="ident "> post</ span > </ span > (< span > self)</ span >
149+ </ code > </ dt >
150+ < dd >
151+ < div class ="desc "> </ div >
152+ < details class ="source ">
153+ < summary >
154+ < span > Expand source code</ span >
155+ </ summary >
156+ < pre > < code class ="python "> async def post(self):
157+ bolt_resp: BoltResponse = await self.app.async_dispatch(to_async_bolt_request(self.request))
158+ set_response(self, bolt_resp)
159+ return</ code > </ pre >
160+ </ details >
161+ </ dd >
162+ </ dl >
163+ </ dd >
164+ < dt id ="slack_bolt.adapter.tornado.async_handler.AsyncSlackOAuthHandler "> < code class ="flex name class ">
165+ < span > class < span class ="ident "> AsyncSlackOAuthHandler</ span > </ span >
166+ < span > (</ span > < span > application: Application, request: tornado.httputil.HTTPServerRequest, **kwargs: Any)</ span >
167+ </ code > </ dt >
168+ < dd >
169+ < div class ="desc "> < p > Base class for HTTP request handlers.</ p >
170+ < p > Subclasses must define at least one of the methods defined in the
171+ "Entry points" section below.</ p >
172+ < p > Applications should not construct < code > RequestHandler</ code > objects
173+ directly and subclasses should not override < code > __init__</ code > (override
174+ < code > ~RequestHandler.initialize</ code > instead).</ p > </ div >
175+ < details class ="source ">
176+ < summary >
177+ < span > Expand source code</ span >
178+ </ summary >
179+ < pre > < code class ="python "> class AsyncSlackOAuthHandler(RequestHandler):
180+ def initialize(self, app: AsyncApp): # type: ignore
181+ self.app = app
182+
183+ async def get(self):
184+ if self.app.oauth_flow is not None: # type: ignore
185+ oauth_flow: AsyncOAuthFlow = self.app.oauth_flow # type: ignore
186+ if self.request.path == oauth_flow.install_path:
187+ bolt_resp = await oauth_flow.handle_installation(to_async_bolt_request(self.request))
188+ set_response(self, bolt_resp)
189+ return
190+ elif self.request.path == oauth_flow.redirect_uri_path:
191+ bolt_resp = await oauth_flow.handle_callback(to_async_bolt_request(self.request))
192+ set_response(self, bolt_resp)
193+ return
194+ self.set_status(404)</ code > </ pre >
195+ </ details >
196+ < h3 > Ancestors</ h3 >
197+ < ul class ="hlist ">
198+ < li > tornado.web.RequestHandler</ li >
199+ </ ul >
200+ < h3 > Methods</ h3 >
201+ < dl >
202+ < dt id ="slack_bolt.adapter.tornado.async_handler.AsyncSlackOAuthHandler.get "> < code class ="name flex ">
203+ < span > async def < span class ="ident "> get</ span > </ span > (< span > self)</ span >
204+ </ code > </ dt >
205+ < dd >
206+ < div class ="desc "> </ div >
207+ < details class ="source ">
208+ < summary >
209+ < span > Expand source code</ span >
210+ </ summary >
211+ < pre > < code class ="python "> async def get(self):
212+ if self.app.oauth_flow is not None: # type: ignore
213+ oauth_flow: AsyncOAuthFlow = self.app.oauth_flow # type: ignore
214+ if self.request.path == oauth_flow.install_path:
215+ bolt_resp = await oauth_flow.handle_installation(to_async_bolt_request(self.request))
216+ set_response(self, bolt_resp)
217+ return
218+ elif self.request.path == oauth_flow.redirect_uri_path:
219+ bolt_resp = await oauth_flow.handle_callback(to_async_bolt_request(self.request))
220+ set_response(self, bolt_resp)
221+ return
222+ self.set_status(404)</ code > </ pre >
223+ </ details >
224+ </ dd >
225+ < dt id ="slack_bolt.adapter.tornado.async_handler.AsyncSlackOAuthHandler.initialize "> < code class ="name flex ">
226+ < span > def < span class ="ident "> initialize</ span > </ span > (< span > self, app: < a title ="slack_bolt.app.async_app.AsyncApp " href ="../../app/async_app.html#slack_bolt.app.async_app.AsyncApp "> AsyncApp</ a > )</ span >
227+ </ code > </ dt >
228+ < dd >
229+ < div class ="desc "> </ div >
230+ < details class ="source ">
231+ < summary >
232+ < span > Expand source code</ span >
233+ </ summary >
234+ < pre > < code class ="python "> def initialize(self, app: AsyncApp): # type: ignore
235+ self.app = app</ code > </ pre >
236+ </ details >
237+ </ dd >
238+ </ dl >
239+ </ dd >
240+ </ dl >
241+ </ section >
242+ </ article >
243+ < nav id ="sidebar ">
244+ < h1 > Index</ h1 >
245+ < div class ="toc ">
246+ < ul > </ ul >
247+ </ div >
248+ < ul id ="index ">
249+ < li > < h3 > Super-module</ h3 >
250+ < ul >
251+ < li > < code > < a title ="slack_bolt.adapter.tornado " href ="index.html "> slack_bolt.adapter.tornado</ a > </ code > </ li >
252+ </ ul >
253+ </ li >
254+ < li > < h3 > < a href ="#header-functions "> Functions</ a > </ h3 >
255+ < ul class ="">
256+ < li > < code > < a title ="slack_bolt.adapter.tornado.async_handler.to_async_bolt_request " href ="#slack_bolt.adapter.tornado.async_handler.to_async_bolt_request "> to_async_bolt_request</ a > </ code > </ li >
257+ </ ul >
258+ </ li >
259+ < li > < h3 > < a href ="#header-classes "> Classes</ a > </ h3 >
260+ < ul >
261+ < li >
262+ < h4 > < code > < a title ="slack_bolt.adapter.tornado.async_handler.AsyncSlackEventsHandler " href ="#slack_bolt.adapter.tornado.async_handler.AsyncSlackEventsHandler "> AsyncSlackEventsHandler</ a > </ code > </ h4 >
263+ < ul class ="">
264+ < li > < code > < a title ="slack_bolt.adapter.tornado.async_handler.AsyncSlackEventsHandler.initialize " href ="#slack_bolt.adapter.tornado.async_handler.AsyncSlackEventsHandler.initialize "> initialize</ a > </ code > </ li >
265+ < li > < code > < a title ="slack_bolt.adapter.tornado.async_handler.AsyncSlackEventsHandler.post " href ="#slack_bolt.adapter.tornado.async_handler.AsyncSlackEventsHandler.post "> post</ a > </ code > </ li >
266+ </ ul >
267+ </ li >
268+ < li >
269+ < h4 > < code > < a title ="slack_bolt.adapter.tornado.async_handler.AsyncSlackOAuthHandler " href ="#slack_bolt.adapter.tornado.async_handler.AsyncSlackOAuthHandler "> AsyncSlackOAuthHandler</ a > </ code > </ h4 >
270+ < ul class ="">
271+ < li > < code > < a title ="slack_bolt.adapter.tornado.async_handler.AsyncSlackOAuthHandler.get " href ="#slack_bolt.adapter.tornado.async_handler.AsyncSlackOAuthHandler.get "> get</ a > </ code > </ li >
272+ < li > < code > < a title ="slack_bolt.adapter.tornado.async_handler.AsyncSlackOAuthHandler.initialize " href ="#slack_bolt.adapter.tornado.async_handler.AsyncSlackOAuthHandler.initialize "> initialize</ a > </ code > </ li >
273+ </ ul >
274+ </ li >
275+ </ ul >
276+ </ li >
277+ </ ul >
278+ </ nav >
279+ </ main >
280+ < footer id ="footer ">
281+ < p > Generated by < a href ="https://pdoc3.github.io/pdoc " title ="pdoc: Python API documentation generator "> < cite > pdoc</ cite > 0.10.0</ a > .</ p >
282+ </ footer >
283+ </ body >
284+ </ html >
0 commit comments