|
7 | 7 | from flask import Blueprint, jsonify, request |
8 | 8 | from oceandb_driver_interface.search_model import QueryModel, FullTextModel |
9 | 9 | from squid_py.acl import decode |
10 | | -from squid_py.config_parser import load_config_section |
11 | | -from squid_py.constants import OCEAN_ACL_CONTRACT, OCEAN_MARKET_CONTRACT |
12 | | -from squid_py.ocean_contracts import OceanContracts |
| 10 | +from squid_py.config import Config |
| 11 | +from squid_py.ocean import Ocean |
13 | 12 |
|
14 | 13 | from provider.app.dao import Dao |
15 | 14 | from provider.app.filters import Filters |
16 | 15 | from provider.app.osmosis import generate_sasurl |
17 | | -from provider.constants import ConfigSections, BaseURLs |
| 16 | +from provider.constants import BaseURLs |
18 | 17 | from provider.log import setup_logging |
19 | 18 | from provider.myapp import app |
| 19 | +from provider.constants import ConfigSections |
20 | 20 |
|
21 | 21 | setup_logging() |
22 | 22 | assets = Blueprint('assets', __name__) |
23 | 23 |
|
24 | 24 | config_file = app.config['CONFIG_FILE'] |
| 25 | +config = Config(filename=config_file) |
25 | 26 | # Prepare keeper contracts for on-chain access control |
26 | | -keeper_config = load_config_section(config_file, ConfigSections.KEEPER_CONTRACTS) |
27 | | -res_conf = load_config_section(config_file, ConfigSections.RESOURCES) |
28 | 27 | # Prepare OceanDB |
29 | | -dao = Dao(config_file) |
30 | | - |
31 | | -provider_url = '%s://%s:%s' % (res_conf['provider.scheme'], res_conf['provider.host'], res_conf['provider.port']) |
| 28 | +dao = Dao(config_file=config_file) |
| 29 | +provider_url = config.provider_url |
32 | 30 | provider_url += BaseURLs.ASSETS_URL |
33 | | -provider_address = None if not keeper_config['provider.address'] else keeper_config['provider.address'] |
34 | | -ocean_contracts = OceanContracts(config_path=config_file) |
35 | | - |
36 | | -ocean_contracts.init_contracts() |
37 | | -# Prepare resources access configuration to download assets |
38 | | -resources_config = load_config_section(config_file, ConfigSections.RESOURCES) |
| 31 | +provider_address = None if not config.get(ConfigSections.KEEPER_CONTRACTS, 'provider.address') else config.get(ConfigSections.KEEPER_CONTRACTS, |
| 32 | + 'provider.address') |
| 33 | +ocn = Ocean(config_file=config_file) |
39 | 34 |
|
40 | 35 |
|
41 | 36 | def get_provider_address_filter(): |
42 | | - account = ocean_contracts.web3.eth.accounts[0] if not keeper_config['provider.address'] \ |
43 | | - else keeper_config['provider.address'] |
| 37 | + account = ocn.web3.eth.accounts[0] if not config.get(ConfigSections.KEEPER_CONTRACTS, 'provider.address') \ |
| 38 | + else config.get(ConfigSections.KEEPER_CONTRACTS, 'provider.address') |
44 | 39 | return {"address": account} |
45 | 40 |
|
46 | 41 |
|
47 | | -ocn_for_filters = OceanContracts(config_path=config_file) |
48 | | -ocn_for_filters.init_contracts() |
49 | | - |
50 | | -filters = Filters(ocean_contracts_wrapper=ocn_for_filters, config_file=config_file, api_url=provider_url) |
51 | | -filter_access_consent = ocn_for_filters.watch_event(OCEAN_ACL_CONTRACT, |
52 | | - 'AccessConsentRequested', |
53 | | - filters.commit_access_request, |
54 | | - 0.2, |
55 | | - fromBlock='latest', |
56 | | - filters=get_provider_address_filter()) |
| 42 | +filters = Filters(ocean_contracts_wrapper=ocn, config_file=config_file, api_url=provider_url) |
| 43 | +filter_access_consent = ocn.helper.watch_event(ocn.contracts.auth.contract, |
| 44 | + 'AccessConsentRequested', |
| 45 | + filters.commit_access_request, |
| 46 | + 0.2, |
| 47 | + fromBlock='latest', |
| 48 | + filters=get_provider_address_filter()) |
57 | 49 |
|
58 | | -filter_payment = ocn_for_filters.watch_event(OCEAN_MARKET_CONTRACT, |
59 | | - 'PaymentReceived', |
60 | | - filters.publish_encrypted_token, |
61 | | - 0.2, |
62 | | - fromBlock='latest', |
63 | | - filters=get_provider_address_filter()) |
| 50 | +filter_payment = ocn.helper.watch_event(ocn.contracts.market.contract, |
| 51 | + 'PaymentReceived', |
| 52 | + filters.publish_encrypted_token, |
| 53 | + 0.2, |
| 54 | + fromBlock='latest', |
| 55 | + filters=get_provider_address_filter()) |
64 | 56 |
|
65 | 57 |
|
66 | 58 | @assets.route('', methods=['GET']) |
@@ -642,27 +634,29 @@ def consume_resource(asset_id): |
642 | 634 | logging.error('Consume failed: required attr %s missing.' % attr) |
643 | 635 | return '"%s" is required for registering an asset.' % attr, 400 |
644 | 636 |
|
645 | | - contract_instance = ocean_contracts.contracts[OCEAN_ACL_CONTRACT][0] |
646 | | - sig = ocean_contracts.split_signature(ocean_contracts.web3.toBytes(hexstr=data['sigEncJWT'])) |
| 637 | + contract_instance = ocn.contracts.auth.contract_concise |
| 638 | + sig = ocn.helper.split_signature(ocn.web3.toBytes(hexstr=data['sigEncJWT'])) |
647 | 639 | jwt = decode(data['jwt']) |
648 | 640 |
|
649 | 641 | if contract_instance.verifyAccessTokenDelivery(jwt['request_id'], # requestId |
650 | | - ocean_contracts.web3.toChecksumAddress(data['consumerId']), |
| 642 | + ocn.web3.toChecksumAddress(data['consumerId']), |
651 | 643 | # consumerId |
652 | 644 | data['fixed_msg'], |
653 | 645 | sig.v, # sig.v |
654 | 646 | sig.r, # sig.r |
655 | 647 | sig.s, # sig.s |
656 | | - transact={'from': ocean_contracts.account, |
| 648 | + transact={'from': ocn.web3.eth.accounts[0] if config.get( |
| 649 | + ConfigSections.KEEPER_CONTRACTS, 'provider.account') is '' else config.get( |
| 650 | + ConfigSections.KEEPER_CONTRACTS, 'provider.account'), |
657 | 651 | 'gas': 4000000}): |
658 | 652 | if jwt['resource_server_plugin'] == 'Azure': |
659 | 653 | logging.info('reading asset from oceandb: %s' % asset_id) |
660 | 654 | urls = dao.get(asset_id)['base']['contentUrls'] |
661 | 655 | url_list = [] |
662 | 656 | for url in urls: |
663 | | - url_list.append(generate_sasurl(url, resources_config['azure.account.name'], |
664 | | - resources_config['azure.account.key'], |
665 | | - resources_config['azure.container'])) |
| 657 | + url_list.append(generate_sasurl(url, config.get(ConfigSections.RESOURCES, 'azure.account.name'), |
| 658 | + config.get(ConfigSections.RESOURCES, 'azure.account.key'), |
| 659 | + config.get(ConfigSections.RESOURCES, 'azure.container'))) |
666 | 660 | return jsonify(url_list), 200 |
667 | 661 | else: |
668 | 662 | logging.error('resource server plugin is not supported: %s' % jwt['resource_server_plugin']) |
|
0 commit comments