# Copyright (C) 2011-2024 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License, version 3 # (only), as published by the Free Software Foundation. # # 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 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 . # # This program is dual-licensed. If you wish to learn more about the # RhodeCode Enterprise Edition, including its added features, Support services, # and proprietary license terms, please see https://rhodecode.com/licenses/ import datetime import decimal import logging import time from rhodecode.api import jsonrpc_method, jsonrpc_deprecated_method, JSONRPCError, JSONRPCForbidden from rhodecode.api.utils import Optional, OAttr log = logging.getLogger(__name__) @jsonrpc_method() def test(request, apiuser, args): return args @jsonrpc_method() def test_ok(request, apiuser): return { 'who': f'hello {apiuser}', 'obj': { 'time': time.time(), 'dt': datetime.datetime.now(), 'decimal': decimal.Decimal('0.123') } } @jsonrpc_method() def test_error(request, apiuser): raise JSONRPCError('error happened') @jsonrpc_method() def test_exception(request, apiuser): raise Exception('something unhandled') @jsonrpc_method() def test_params(request, apiuser, params): return { 'who': f'hello {apiuser}', 'params': params } @jsonrpc_method() def test_params_opt( request, apiuser, params, opt1=False, opt2=Optional(True), opt3=Optional(OAttr('apiuser'))): opt2 = Optional.extract(opt2) opt3 = Optional.extract(opt3, evaluate_locals=locals()) return { 'who': f'hello {apiuser}', 'params': params, 'opts': [ opt1, opt2, opt3 ] } @jsonrpc_method() @jsonrpc_deprecated_method( use_method='test_ok', deprecated_at_version='4.0.0') def test_deprecated_method(request, apiuser): return 'value' @jsonrpc_method() def test_forbidden_method(request, apiuser): raise JSONRPCForbidden()