mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-16 15:47:58 +00:00
Code is now organized by api version. So formatting has moved to the api.v1 module. Instead of holding a separate ResultFormatter object per result format, simply move the functions to the formater collector and hand in the requested format as a parameter. Thus reorganized, the api.v1 module can export three simple functions for result formatting which in turn makes the code that uses the formatters much simpler.
39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# This file is part of Nominatim. (https://nominatim.org)
|
|
#
|
|
# Copyright (C) 2023 by the Nominatim developer community.
|
|
# For a full list of authors see the git log.
|
|
"""
|
|
Output formatters for API version v1.
|
|
"""
|
|
from typing import Dict, Any
|
|
from collections import OrderedDict
|
|
import json
|
|
|
|
from nominatim.api.result_formatting import FormatDispatcher
|
|
from nominatim.api import StatusResult
|
|
|
|
dispatch = FormatDispatcher()
|
|
|
|
@dispatch.format_func(StatusResult, 'text')
|
|
def _format_status_text(result: StatusResult) -> str:
|
|
if result.status:
|
|
return f"ERROR: {result.message}"
|
|
|
|
return 'OK'
|
|
|
|
|
|
@dispatch.format_func(StatusResult, 'json')
|
|
def _format_status_json(result: StatusResult) -> str:
|
|
out: Dict[str, Any] = OrderedDict()
|
|
out['status'] = result.status
|
|
out['message'] = result.message
|
|
if result.data_updated is not None:
|
|
out['data_updated'] = result.data_updated.isoformat()
|
|
out['software_version'] = str(result.software_version)
|
|
if result.database_version is not None:
|
|
out['database_version'] = str(result.database_version)
|
|
|
|
return json.dumps(out)
|