Ejemplo n.º 1
0
 def _get_status(self, batch_id, wait, auth_user=None, auth_password=None):
     try:
         result = self._send_request(
             'batch_statuses?id={}&wait={}'.format(batch_id, wait),
             auth_user=auth_user,
             auth_password=auth_password)
         return yaml.safe_load(result)['data'][0]['status']
     except BaseException as err:
         raise TransferException(err)
Ejemplo n.º 2
0
    def _send_request(self,
                      suffix,
                      data=None,
                      content_type=None,
                      name=None,
                      auth_user=None,
                      auth_password=None):
        if self._base_url.startswith("http://"):
            url = "{}/{}".format(self._base_url, suffix)
        else:
            url = "http://{}/{}".format(self._base_url, suffix)

        headers = {}
        if auth_user is not None:
            auth_string = "{}:{}".format(auth_user, auth_password)
            b64_string = b64encode(auth_string.encode()).decode()
            auth_header = 'Basic {}'.format(b64_string)
            headers['Authorization'] = auth_header

        if content_type is not None:
            headers['Content-Type'] = content_type

        try:
            if data is not None:
                result = requests.post(url, headers=headers, data=data)
            else:
                result = requests.get(url, headers=headers)

            if result.status_code == 404:
                raise TransferException("No such transfers: {}".format(name))

            if not result.ok:
                raise TransferException("Error {}: {}".format(
                    result.status_code, result.reason))

        except requests.ConnectionError as err:
            raise TransferException('Failed to connect to {}: {}'.format(
                url, str(err)))

        except BaseException as err:
            raise TransferException(err)

        return (result.text)
Ejemplo n.º 3
0
    def __init__(self, base_url , keyfile = None):

        self._base_url = base_url

        if keyfile is None:
            self._signer = None
            return

        try:
            with open(keyfile) as f:
                private_key_str = f.read().strip()
        except OSError as err:
            raise TransferException('Failed to read private key {} : {}'.format(keyfile , str(err)))

        try:
            private_key = Secp256k1PrivateKey.from_hex(private_key_str)
        except ParseError as e:
            raise TransferException('Failed to load private key : {}'.format(str(err)))

        self._signer = CryptoFactory(create_context('secp256k1')).new_signer(private_key)
Ejemplo n.º 4
0
def do_show(args):
    ID = args.ID

    url = _get_url(args)
    auth_user, auth_password = _get_auth_info(args)

    client = TransferClient(base_url=url, keyfile=None)

    data = client.show(ID, auth_user=auth_user, auth_password=auth_password)

    if data is not None:
        print(data)
    else:
        raise TransferException("Asset not found: {}".format(shipmentID))
Ejemplo n.º 5
0
def do_list(args):
    url = _get_url(args)
    auth_user, auth_password = _get_auth_info(args)

    client = TransferClient(base_url=url, keyfile=None)

    asset_list = [
        asset.split(',') for assets in client.list(auth_user=auth_user,
                                                   auth_password=auth_password)
        for asset in assets.decode().split('|')
    ]

    if asset_list is not None:
        print(asset_list)

    else:
        raise TransferException("Could not retireve List")
Ejemplo n.º 6
0
def do_show(args):
    ID = args.ID

    url = _get_url(args)
    auth_user, auth_password = _get_auth_info(args)

    client = TransferClient(base_url=url, keyfile=None)

    data = client.show(ID, auth_user=auth_user, auth_password=auth_password)

    if data is not None:
        print('-'*50)
        for x in data:
            print(x)
            print('x'*10)            
        print('-'*50)
    else:
        raise TransferException("Assets not found!")
Ejemplo n.º 7
0
def main(prog_name=os.path.basename(sys.argv[0]), args=None):
    if args is None:
        args = sys.argv[1:]
    parser = create_parser(prog_name)
    args = parser.parse_args(args)

    if args.verbose is None:
        verbose_level = 0
    else:
        verbose_level = args.verbose

    setup_loggers(verbose_level=verbose_level)

    if args.command == 'createBox':
        do_createBox(args)

    elif args.command == 'updateBox':
        do_updateBox(args)

    elif args.command == 'createShipment':
        do_createShipment(args)

    elif args.command == 'updateShipmentStatus':
        do_updateShipmentStatus(args)

    elif args.command == 'deleteShipment':
        do_deleteShipment(args)

    elif args.command == 'list':
        do_list(args)

    elif args.command == 'show':
        do_show(args)

    else:
        raise TransferException("Invalid Command: {}".format(args.command))