def create_parameter_list(request_type, service_name, target_client,operation, json_params):
    param_list = {}
    method_args = inspect.getargspec(getattr(target_client,operation))
    for arg in method_args[0]:
        if arg == 'self' or arg == 'headers': continue # skip self and headers from being set

        if not json_params:
            if request.args.has_key(arg):
                param_type = get_message_class_in_parm_type(service_name, operation, arg)
                if param_type == 'str':
                    param_list[arg] = convert_unicode(request.args[arg])
                else:
                    param_list[arg] = ast.literal_eval(convert_unicode(request.args[arg]))
        else:
            if json_params[request_type]['params'].has_key(arg):

                #TODO - Potentially remove these conversions whenever ION objects support unicode
                # UNICODE strings are not supported with ION objects
                object_params = convert_unicode(json_params[request_type]['params'][arg])
                if is_ion_object_dict(object_params):
                    param_list[arg] = create_ion_object(object_params)
                else:
                    #Not an ION object so handle as a simple type then.
                    param_list[arg] = convert_unicode(json_params[request_type]['params'][arg])

    return param_list
def create_parameter_list(service_name, target_client,operation, json_params):
    param_list = {}
    method_args = inspect.getargspec(getattr(target_client,operation))
    for arg in method_args[0]:
        if arg == 'self' or arg == 'headers': continue # skip self and headers from being set

        if not json_params:
            if request.args.has_key(arg):
                param_type = get_message_class_in_parm_type(service_name, operation, arg)
                if param_type == 'str':
                    param_list[arg] = convert_unicode(request.args[arg])
                else:
                    param_list[arg] = ast.literal_eval(convert_unicode(request.args[arg]))
        else:
            if json_params['serviceRequest']['params'].has_key(arg):

                #This if handles ION objects as a 2 element list: [Object Type, { field1: val1, ...}]
                if isinstance(json_params['serviceRequest']['params'][arg], list):

                    #TODO - Potentially remove these conversions whenever ION objects support unicode
                    # UNICODE strings are not supported with ION objects
                    ion_object_name = convert_unicode(json_params['serviceRequest']['params'][arg][0])
                    object_params = convert_unicode(json_params['serviceRequest']['params'][arg][1])

                    param_list[arg] = create_ion_object(ion_object_name, object_params)

                else:  # The else branch is for simple types ( non-ION objects )
                    param_list[arg] = convert_unicode(json_params['serviceRequest']['params'][arg])

    return param_list
def create_parameter_list(request_type, service_name, target_client,operation, json_params):
    param_list = {}
    method_args = inspect.getargspec(getattr(target_client,operation))
    for arg in method_args[0]:
        if arg == 'self' or arg == 'headers': continue # skip self and headers from being set

        if not json_params:
            if request.args.has_key(arg):
                param_type = get_message_class_in_parm_type(service_name, operation, arg)
                if param_type == 'str':
                    if isinstance(request.args[arg], unicode):
                        param_list[arg] = str(request.args[arg].encode('utf8'))
                    else:
                        param_list[arg] = str(request.args[arg])
                else:
                    param_list[arg] = ast.literal_eval(str(request.args[arg]))
        else:
            if json_params[request_type]['params'].has_key(arg):

                object_params = json_params[request_type]['params'][arg]
                if is_ion_object_dict(object_params):
                    param_list[arg] = create_ion_object(object_params)
                else:
                    #Not an ION object so handle as a simple type then.
                    if isinstance(json_params[request_type]['params'][arg], unicode):
                        param_list[arg] = str(json_params[request_type]['params'][arg].encode('utf8'))
                    else:
                        param_list[arg] = json_params[request_type]['params'][arg]

    return param_list
def create_parameter_list(request_type, service_name, target_client, operation,
                          json_params):
    param_list = {}
    method_args = inspect.getargspec(getattr(target_client, operation))
    for arg in method_args[0]:
        if arg == 'self' or arg == 'headers':
            continue  # skip self and headers from being set

        if not json_params:
            if request.args.has_key(arg):
                param_type = get_message_class_in_parm_type(
                    service_name, operation, arg)
                if param_type == 'str':
                    if isinstance(request.args[arg], unicode):
                        param_list[arg] = str(request.args[arg].encode('utf8'))
                    else:
                        param_list[arg] = str(request.args[arg])
                else:
                    param_list[arg] = ast.literal_eval(str(request.args[arg]))
        else:
            if json_params[request_type]['params'].has_key(arg):

                object_params = json_params[request_type]['params'][arg]
                if is_ion_object_dict(object_params):
                    param_list[arg] = create_ion_object(object_params)
                else:
                    #Not an ION object so handle as a simple type then.
                    if isinstance(json_params[request_type]['params'][arg],
                                  unicode):
                        param_list[arg] = str(json_params[request_type]
                                              ['params'][arg].encode('utf8'))
                    else:
                        param_list[arg] = json_params[request_type]['params'][
                            arg]

    return param_list