예제 #1
0
async def get_contract(request, contract):
    contract_code = client.raw_driver.get_contract(contract)

    if contract_code is None:
        return jsonResp({'error': '{} does not exist'.format(contract)},
                        status=404)
    return jsonResp({'name': contract, 'code': contract_code}, status=200)
예제 #2
0
async def lint_contract(request):
    code = request.json.get('code')

    if code is None:
        return jsonResp({'error': 'no code provided'}, status=500)

    violations = client.lint(request.json.get('code'))
    return jsonResp({'violations': violations}, status=200)
예제 #3
0
async def compile_contract(request):
    code = request.json.get('code')

    if code is None:
        return jsonResp({'error': 'no code provided'}, status=500)

    violations = client.lint(request.json.get('code'))

    if violations is None:
        compiled_code = client.compiler.parse_to_code(code)
        return jsonResp({'code': compiled_code}, status=200)

    return jsonResp({'violations': violations}, status=500)
예제 #4
0
async def get_variable(request, contract, variable):
    contract_code = client.raw_driver.get_contract(contract)

    if contract_code is None:
        return jsonResp({'error': '{} does not exist'.format(contract)},
                        status=404)

    key = request.args.get('key')

    if key is None:
        response = client.raw_driver.get('{}.{}'.format(contract, variable))
    else:
        response = client.raw_driver.get('{}.{}:{}'.format(
            contract, variable, key))

    if response is None:
        return jsonResp({'value': None}, status=404)
    else:
        return jsonResp({'value': response}, status=200)
예제 #5
0
async def get_methods(request, contract):
    contract_code = client.raw_driver.get_contract(contract)

    if contract_code is None:
        return jsonResp({'error': '{} does not exist'.format(contract)},
                        status=404)

    tree = ast.parse(contract_code)

    function_defs = [
        n for n in ast.walk(tree) if isinstance(n, ast.FunctionDef)
    ]

    funcs = []
    for definition in function_defs:
        func_name = definition.name
        kwargs = [arg.arg for arg in definition.args.args]

        funcs.append({'name': func_name, 'arguments': kwargs})

    return jsonResp({'methods': funcs}, status=200)
예제 #6
0
async def mocktx(request):
    contract_name = request.json.get('contract')
    method_name = request.json.get('method')
    kwargs = json.loads(request.json.get('args'))
    sender = request.json.get('sender')

    client.signer = sender
    contract = client.get_contract(contract_name)
    method = getattr(contract, method_name)
    returnValue = method(**kwargs)

    return jsonResp({'return': returnValue or ''})
예제 #7
0
async def get_contracts(request):
    contracts = client.get_contracts()
    return jsonResp({'contracts': contracts})