@@ -122,6 +122,94 @@ def ping(
122122 return {"database_online" : False }
123123
124124
125+ ###############################################################################
126+ # Landing page Endpoint
127+ @app .get (
128+ "/" ,
129+ response_class = HTMLResponse ,
130+ )
131+ def landing (request : Request ):
132+ """Get landing page."""
133+ data = {
134+ "title" : "eoAPI-Raster" ,
135+ "links" : [
136+ {
137+ "title" : "Landing page" ,
138+ "href" : str (request .url_for ("landing" )),
139+ "type" : "text/html" ,
140+ "rel" : "self" ,
141+ },
142+ {
143+ "title" : "the API definition (JSON)" ,
144+ "href" : str (request .url_for ("openapi" )),
145+ "type" : "application/vnd.oai.openapi+json;version=3.0" ,
146+ "rel" : "service-desc" ,
147+ },
148+ {
149+ "title" : "the API documentation" ,
150+ "href" : str (request .url_for ("swagger_ui_html" )),
151+ "type" : "text/html" ,
152+ "rel" : "service-doc" ,
153+ },
154+ {
155+ "title" : "Mosaic List (JSON)" ,
156+ "href" : mosaic .url_for (request , "list_mosaic" ),
157+ "type" : "application/json" ,
158+ "rel" : "data" ,
159+ },
160+ {
161+ "title" : "Mosaic Metadata (template URL)" ,
162+ "href" : mosaic .url_for (request , "info_search" , searchid = "{searchid}" ),
163+ "type" : "application/json" ,
164+ "rel" : "data" ,
165+ },
166+ {
167+ "title" : "Mosaic viewer (template URL)" ,
168+ "href" : mosaic .url_for (request , "map_viewer" , searchid = "{searchid}" ),
169+ "type" : "text/html" ,
170+ "rel" : "data" ,
171+ },
172+ {
173+ "title" : "TiTiler-pgSTAC Documentation (external link)" ,
174+ "href" : "https://stac-utils.github.io/titiler-pgstac/" ,
175+ "type" : "text/html" ,
176+ "rel" : "doc" ,
177+ },
178+ ],
179+ }
180+
181+ urlpath = request .url .path
182+ crumbs = []
183+ baseurl = str (request .base_url ).rstrip ("/" )
184+
185+ crumbpath = str (baseurl )
186+ for crumb in urlpath .split ("/" ):
187+ crumbpath = crumbpath .rstrip ("/" )
188+ part = crumb
189+ if part is None or part == "" :
190+ part = "Home"
191+ crumbpath += f"/{ crumb } "
192+ crumbs .append ({"url" : crumbpath .rstrip ("/" ), "part" : part .capitalize ()})
193+
194+ return templates .TemplateResponse (
195+ "landing.html" ,
196+ {
197+ "request" : request ,
198+ "response" : data ,
199+ "template" : {
200+ "api_root" : baseurl ,
201+ "params" : request .query_params ,
202+ "title" : "" ,
203+ },
204+ "crumbs" : crumbs ,
205+ "url" : str (request .url ),
206+ "baseurl" : baseurl ,
207+ "urlpath" : str (request .url .path ),
208+ "urlparams" : str (request .url .query ),
209+ },
210+ )
211+
212+
125213if settings .cors_origins :
126214 app .add_middleware (
127215 CORSMiddleware ,
0 commit comments