Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions mapshader/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -654,3 +654,23 @@ def render_legend(source: MapSource):
geojson : string
"""
return json.dumps(get_legend(source))


def render_services(services: list):
"""
Get the MapService dictionary representation and return as a JSON string.

Parameters
----------
services : List of mapshader.service.MapService
The input datasource.

Returns
-------
geojson : string
"""
service_list = []
for service in services:
service_list.append(service.to_dict())

return json.dumps(service_list)
10 changes: 9 additions & 1 deletion mapshader/flask_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
from mapshader.core import render_map
from mapshader.core import render_geojson
from mapshader.core import render_legend
from mapshader.core import render_services

from mapshader.services import get_services, MapService

Expand Down Expand Up @@ -86,6 +87,11 @@ def flask_to_legend(source: MapSource):
return resp


def flask_to_services(services: list):
resp = render_services(services)
return resp


def build_previewer(service: MapService):
'''Helper function for creating a simple Bokeh figure with
a WMTS Tile Source.
Expand Down Expand Up @@ -187,6 +193,7 @@ def configure_app(app: Flask, user_source_filepath=None, contains=None):
partial(service_page, service=service))

app.add_url_rule('/', 'home', partial(index_page, services=services))
app.add_url_rule('/services', 'services', partial(flask_to_services, services=services))
app.add_url_rule('/psutil', 'psutil', psutil_fetching)

hello(services)
Expand Down Expand Up @@ -214,4 +221,5 @@ def create_app(user_source_filepath=None, contains=None):
if user_file:
user_file = path.abspath(path.expanduser(user_file))

app = create_app(user_file, contains=service_grep).run(host='0.0.0.0', debug=debug)
app = create_app(user_file, contains=service_grep).run(
host='0.0.0.0', debug=False)
14 changes: 14 additions & 0 deletions mapshader/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,20 @@ def service_page_name(self):
"""
return f'/{self.key}-{self.service_type}'

def to_dict(self):
"""
Get JSON representation of service
"""
service_dict = dict(
(key, getattr(self, key)) for key in dir(self) if "__" not in key
)
service_dict.pop("source")
service_dict.pop("renderers")
service_dict.pop("to_dict")
service_dict['type'] = service_dict['service_type']
service_dict.pop("service_type")
return service_dict

@property
def service_url(self):
raise NotImplementedError()
Expand Down