services/ui_backend_service/api/config.py (16 lines of code) (raw):

import os from services.utils import handle_exceptions, web_response # These environment values will be available to the frontend ALLOWED_CONFIG_KEYS = [ 'GA_TRACKING_ID' ] class ConfigApi(object): """ Adds an Api endpoint for fetching required configuration variables for the frontend. """ def __init__(self, app): app.router.add_route('GET', '/config', self.get_config) @handle_exceptions async def get_config(self, request): """ --- description: Get all frontend configuration key-value pairs. tags: - Admin produces: - application/json responses: "200": description: Returns all allowed configuration key-value pairs for the frontend. schema: type: object properties: "ALLOWED_CONFIG_VARIABLE": type: string example: "value-to-pass-frontend-1234" description: "A frontend configuration variable from the server environment. These are exposed based on a whitelist on the server." "405": description: invalid HTTP Method """ config = {} for key in ALLOWED_CONFIG_KEYS: val = os.environ.get(key, None) if val: config[key] = val return web_response(200, config)