Esempio n. 1
0
def delete_challenge(args):
  delete_args = input_args({
    challenge_constants.CHALLENGE_ID: {
      method_constants.INPUT: 'Enter the Challenge ID to delete',
      method_constants.TYPE: str,
    },
  })

  payload = {
    transactino_constants.SCHEMA: {
      model_constants.MODELS: {
        model_constants.CHALLENGE: {
          method_constants.METHODS: {
            challenge_constants.DELETE: delete_args,
          },
        },
      },
    },
  }

  response = requests.post(
    settings.URL,
    headers=make_headers(),
    data=json.dumps(payload),
  )

  check_for_announcements(response)

  if method_constants.ERRORS in response.text:
    print(json.dumps(json.loads(response.text), indent=2))
  else:
    print('Done.')
Esempio n. 2
0
def delete(args):
  payload = {
    transactino_constants.SCHEMA: {
      model_constants.MODELS: {
        model_constants.ACCOUNT: {
          method_constants.METHODS: {
            account_constants.DELETE: {},
          },
        },
      },
    },
  }

  response = requests.post(
    settings.URL,
    headers=make_headers(),
    data=json.dumps(payload),
  )

  check_for_announcements(response)

  if method_constants.ERRORS in response.text:
    print(json.dumps(json.loads(response.text), indent=2))
  else:
    print('Done.')
Esempio n. 3
0
def verify(args):
  payload = {
    transactino_constants.SCHEMA: {
      model_constants.MODELS: {
        model_constants.ACCOUNT: {
          method_constants.METHODS: {
            account_constants.VERIFY: {},
          },
        },
      },
    },
  }

  response = requests.post(
    settings.URL,
    headers=make_headers(),
    data=json.dumps(payload),
  )

  check_for_announcements(response)

  response_json = json.loads(response.text)
  verify_json = get_path(response_json, [
    transactino_constants.SCHEMA,
    model_constants.MODELS,
    model_constants.ACCOUNT,
    method_constants.METHODS,
    account_constants.VERIFY,
  ])

  print(json.dumps(verify_json, indent=2))
Esempio n. 4
0
def get(args):
    inactive = 'inactive' in args

    payload = {
        transactino_constants.SCHEMA: {
            model_constants.MODELS: {
                model_constants.SUBSCRIPTION: {
                    method_constants.METHODS: {
                        subscription_constants.GET: {
                            subscription_constants.IS_ACTIVE: not inactive,
                        },
                    },
                },
            },
        },
    }

    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data=json.dumps(payload),
    )

    check_for_announcements(response)

    response_json = json.loads(response.text)
    instances_json = get_path(response_json, [
        transactino_constants.SCHEMA,
        model_constants.MODELS,
        model_constants.SUBSCRIPTION,
        model_constants.INSTANCES,
    ])

    print(json.dumps(instances_json, indent=2))
Esempio n. 5
0
def get(args):
    payload = {
        transactino_constants.SCHEMA: {
            model_constants.MODELS: {
                model_constants.ANNOUNCEMENT: {
                    method_constants.METHODS: {
                        announcement_constants.GET: {},
                    },
                },
            },
        },
    }

    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data=json.dumps(payload),
    )

    check_for_announcements(response)

    response_json = json.loads(response.text)
    instances_json = get_path(response_json, [
        transactino_constants.SCHEMA,
        model_constants.MODELS,
        model_constants.ANNOUNCEMENT,
        model_constants.INSTANCES,
    ])

    if instances_json is None:
        print(json.dumps(response_json, indent=2))
        return

    print(json.dumps(instances_json, indent=2))
Esempio n. 6
0
def create(args):
    print(
        'INFO: Run this method leaving arguments blank to generate a Challenge for this method'
    )
    create_args = input_args({
        subscription_constants.ACTIVATION_DATE: {
            method_constants.INPUT: 'Enter the activation date',
            method_constants.TYPE: str,
        },
        subscription_constants.DURATION_IN_DAYS: {
            method_constants.INPUT:
            'Enter the number of days the Subscription will be active',
            method_constants.TYPE: int,
        },
    })

    if subscription_constants.ACTIVATION_DATE in create_args:
        activation_date = create_args.get(
            subscription_constants.ACTIVATION_DATE)
        unaware_datetime = parser.parse(activation_date)
        aware_datetime = unaware_datetime.replace(tzinfo=tz.gettz())
        iso_datetime = aware_datetime.isoformat()

        create_args.update({
            subscription_constants.ACTIVATION_DATE:
            iso_datetime,
        })

    payload = {
        transactino_constants.SCHEMA: {
            model_constants.MODELS: {
                model_constants.SUBSCRIPTION: {
                    method_constants.METHODS: {
                        subscription_constants.CREATE: create_args,
                    },
                },
            },
        },
    }

    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data=json.dumps(payload),
    )

    check_for_announcements(response)

    response_json = json.loads(response.text)
    create_json = get_path(response_json, [
        transactino_constants.SCHEMA,
        model_constants.MODELS,
        model_constants.SUBSCRIPTION,
        method_constants.METHODS,
        subscription_constants.CREATE,
    ])

    print(json.dumps(create_json, indent=2))
