# Copyright (C) 2017-2018 Lars Wirzenius # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import ick2 class ControllerAPI: def __init__(self, state): self._state = state self._apis = {} def set_blob_service_url(self, url): # pragma: no cover self.find_missing_route('/version') api = self._apis.get('/version') if api: api.set_blob_service_url(url) ick2.log.log( 'info', msg_text='Set blob service url', url=url, version=api.get_version()) def find_missing_route(self, missing_path): # pragma: no cover apis = { '/version': ick2.VersionAPI, '/builds': ick2.BuildsAPI, '/logs': ick2.LogAPI, '/pipelines': ick2.PipelineAPI, '/projects': ick2.ProjectAPI, '/work': ick2.WorkAPI, '/workers': ick2.WorkerAPI, } for path in apis: if path not in self._apis: self._apis[path] = apis[path](self._state) routes = [] for path, api in self._apis.items(): self._state.load_resources(path[1:]) routes.extend(api.get_routes(path)) ick2.log.log('info', msg_texg='Found routes', routes=routes) return routes