예제 #1
0
def init_conf(args):
    """ Generic configuration of CLI, from config file and cli arguments """
    config = Configuration()
    if args.get('config'):
        config.load_json(args.get('config'), 'sender')
    config.mix(dict(args))

    if "address" not in args.keys() and "url" in args.keys():
        config.set('address', args['url'])

    if "address" not in args.keys():
        address = os.environ.get('DEVO_SENDER_ADDRESS', None)
        if not address:
            address = os.environ.get('DEVO_SENDER_URL', None)

        config.set("address", address)
        config.set("port", os.environ.get('DEVO_SENDER_PORT', None))

    if config.get()['cert_reqs']:
        if "config" not in args.keys() and "key" not in args.keys() \
                and "cert" not in args.keys() and "chain" not in args.keys():
            config.set("key", os.environ.get('DEVO_SENDER_KEY', None))
            config.set("cert", os.environ.get('DEVO_SENDER_CERT', None))
            config.set("chain", os.environ.get('DEVO_SENDER_CHAIN', None))

        if not config.keys("key") and not config.keys("cert") and not \
                config.keys("chain") and os.path.exists("~/.devo.json"):
            config.load_default_json('api')

    config.keys('from')
    config.keys('to')

    return config
예제 #2
0
def configure(args):
    """
    Load CLI configuration
    :param args: args from files, launch vars, etc
    :return: Client API Object and Config values in array
    """
    config = Configuration()
    if args.get('config') != "~/.devo.json":
        config.load_json(args.get('config'), 'api')

    config.mix(dict(args))

    if "key" not in args.keys() and "api" not in args.keys() \
            and "token" not in args.keys():
        config.set("key", os.environ.get('DEVO_API_KEY', None))
        config.set("secret", os.environ.get('DEVO_API_SECRET', None))
        if "url" not in args.keys():
            config.set("url", os.environ.get('DEVO_API_URL', None))

    if not config.keys("key") and not config.keys("api") \
            and not config.keys("token") \
            and os.path.exists("~/.devo.json"):
        config.load_default_json('api')

    config.keys('from')
    config.keys('to')

    # Try to compose the api
    api = None
    try:
        api = Client.from_config(config.get())
    except DevoClientException as error:
        print_error(str(error), show_help=True)
    return api, config.get()
예제 #3
0
 def test_load_json(self):
     config = Configuration()
     config.load_json(self.config_path + ".json")
     self.assertDictEqual(config.cfg, {
         "devo": {
             "die": "hard"
         },
         "api": {
             "velazquez": "Then I am beautiful?"
         }
     })
예제 #4
0
 def test_mix(self):
     config = Configuration()
     config.load_json(self.config_path)
     config.mix({"test": "ok"})
     self.assertDictEqual(
         config.cfg, {
             "devo": {
                 "die": "hard"
             },
             "api": {
                 "velazquez": "Then I am beautiful?"
             },
             "test": "ok"
         })
예제 #5
0
 def test_key_exist(self):
     config = Configuration()
     config.load_json(self.config_path)
     self.assertFalse(config.key_exist("noexiste"))
     self.assertTrue(config.key_exist("api"))