Esempio n. 7
0
def schema(args):
    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data='null',
    )

    response_json = json.loads(response.text)

    if 'reduced' not in args:
        print(json.dumps(response_json, indent=2))
        return

    print(json.dumps(remove_descriptions(response_json), indent=2))
Esempio n. 8
0
def create(args):
    print(
        'INFO: Run this method leaving arguments blank to generate a Challenge for this method'
    )
    create_args = input_args({
        fee_report_constants.BLOCKS_TO_INCLUDE: {
            method_constants.INPUT:
            'Enter the number of blocks to include in the FeeReport',
            method_constants.TYPE: int,
        },
    })

    if create_args:
        create_args.update({
            fee_report_constants.IS_ACTIVE: True,
        })

    payload = {
        transactino_constants.SCHEMA: {
            model_constants.MODELS: {
                model_constants.FEE_REPORT: {
                    method_constants.METHODS: {
                        method_constants.CREATE: create_args,
                    },
                },
            },
        },
    }

    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data=json.dumps(payload),
    )

    check_for_announcements(response)

    response_json = json.loads(response.text)
    create_json = get_path(response_json, [
        transactino_constants.SCHEMA,
        model_constants.MODELS,
        model_constants.FEE_REPORT,
        method_constants.METHODS,
        method_constants.CREATE,
    ])

    print(json.dumps(create_json, indent=2))
Esempio n. 9
0
def get(args):
    get_args = input_args({
        transaction_report_constants.TRANSACTION_REPORT_ID: {
            method_constants.INPUT:
            'Enter the TransactionReport ID or leave blank for all',
            method_constants.TYPE: str,
        },
        transaction_report_constants.IS_ACTIVE: {
            method_constants.INPUT:
            'Enter the active status of the TransactionReport',
            method_constants.TYPE: bool,
        },
    })

    payload = {
        transactino_constants.SCHEMA: {
            model_constants.MODELS: {
                model_constants.TRANSACTION_REPORT: {
                    method_constants.METHODS: {
                        transaction_report_constants.GET: get_args,
                    },
                },
            },
        },
    }

    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data=json.dumps(payload),
    )

    check_for_announcements(response)

    response_json = json.loads(response.text)
    instances_json = get_path(response_json, [
        transactino_constants.SCHEMA,
        model_constants.MODELS,
        model_constants.TRANSACTION_REPORT,
        model_constants.INSTANCES,
    ])

    if not instances_json:
        print(json.dumps(response_json, indent=2))
        return

    print(json.dumps(instances_json, indent=2))
Esempio n. 10
0
def create(args):
  payload = {
    transactino_constants.SCHEMA: {
      model_constants.MODELS: {
        model_constants.ACCOUNT: {
          method_constants.METHODS: {
            account_constants.CREATE: {
              account_constants.PUBLIC_KEY: settings.PUBLIC_KEY,
            },
          },
        },
      },
    },
  }

  response = requests.post(
    settings.URL,
    headers=make_headers(),
    data=json.dumps(payload),
  )

  check_for_announcements(response)

  response_json = json.loads(response.text)
  create_json = get_path(response_json, [
    transactino_constants.SCHEMA,
    model_constants.MODELS,
    model_constants.ACCOUNT,
    method_constants.METHODS,
    account_constants.CREATE,
  ])

  if create_json is None:
    print('Account already exists.')
    return

  disclaimer = create_json.get(account_constants.DISCLAIMER)
  ip = create_json.get(account_constants.IP)
  long_key_id = create_json.get(account_constants.LONG_KEY_ID)

  print('The IP used to create this account: {}'.format(ip))
  print('The long key ID of your GPG public key: {}'.format(long_key_id))
  print('Disclaimer:\n\n{}'.format(disclaimer))
