|
55 | 55 | set_content_crs_header) |
56 | 56 | from pygeoapi.formatter.base import FormatterSerializationError |
57 | 57 | from pygeoapi.linked_data import geojson2jsonld |
| 58 | +from pygeoapi.openapi import get_oas_30_parameters |
58 | 59 | from pygeoapi.plugin import load_plugin, PLUGINS |
59 | 60 | from pygeoapi.provider.base import ( |
60 | 61 | ProviderGenericError, ProviderTypeError, SchemaType) |
61 | 62 |
|
62 | 63 | from pygeoapi.util import (filter_providers_by_type, to_json, |
63 | 64 | filter_dict_by_key_value, str2bool, |
64 | | - get_provider_by_type, render_j2_template) |
| 65 | + get_provider_by_type, render_j2_template, |
| 66 | + get_dataset_formatters) |
65 | 67 |
|
66 | 68 | from . import ( |
67 | 69 | APIRequest, API, SYSTEM_LOCALE, F_JSON, FORMAT_TYPES, F_HTML, F_JSONLD, |
@@ -350,13 +352,7 @@ def get_collection_items( |
350 | 352 | err.ogc_exception_code, err.message) |
351 | 353 |
|
352 | 354 | LOGGER.debug('Validating requested format') |
353 | | - dataset_formatters = {} |
354 | | - for key, value in PLUGINS['formatter'].items(): |
355 | | - df2 = load_plugin('formatter', {'name': key}) |
356 | | - dataset_formatters[df2.name] = df2 |
357 | | - for df in collections[dataset].get('formatters', []): |
358 | | - df2 = load_plugin('formatter', df) |
359 | | - dataset_formatters[df2.name] = df2 |
| 355 | + dataset_formatters = get_dataset_formatters(collections[dataset]) |
360 | 356 |
|
361 | 357 | if not request.is_valid(dataset_formatters.keys()): |
362 | 358 | return api.get_format_exception(request) |
@@ -1090,14 +1086,19 @@ def get_oas_30(cfg: dict, locale: str) -> tuple[list[dict[str, str]], dict[str, |
1090 | 1086 | v.get('limits', {}) |
1091 | 1087 | ) |
1092 | 1088 |
|
| 1089 | + dataset_formatters = get_dataset_formatters(v) |
| 1090 | + coll_f_parameter = deepcopy(get_oas_30_parameters(cfg, locale))['f'] # noqa |
| 1091 | + for key, value in dataset_formatters.items(): |
| 1092 | + coll_f_parameter['schema']['enum'].append(key) |
| 1093 | + |
1093 | 1094 | paths[items_path] = { |
1094 | 1095 | 'get': { |
1095 | 1096 | 'summary': f'Get {title} items', |
1096 | 1097 | 'description': description, |
1097 | 1098 | 'tags': [k], |
1098 | 1099 | 'operationId': f'get{k.capitalize()}Features', |
1099 | 1100 | 'parameters': [ |
1100 | | - {'$ref': '#/components/parameters/f'}, |
| 1101 | + coll_f_parameter, |
1101 | 1102 | {'$ref': '#/components/parameters/lang'}, |
1102 | 1103 | {'$ref': '#/components/parameters/bbox'}, |
1103 | 1104 | coll_limit, |
|
0 commit comments