Skip to content
This repository has been archived by the owner on Jan 15, 2022. It is now read-only.

Commit

Permalink
fix: data args (ref: #35)
Browse files Browse the repository at this point in the history
  • Loading branch information
devrimyatar committed May 28, 2021
1 parent 5ab5bec commit f30ba9b
Showing 1 changed file with 53 additions and 52 deletions.
105 changes: 53 additions & 52 deletions cli/config_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,8 @@ def join(self):
parser.add_argument("--password", help="Auth password")
parser.add_argument("-j", help="Auth password file")

parser.add_argument("--cert-file", help="Path to SSL Certificate file")
parser.add_argument("--key-file", help="Path to SSL Key file")
parser.add_argument("-CC", "--config-api-mtls-client-cert", help="Path to SSL Certificate file")
parser.add_argument("-CK", "--config-api-mtls-client-key", help="Path to SSL Key file")
parser.add_argument("-noverify", help="Ignore verifying the SSL certificate", action='store_true', default=True)

parser.add_argument("--patch-add", help="Colon delimited key:value pair for add patch operation. For example loggingLevel:DEBUG")
Expand Down Expand Up @@ -256,11 +256,11 @@ def __init__(self, host, client_id, client_secret):
else:
self.swagger_configuration.verify_ssl = True

if args.cert_file:
self.swagger_configuration.cert_file = args.cert_file
if args.config_api_mtls_client_cert:
self.swagger_configuration.cert_file = args.config_api_mtls_client_cert

if args.key_file:
self.swagger_configuration.key_file = args.key_file
if args.config_api_mtls_client_key:
self.swagger_configuration.key_file = args.config_api_mtls_client_key

self.swagger_configuration.debug = debug
if self.swagger_configuration.debug:
Expand Down Expand Up @@ -1443,7 +1443,7 @@ def get_path_api_caller_for_path(self, path):

return api_caller

def process_command_get(self, path, suffix_param, endpoint_params, data_fn):
def process_command_get(self, path, suffix_param, endpoint_params, data_fn, data=None):

api_caller = self.get_path_api_caller_for_path(path)
api_response = None
Expand Down Expand Up @@ -1488,7 +1488,7 @@ def exit_with_error(self, error_text):
print()
sys.exit()

def process_command_post(self, path, suffix_param, endpoint_params, data_fn):
def process_command_post(self, path, suffix_param, endpoint_params, data_fn, data):
api_caller = self.get_path_api_caller_for_path(path)

endpoint = Menu(name='', info=path)
Expand All @@ -1497,24 +1497,26 @@ def process_command_post(self, path, suffix_param, endpoint_params, data_fn):

model = getattr(swagger_client.models, model_name)

if data_fn.endswith('jwt'):
with open(data_fn) as reader:
data_org = jwt.decode(reader.read(),
options={"verify_signature": False, "verify_exp": False, "verify_aud": False})
else:
try:
data_org = self.get_json_from_file(data_fn)
except ValueError as ve:
self.exit_with_error(str(ve))

data = {}
if not data:

for k in data_org:
if k in model.attribute_map:
mapped_key = model.attribute_map[k]
data[mapped_key] = data_org[k]
if data_fn.endswith('jwt'):
with open(data_fn) as reader:
data_org = jwt.decode(reader.read(),
options={"verify_signature": False, "verify_exp": False, "verify_aud": False})
else:
data[k] = data_org[k]
try:
data_org = self.get_json_from_file(data_fn)
except ValueError as ve:
self.exit_with_error(str(ve))

data = {}

for k in data_org:
if k in model.attribute_map:
mapped_key = model.attribute_map[k]
data[mapped_key] = data_org[k]
else:
data[k] = data_org[k]

try:
body = myapi._ApiClient__deserialize_model(data, model)
Expand All @@ -1534,8 +1536,8 @@ def process_command_post(self, path, suffix_param, endpoint_params, data_fn):
sys.stderr.write("Server Response:\n")
print(json.dumps(unmapped_response, indent=2))

def process_command_put(self, path, suffix_param, endpoint_params, data_fn):
self.process_command_post(path, suffix_param, endpoint_params, data_fn)
def process_command_put(self, path, suffix_param, endpoint_params, data_fn, data=None):
self.process_command_post(path, suffix_param, endpoint_params, data_fn, data=None)

def process_command_patch(self, path, suffix_param, endpoint_params, data_fn, data=None):

Expand Down Expand Up @@ -1572,7 +1574,7 @@ def process_command_patch(self, path, suffix_param, endpoint_params, data_fn, da
sys.stderr.write("Server Response:\n")
print(json.dumps(unmapped_response, indent=2))

def process_command_delete(self, path, suffix_param, endpoint_params, data_fn):
def process_command_delete(self, path, suffix_param, endpoint_params, data_fn, data=None):

api_caller = self.get_path_api_caller_for_path(path)
api_response = None
Expand All @@ -1588,7 +1590,7 @@ def process_command_delete(self, path, suffix_param, endpoint_params, data_fn):
sys.stderr.write("Server Response:\n")
print(json.dumps(unmapped_response, indent=2))

def process_command_by_id(self, operation_id, url_suffix, endpoint_args, data_fn):
def process_command_by_id(self, operation_id, url_suffix, endpoint_args, data_fn, data=None):
path = self.get_path_by_id(operation_id)

if not path:
Expand All @@ -1603,30 +1605,29 @@ def process_command_by_id(self, operation_id, url_suffix, endpoint_args, data_fn
endpoint = Menu('', info=path)
schema = self.get_scheme_for_endpoint(endpoint)


data = None
op_path = self.get_path_by_id(operation_id)
if op_path['__method__'] == 'patch' and not data_fn:
pop, pdata = '', ''
if args.patch_add:
pop = 'add'
pdata = args.patch_add
elif args.patch_remove:
pop = 'remove'
pdata = args.patch_remove
elif args.patch_replace:
pop = 'replace'
pdata = args.patch_replace

if pop:
if pop != 'remove' and pdata.count(':') != 1:
self.exit_with_error("Please provide --patch-data as colon delimited key:value pair")

if pop != 'remove':
ppath, pval = pdata.split(':')
data = [{'op': pop, 'path': '/'+ ppath.lstrip('/'), 'value': pval}]
else:
data = [{'op': pop, 'path': '/'+ pdata.lstrip('/')}]
if not data:
op_path = self.get_path_by_id(operation_id)
if op_path['__method__'] == 'patch' and not data_fn:
pop, pdata = '', ''
if args.patch_add:
pop = 'add'
pdata = args.patch_add
elif args.patch_remove:
pop = 'remove'
pdata = args.patch_remove
elif args.patch_replace:
pop = 'replace'
pdata = args.patch_replace

if pop:
if pop != 'remove' and pdata.count(':') != 1:
self.exit_with_error("Please provide --patch-data as colon delimited key:value pair")

if pop != 'remove':
ppath, pval = pdata.split(':')
data = [{'op': pop, 'path': '/'+ ppath.lstrip('/'), 'value': pval}]
else:
data = [{'op': pop, 'path': '/'+ pdata.lstrip('/')}]

if (schema and not data_fn) and not data:
self.exit_with_error("Please provide schema with --data argument")
Expand Down

0 comments on commit f30ba9b

Please sign in to comment.