Esempio n. 11
0
def activate(args):
    activate_args = input_args({
        fee_report_constants.FEE_REPORT_ID: {
            method_constants.INPUT: 'Enter the FeeReport ID to activate',
            method_constants.TYPE: str,
        },
        fee_report_constants.IS_ACTIVE: {
            method_constants.INPUT:
            'Indicate whether the FeeReport should be active',
            method_constants.TYPE: bool,
        },
    })

    payload = {
        transactino_constants.SCHEMA: {
            model_constants.MODELS: {
                model_constants.FEE_REPORT: {
                    method_constants.METHODS: {
                        fee_report_constants.ACTIVATE: activate_args,
                    },
                },
            },
        },
    }

    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data=json.dumps(payload),
    )

    check_for_announcements(response)

    response_json = json.loads(response.text)
    activate_json = get_path(response_json, [
        transactino_constants.SCHEMA,
        model_constants.MODELS,
        model_constants.FEE_REPORT,
        method_constants.METHODS,
        fee_report_constants.ACTIVATE,
    ])

    print(json.dumps(activate_json, indent=2))
Esempio n. 12
0
def create(args):
  print('INFO: Run this method leaving arguments blank to generate a Challenge for this method')
  create_args = input_args({
    ip_constants.VALUE: {
      method_constants.INPUT: 'Enter the value of the IP address',
      method_constants.TYPE: str,
    },
  })

  payload = {
    transactino_constants.SCHEMA: {
      model_constants.MODELS: {
        model_constants.IP: {
          method_constants.METHODS: {
            method_constants.CREATE: create_args,
          },
        },
      },
    },
  }

  response = requests.post(
    settings.URL,
    headers=make_headers(),
    data=json.dumps(payload),
  )

  check_for_announcements(response)

  response_json = json.loads(response.text)
  instances_json = get_path(response_json, [
    transactino_constants.SCHEMA,
    model_constants.MODELS,
    model_constants.IP,
    model_constants.INSTANCES,
  ])

  if not instances_json:
    print(json.dumps(response_json, indent=2))
    return

  print(json.dumps(instances_json, indent=2))
Esempio n. 13
0
def get(args):
    get_args = input_args({
        ip_constants.IP_ID: {
            method_constants.INPUT:
            'Enter the IP address ID or leave blank for all',
            method_constants.TYPE: str,
        },
    })

    payload = {
        transactino_constants.SCHEMA: {
            model_constants.MODELS: {
                model_constants.IP: {
                    method_constants.METHODS: {
                        payment_constants.GET: get_args,
                    },
                },
            },
        },
    }

    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data=json.dumps(payload),
    )

    check_for_announcements(response)

    response_json = json.loads(response.text)
    instances_json = get_path(response_json, [
        transactino_constants.SCHEMA,
        model_constants.MODELS,
        model_constants.IP,
        model_constants.INSTANCES,
    ])

    if not instances_json:
        print(json.dumps(response_json, indent=2))
        return

    print(json.dumps(instances_json, indent=2))
Esempio n. 14
0
def get(args):
  get_args = input_args({
    address_constants.ADDRESS_ID: {
      method_constants.INPUT: 'Enter an Address ID',
      method_constants.TYPE: str,
    },
  })

  payload = {
    transactino_constants.SCHEMA: {
      model_constants.MODELS: {
        model_constants.ADDRESS: {
          method_constants.METHODS: {
            address_constants.GET: get_args,
          },
        },
      },
    },
  }

  response = requests.post(
    settings.URL,
    headers=make_headers(),
    data=json.dumps(payload),
  )

  check_for_announcements(response)

  response_json = json.loads(response.text)
  instances_json = get_path(response_json, [
    transactino_constants.SCHEMA,
    model_constants.MODELS,
    model_constants.ADDRESS,
    model_constants.INSTANCES,
  ])

  if instances_json is None:
    print(json.dumps(response_json, indent=2))
    return

  print(json.dumps(instances_json, indent=2))
Esempio n. 15
0
def delete(args):
  delete_args = input_args({
    fee_report_constants.FEE_REPORT_ID: {
      method_constants.INPUT: 'Enter the FeeReport ID to delete',
      method_constants.TYPE: str,
    },
  })

  payload = {
    transactino_constants.SCHEMA: {
      model_constants.MODELS: {
        model_constants.FEE_REPORT: {
          method_constants.METHODS: {
            method_constants.DELETE: delete_args,
          },
        },
      },
    },
  }

  response = requests.post(
    settings.URL,
    headers=make_headers(),
    data=json.dumps(payload),
  )

  check_for_announcements(response)

  response_json = json.loads(response.text)
  delete_json = get_path(response_json, [
    transactino_constants.SCHEMA,
    model_constants.MODELS,
    model_constants.FEE_REPORT,
    method_constants.METHODS,
    method_constants.DELETE,
  ])

  print(json.dumps(delete_json, indent=2))
