* Start a wip alignment
* Adding CRS to tile_matrix_set_links
* Refactor json structure tiles endpoint
* Link section in tileset
* Unit test
Co-authored-by: Francesco Bartoli <francesco.bartoli@geobeyond.it>
* Add gzip to API.py
* pytest for gzip
* fix pytest
* Update test_api.py
* Add gzip to server block of configuration files
* Update api.py to include gzip opts from config
Update logic behind gzip compression such that compression will only happen when gzip in the Accept-Encoding request header and config.server.gzip is True. Use server charset for encoding/decoding and include charset in Content-Type when compressed.
* Update pytest to use gzip config options
Update pytest to test with (gzip in Accept-Encoding & server.gzip = False), (gzip in Accept-Encoding & server.gzip = True), (gzip not in Accept-Encoding & server.gzip = True)
* Better Content Negotiation (#7)
* Change content negotiation in _get_format()
* Add to pytest and force h to always be string
* Force F_JSON to default response
* Update test_api.py for utf-16 encoding
* better content negotiation pytest.
* Add comments to pytest
* Fix flake 8
* Improve docstring for gzip decorator function
* fix Coverage output and format exception MIME type
* Minor tweaks, added test to assert that a text/html header (without 'f' query param) returns JSON for get_collection_coverage()
Co-authored-by: Sander Schaminee <sander.schaminee@geocat.net>
* Created localization (l10n) module + tests. Added l10n support to API and plugins (wip).
* Big refactor:
* All routed API methods are now decorated by @pre_process (consistency) and no longer have a headers+format argument but a request argument (**kwargs also removed)
* The pre_process decorator turns an incoming Flask/Starlette request into a generic APIRequest instance
* The new APIRequest class extracts all relevant info (params, data, locale, etc.) from the request and exposes them as properties
* Removed a lot of boilerplate (i.e. format checking) and wrapped that into methods
* Updated server-specific API calls in each route method (pass entire request object, not headers and query params)
* Several improvements and fixes:
* Updated OpenAPI page with "l" query param
* Added example translations (metadata)
* Changed plugin signature: added explicit locale attribute (instead of **kwargs)
* Moved locale processing to get_plugin_locale() function in l10n module
* API should pass raw requested locale to plugins, locale should always be set
* Fixed API tests and added APIRequest tests
* Prepared utils.py for Jinja2 i18n extension
* Rebased on commit b40297a8 and fixed compatibility with #661 and #662
* Updated documentation for language support
* Rebased and fixed compatibility with PR #658:
* Fixed EDR provider signature (added locale)
* Fixed EDR API routes and query function (and improved parameter-name handling)
* Fixed EDR tests
* Translate entire config in render_j2_template for requested locale:
* Added new translate_dict function to l10n module (+ tests)
* Updated all render_j2_template calls with locale parameter
* Updated pygeoapi-test-config.yml with some language structs
* Minor improvements
* support both 'language' and 'languages' property in server config and provider definitions
* renamed and modified translate_dict() to more generic translate_struct() function (l10n module)
* remove Content-Language header from provider responses if provider has no language support and format is json(ld)
* updated tests
* Leave provider locale handling to API
* Moved code to determine locale from providers to API class (and remove for formatters and processes)
* Removed locale parameter from plugin __init__ signatures
* Removed locale parameter from load_plugin()
* Added **kwargs to provider implementations for get, query, get_metadata, get_coverage_domainset and get_coverage_rangetype method signatures
* Added language=<locale> to all API calls to provider get, query, get_metadata, get_coverage_domainset and get_coverage_rangetype methods
* Use 'lang' instead of 'l' as language query parameter
* Updated Open API
* Updated documentation
* Fixed tests
* Implemented requested PR changes:
* Added usage examples to the APIRequest docstring
* Removed language support from coverage functions
* Updated plugins.rst and language.rst to match new behavior
* Removed language struct from resource links in pygeoapi-config.yml
* Rebased on latest master (fixed test_api.py)
* Rebased and applied fixes:
* Data property in APIRequest now is an awaitable attribute (fixed for Starlette compatibility)
* Named references to 'l' parameter to 'lang'
* Final changes/improvements:
* Make sure that Content-Language is always set;
* Added more tests to ensure that the default language returned is the first configured language (if no language was requested by the user);
* Updated docs;
* Replaced re-occuring strings with constants in api.py;
* Fixed Flake8 checks.
* add missing async to starlette routes (#704)
Co-authored-by: Tom Kralidis <tomkralidis@gmail.com>
* add process manager
* process manager updating
* control connectivity from inside manager
* missing method on execute_process function signature
* adds tinydb depenedency for requirements-provider
* adds some processes tests
* process manager under server config, not a process
* additional html rendering for jobs and processes
* fixes typo in docstring
* complete html templating for jobs and processes
* considers timezone when formatting processing start/end datetimes
* expanded locales; locale and tz environment variables
* makes environment TZ a global from pygeoapi/__init__.py
* don't redefine built-in format
* adds placeholder values in process form if given as examples
* placeholder in form handles null example
* changes to process progress update
* updates and changes to processing web UI
* adds python3-distutils dep, and env changes for TZs and locales
* adds tinydb dependency for processes
* Adds libpq-dev and related deps for processing - should eventually be reconciled
* minor margin change
* fix bug in postJob.js that prevented results from displaying
* move process elements around to economise on space
* adds second, complex process
* post data may be bytes
* make external process example
* adds redis process manager (may be moved to third-party plugin eventually)
* reintroduce default async processing; refactoring managers; improving sync/async processing ui
* throw pygeoapi ManagerExecuteError, not redis exception
* adds test for async-execute
* restores original test host
* separates async execute handler function
* adds support for file uploads as processing inputs
* adds endpoint for file download as process output
* naming consistency
* Fix job submission form in case server url is relative (#549)
`new URL()` fails if the first argument isn't a complete url
* Implement job deletion in UI, api and tinydb
* Also allow deletion from job list
The UI could be fancier by reloading the page or just removing the
deleted job right away, but I don't want to start building that now.
* Delete output file when deleting a job
* typo in test case
* move delete button in job view
* remove Dockerfile changes (cf #470)
* removes some docs/source*.rst absent in master
* fixes whitespace
* fixes pip installs
* removes more locale-specific content, cf 70
* fixes duplicate app following merge
* removes redis as default plugin
* removes ENV_TZ, cf #407
* fix typo
* fixes syntax error
* process execution test cleanup
* Fix format detection in execute_process (#589)
Before, html was always selected.
* remove db files in code directories, fix flake8, specific functionality
* remove interactive capabilities in lieu of Swagger
* Add basic openapi documentation for job detail endpoint (#590)
It's somewhat superficial still, e.g. jobId is missing as
proper parameter in the UI.
* Show elapsed time for currently running jobs (#591)
* flake8, jobs workflow
* update docs, DB path in test config
* more code cleanup
* manager workflow cleanup
* add default dummy manager
* update docs
* fix routes
* fixed per comments
* fix per comments
* fix per comments
* fix travis
* simply describe process logic
* simplify describe process logic
Co-authored-by: Tom Kralidis <tomkralidis@gmail.com>
Co-authored-by: Jorge de Jesus <jorge.jesus@gmail.com>
Co-authored-by: totycro <bernhard.mallinger@eox.at>
Co-authored-by: Richard Law <richard.law@cartoncloud.com.au>
* fix version output
* sort directory names
* unify tile tests
* fix typo in docs
* set OpenAPI info.version to pygeoapi version, add tiles output format
* align request/response headers, update not found tiles to return 404
* Add ogc api tiles implementation
* Add json response to tiles endpoint
* Return correct json payload
* Fix url generation
* Add vector tile layer with clickable items
* Fix typo
* Fix oafeat collection tiles link
* Add format to metadata link
* Fix almost all flake8 errors
* Fix metadata link
* Add routes to serving tiles
* Refactor tile implementation with an own module
* Add http client for mvt
* Fix visibility of tiles template
* Fix tiles in collection item page
* Change source to data coherently with stac provider
* Fix flake8 errors
* Fix test for conformance classes
* Fix flake8 errors
Fix flake8 errors
* Refactor to align with new configuration structure
* Fix MVT plugin name
* Add openapi tiles path and schemas
* Add ogc api tiles implementation
* Add json response to tiles endpoint
* Return correct json payload
* Fix url generation
* Add vector tile layer with clickable items
* Fix typo
* Fix oafeat collection tiles link
* Add format to metadata link
* Fix almost all flake8 errors
* Fix metadata link
* Add routes to serving tiles
* Refactor tile implementation with an own module
* Add http client for mvt
* Fix visibility of tiles template
* Fix tiles in collection item page
* Change source to data coherently with stac provider
* Fix flake8 errors
* Fix test for conformance classes
* Fix flake8 errors
Fix flake8 errors
* Refactor to align with new configuration structure
* Fix MVT plugin name
* Add openapi tiles path and schemas
* Fix flake errors
* Fix merge and tests
* Add test configuration and data for tiles
* Change mapbox vector tile provider name
* Fix provider inspection and filter
* Fix tiles rendering in collection page
* Add mimetype to the mvt provider
* Fix mimetype
* Rename functions accordingly to singular and plural forms
* Fix tiling schemes in tiles template
* Serve mvt through the pygeoapi route
* Refactor and add test for collection tiles
* Fix test for not being tiles
* Remove httpx dependency
* Fix missing comma
* Fix tests
* Fix flake8
* Add initial metadata implementation
* Fix route with preprocess
* Fix tiles template
Fix tiles template
* Complete tileset api and template
* Fix flake8
* Complete metadata with tilejson response
* Add support for local vector tiles
* Fix flake8
* Fix plugin tile object and provider name
* Add a todo comment
* testing alternate plugin setup, fix some HTML, add OpenAPI endpoint
* remove URI template
* add docs
* Fix failing test
* Fix flake8 error
Co-authored-by: Francesco Bartoli <francesco.bartoli@wfp.org>
Co-authored-by: Tom Kralidis <tomkralidis@gmail.com>