Example #1
0
    def resolve_argument(
        self,
        argument: ComponentMethodArgument,
        request: Request,
        response_headers: MutableMapping[str, str],
    ):
        query_parameters = request.query_params

        query_parameter = self._get_query_parameter(argument)

        if query_parameter is None:
            raise ArgumentNotSupported(argument)

        parameter_name = query_parameter.name
        explode = query_parameter.explode
        is_iterable = is_iterable_type(argument.type_)

        if parameter_name not in query_parameters:
            try:
                return argument.get_default()
            except ArgumentDoesNotHaveDefault:
                raise JSONDecodeException(
                    f'Missing required query parameter "{parameter_name}"')

        value = self._get_value(query_parameters, parameter_name, is_iterable,
                                explode)
        return json_decode(value, argument.type_)
Example #2
0
def get_argument_info(argument: ComponentMethodArgument) -> dict:
    try:
        type_info = inspect_type(argument.type_)
        invalid_hype_hint = False
    except InspectorNotFound:
        type_info = TypeInfo(openapi.TYPE_STRING)
        invalid_hype_hint = True
    type_info_data = type_info.as_dict()

    description = argument.description

    if invalid_hype_hint:
        description = update_doc_with_invalid_hype_hint(description)
    default = argument.get_default(None)
    type_info_data['description'] = description
    type_info_data['default'] = default
    return type_info_data