Esempio n. 16
0
def activate(args):
    activate_args = input_args({
        subscription_constants.SUBSCRIPTION_ID: {
            method_constants.INPUT: 'Enter the Subscription ID to activate',
            method_constants.TYPE: str,
        },
    })

    payload = {
        transactino_constants.SCHEMA: {
            model_constants.MODELS: {
                model_constants.SUBSCRIPTION: {
                    method_constants.METHODS: {
                        subscription_constants.ACTIVATE: activate_args,
                    },
                },
            },
        },
    }

    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data=json.dumps(payload),
    )

    check_for_announcements(response)

    response_json = json.loads(response.text)
    activate_json = get_path(response_json, [
        transactino_constants.SCHEMA,
        model_constants.MODELS,
        model_constants.SUBSCRIPTION,
        method_constants.METHODS,
        subscription_constants.ACTIVATE,
    ])

    print(json.dumps(activate_json, indent=2))
Esempio n. 17
0
def dismiss(args):
  dismiss_args = input_args(get_config)

  payload = {
    transactino_constants.SCHEMA: {
      model_constants.MODELS: {
        model_constants.TRANSACTION_MATCH: {
          method_constants.METHODS: {
            transaction_match_constants.DISMISS: dismiss_args,
          },
        },
      },
    },
  }

  response = requests.post(
    settings.URL,
    headers=make_headers(),
    data=json.dumps(payload),
  )

  check_for_announcements(response)

  response_json = json.loads(response.text)
  dismiss_json = get_path(response_json, [
    transactino_constants.SCHEMA,
    model_constants.MODELS,
    model_constants.TRANSACTION_MATCH,
    method_constants.METHODS,
    transaction_match_constants.DISMISS,
  ])

  if dismiss_json is None:
    print(json.dumps(response_json, indent=2))
    return

  print(json.dumps(dismiss_json, indent=2))
Esempio n. 18
0
def get(args):
    payload = {
        transactino_constants.SCHEMA: {
            model_constants.MODELS: {
                model_constants.SYSTEM: {
                    method_constants.METHODS: {
                        system_constants.GET: {},
                    },
                },
            },
        },
    }

    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data=json.dumps(payload),
    )

    check_for_announcements(response)

    response_json = json.loads(response.text)
    instances_json = get_path(response_json, [
        transactino_constants.SCHEMA,
        model_constants.MODELS,
        model_constants.SYSTEM,
        model_constants.INSTANCES,
    ])

    if instances_json is None:
        print(json.dumps(response_json, indent=2))
        return

    for system_id, attributes_json in instances_json.items():
        print('System ID: ', system_id, '\n')

        public_key = get_path(attributes_json, [
            model_constants.ATTRIBUTES,
            system_constants.PUBLIC_KEY,
        ])

        print('PUBLIC KEY:')
        print(public_key + '\n')
        print('--------')

        guarantee = get_path(attributes_json, [
            model_constants.ATTRIBUTES,
            system_constants.GUARANTEE,
        ])

        print('GUARANTEE')
        print(guarantee + '\n')
        print('--------')

        guarantee_signature = get_path(attributes_json, [
            model_constants.ATTRIBUTES,
            system_constants.GUARANTEE_SIGNATURE,
        ])

        print('GUARANTEE SIGNATURE')
        print(guarantee_signature + '\n')
        print('--------')

        disclaimer = get_path(attributes_json, [
            model_constants.ATTRIBUTES,
            system_constants.DISCLAIMER,
        ])

        print('DISCLAIMER')
        print(disclaimer + '\n')
        print('--------')

        disclaimer_signature = get_path(attributes_json, [
            model_constants.ATTRIBUTES,
            system_constants.DISCLAIMER_SIGNATURE,
        ])

        print('DISCLAIMER SIGNATURE')
        print(disclaimer_signature + '\n')
        print('--------')
Esempio n. 19
0
def create(args):
    print(
        'INFO: Run this method leaving arguments blank to generate a Challenge for this method'
    )
    create_args = input_args({
        transaction_report_constants.TARGET_ADDRESS: {
            method_constants.INPUT: 'Enter the target address',
            method_constants.TYPE: str,
        },
        transaction_report_constants.VALUE_EQUAL_TO: {
            method_constants.INPUT:
            'Enter value to match equal (leave blank if not required)',
            method_constants.TYPE: int,
        },
        transaction_report_constants.VALUE_LESS_THAN: {
            method_constants.INPUT:
            'Enter maximum value (leave blank if not required)',
            method_constants.TYPE: int,
        },
        transaction_report_constants.VALUE_GREATER_THAN: {
            method_constants.INPUT:
            'Enter minimum value (leave blank if not required)',
            method_constants.TYPE: int,
        },
    })

    if create_args:
        create_args.update({
            transaction_report_constants.IS_ACTIVE: True,
        })

    payload = {
        transactino_constants.SCHEMA: {
            model_constants.MODELS: {
                model_constants.TRANSACTION_REPORT: {
                    method_constants.METHODS: {
                        transaction_report_constants.CREATE: create_args,
                    },
                },
            },
        },
    }

    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data=json.dumps(payload),
    )

    check_for_announcements(response)

    response_json = json.loads(response.text)
    create_json = get_path(response_json, [
        transactino_constants.SCHEMA,
        model_constants.MODELS,
        model_constants.TRANSACTION_REPORT,
        method_constants.METHODS,
        transaction_report_constants.CREATE,
    ])

    print(json.dumps(create_json, indent=2))
Esempio n. 20
0
def get(args):
    closed = 'closed' in args
    save = 'save' in args

    get_args = input_args({
        challenge_constants.CHALLENGE_ID: {
            method_constants.INPUT:
            'Enter the Challenge ID or leave blank for all',
            method_constants.TYPE: str,
        },
    })

    get_args.update({
        challenge_constants.IS_OPEN: not closed,
    })

    payload = {
        transactino_constants.SCHEMA: {
            model_constants.MODELS: {
                model_constants.CHALLENGE: {
                    method_constants.METHODS: {
                        challenge_constants.GET: get_args,
                    },
                },
            },
        },
    }

    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data=json.dumps(payload),
    )

    check_for_announcements(response)

    response_json = json.loads(response.text)
    instances_json = get_path(response_json, [
        transactino_constants.SCHEMA,
        model_constants.MODELS,
        model_constants.CHALLENGE,
        model_constants.INSTANCES,
    ])

    if instances_json is None:
        print(json.dumps(response_json, indent=2))
        return

    for challenge_id, attributes_json in instances_json.items():
        print('Challenge ID: ', challenge_id, '\n')
        encrypted_content = get_path(attributes_json, [
            model_constants.ATTRIBUTES,
            challenge_constants.ENCRYPTED_CONTENT,
        ])
        print(encrypted_content + '\n')

        if save:
            if not exists(settings.CHALLENGE_PATH):
                os.mkdir(settings.CHALLENGE_PATH)

            challenge_path = join(settings.CHALLENGE_PATH, challenge_id)
            if not exists(challenge_path):
                os.mkdir(challenge_path)

            message_path = join(challenge_path, 'message.asc')
            if not exists(message_path):
                with open(message_path, 'w') as message_file:
                    message_file.write(encrypted_content)
Esempio n. 21
0
def respond(args):
    read = 'read' in args

    respond_args = input_args({
        challenge_constants.CHALLENGE_ID: {
            method_constants.INPUT: 'Enter the Challenge ID to respond to',
            method_constants.TYPE: str,
        },
    })

    if not read:
        content = input((
            'Please enter the decrypted string that has been'
            ' re-encrypted to the public key of the System model.'
            ' It should be in ASCII armor format with any newlines'
            ' replaced with their escaped equivalents (\\n). This is'
            ' for the purposes of pasting the text into the command line: \n\n'
        ), )

    if read:
        challenge_id = respond_args.get(challenge_constants.CHALLENGE_ID)
        challenge_path = join(settings.CHALLENGE_PATH, challenge_id)
        if not exists(challenge_path):
            print('Cannot find saved challenge directory...')
            return

        encrypted_content_path = join(challenge_path, 'encrypted.asc')
        if not exists(encrypted_content_path):
            print('Cannot find file {}/encrypted.asc'.format(challenge_id))
            return

        with open(encrypted_content_path, 'r') as encrypted_content_file:
            content = encrypted_content_file.read()

    respond_args.update({
        challenge_constants.CONTENT: content,
    })

    payload = {
        transactino_constants.SCHEMA: {
            model_constants.MODELS: {
                model_constants.CHALLENGE: {
                    method_constants.METHODS: {
                        challenge_constants.RESPOND: respond_args,
                    },
                },
            },
        },
    }

    response = requests.post(
        settings.URL,
        headers=make_headers(),
        data=json.dumps(payload),
    )

    check_for_announcements(response)

    response_json = json.loads(response.text)
    respond_json = get_path(response_json, [
        transactino_constants.SCHEMA,
        model_constants.MODELS,
        model_constants.CHALLENGE,
        method_constants.METHODS,
        challenge_constants.RESPOND,
    ])

    print(json.dumps(respond_json, indent=2))