Example #1
0
def company(uf_code: str = 'SP',
            age: int = 1,
            formatting: bool = True,
            data_only: bool = True) -> dict:
    """Gere dados de companhia (empresa/organização) aleatório.
    
    Parameters
    ----------
    age
        Representa o tempo de existência da companhia (a idade da companhia).
    """

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code)

    if not (1 <= age <= 30):
        msg_error = f'The company age value "{age}" is invalid. Enter a valid company age.'
        msg_error += f' The range is 1 to 30.'

        raise ValueError(msg_error)

    r = fordev_request(content_length=48,
                       referer='gerador_de_empresas',
                       payload={
                           'acao': 'gerar_empresa',
                           'pontuacao': 'S' if formatting else 'N',
                           'estado': uf_code,
                           'idade': age
                       })

    # Replace data in html format with company info only.
    r['data'] = filter_company_info(r['data'])

    return data_format(data_only=data_only, data_dict=r)
Example #2
0
def is_valid_state_registration(uf_code: str,
                                state_registration_code: str,
                                data_only: bool = True) -> bool:
    """Verifique se o código do registro estadual é válido.
    
    Parameters
    ----------
    uf_code
        O código UF(Unidade Federativa) do estado que pertence o registro estadual.
        
        Mais informações: https://pt.wikipedia.org/wiki/Subdivis%C3%B5es_do_Brasil

    state_registration_code
        O código do registro estadual para verificação.
    """

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code)

    r = _data_verification_and_normalize(
        fordev_request(content_length=48,
                       referer='validar_inscricao_estadual',
                       payload={
                           'acao': 'validar_ie',
                           'txt_ie': state_registration_code,
                           'estado': uf_code
                       }))

    return data_format(data_only=data_only, data_dict=r)
Example #3
0
def renavam(data_only: bool = True) -> str:
    """Gere o código do RENAVAM(Registro Nacional de Veículos Automotores) aleatório."""

    r = fordev_request(content_length=18,
                       referer='gerador_de_renavam',
                       payload={'acao': 'gerar_renavam'})

    return data_format(data_only=data_only, data_dict=r)
Example #4
0
    def test_if_data_format_return_correct_keys_and_values_in_success_and_failed_case(self):
        success_case = data_format(data_only=False, data_dict=self.data_success_case)
        failed_case = data_format(data_only=False, data_dict=self.data_failed_case)

        # Test the return length
        self.assertEqual(len(success_case), 2)
        self.assertEqual(len(failed_case), 2)

        # Test the return keys
        self.assertCountEqual(['msg', 'data'], success_case.keys())
        self.assertCountEqual(['msg', 'data'], failed_case.keys())

        # Test the return values
        self.assertEqual(success_case['msg'], 'success')
        self.assertEqual(success_case['data'], 'data of test')
        self.assertEqual(failed_case['msg'], 'failed')
        self.assertEqual(failed_case['data'], 'exception')
Example #5
0
def cnh(data_only: bool = True) -> str:
    """Random generate of CNH(Carteira Nacional de Habilitação)."""

    r = fordev_request(content_length=14,
                       referer='gerador_de_cnh',
                       payload={'acao': 'gerar_cnh'})

    return data_format(data_only=data_only, data_dict=r)
Example #6
0
def rg(formatting: bool = True, data_only: bool = True) -> str:
    """Gere o código do RG(Registro Geral) aleatório, emitido por SSP-SP."""

    r = fordev_request(content_length=25,
                       referer='gerador_de_rg',
                       payload={
                           'acao': 'gerar_rg',
                           'pontuacao': 'S' if formatting else 'N',
                       })

    return data_format(data_only=data_only, data_dict=r)
Example #7
0
def pis_pasep(formatting: bool = True, data_only: bool = True) -> str:
    """Gere o código do PIS/PASEP aleatório."""

    r = fordev_request(content_length=26,
                       referer='gerador_de_pis_pasep',
                       payload={
                           'acao': 'gerar_pis',
                           'pontuacao': 'S' if formatting else 'N'
                       })

    return data_format(data_only=data_only, data_dict=r)
Example #8
0
def cnpj(formatting: bool = True, data_only: bool = True) -> str:
    """Gere o código do CNPJ(Cadastro Nacional da Pessoa Jurídica) aleatório."""

    r = fordev_request(content_length=27,
                       referer='gerador_de_cnpj',
                       payload={
                           'acao': 'gerar_cnpj',
                           'pontuacao': 'S' if formatting else 'N',
                       })

    return data_format(data_only=data_only, data_dict=r)
Example #9
0
def voter_title(uf_code: str, data_only: bool = True) -> str:
    """Gere o código do título de eleitor aleatório, conforme o UF especificado."""

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code)

    r = fordev_request(content_length=35,
                       referer='gerador_de_titulo_de_eleitor',
                       payload={
                           'acao': 'gerar_titulo_eleitor',
                           'estado': uf_code
                       })

    return data_format(data_only=data_only, data_dict=r)
Example #10
0
def vehicle(brand_code: int = 0,
            uf_code: str = '',
            formatting: bool = True,
            data_only: bool = True) -> dict:
    """Gere dados de veículo aleatório.
    
    Parameters
    ----------
    brand
        Recebe um valor númerico de 0 a 87 que representa a marca do carro para
        geração dos dados aleatórios.

        Consulte a doc para verificar as opções suportadas:
        https://fordev.rtfd.io/pt_BR/latest/fordev/generators.html
    """

    if not (0 <= brand_code <= 87):
        msg_error = f'The vehicle brand code value "{brand_code}" is invalid. Enter a valid vehicle brand code.'
        msg_error += f' The range is 0 to 87.'

        raise ValueError(msg_error)

    # Replace the brand code with the brand code used in 4devs.
    if brand_code != 0:
        brand_code = ALL_VEHICLE_BRANDS[brand_code]['code']
    else:
        brand_code = ''

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code, include_blank=True)

    r = fordev_request(
        content_length=
        62,  # Max of bytes for generate vehicle data in all possibilities.
        referer='gerador_de_veiculos',
        payload={
            'acao': 'gerar_veiculo',
            'pontuacao': 'S' if formatting else 'N',
            'estado': uf_code,
            'fipe_codigo_marca': brand_code
        })

    # Replace data in html format with bank account info only.
    r['data'] = filter_vehicle_info(r['data'])

    return data_format(data_only=data_only, data_dict=r)
Example #11
0
def is_valid_rg(rg_code: str, data_only: bool = True) -> bool:
    """Verifique se o código do RG é válido.
    
    Parameters
    ----------
    rg_code
        O código do RG para verificação.
    """

    content_length = 35
    referer = 'validador_rg'
    payload = {'acao': 'validar_rg', 'txt_rg': rg_code}

    r = _data_verification_and_normalize(
        fordev_request(content_length, referer, payload))

    return data_format(data_only=data_only, data_dict=r)
Example #12
0
def is_valid_pis_pasep(pis_pasep_code: str, data_only: bool = True) -> bool:
    """Verifique se o código do PIS/PASEP é válido.
    
    Parameters
    ----------
    pis_pasep_code
        O código PIS/PASEP para verificação.
    """

    content_length = 39
    referer = 'validador_pis_pasep'
    payload = {'acao': 'validar_pis', 'txt_pis': pis_pasep_code}

    r = _data_verification_and_normalize(
        fordev_request(content_length, referer, payload))

    return data_format(data_only=data_only, data_dict=r)
Example #13
0
def is_valid_cnpj(cnpj_code: str, data_only: bool = True) -> bool:
    """Verifique se o código do CNPJ é válido.
    
    Parameters
    ----------
    cnpj_code
        O código CNPJ para verificação.
    """

    content_length = 47
    referer = 'validador_cnpj'
    payload = {'acao': 'validar_cnpj', 'txt_cnpj': cnpj_code}

    r = _data_verification_and_normalize(
        fordev_request(content_length, referer, payload))

    return data_format(data_only=data_only, data_dict=r)
Example #14
0
def is_valid_bank_account(bank: int,
                          agency: str,
                          account: str,
                          data_only: bool = True) -> bool:
    """Verifique se os dados da conta bancária são válidos.
    
    Parameters
    ----------
    bank
        A bandeira do banco da conta bancária que deseja validar os dados.
        
        Consulte a doc para verificar as opções suportadas:
        https://fordev.rtfd.io/pt_BR/latest/fordev/generators.html
    
    agency
        O código da agência bancária para verificação.

    account
        O código da conta bancária para verificação.
   """

    # Check if bank code is invalid. If true, raise exception.
    if not (1 <= bank <= 5):
        msg_error = f'The bank code value "{bank}" is invalid. Enter a valid bank code.'
        msg_error += f' The range is 1 to 5.'

        raise ValueError(msg_error)

    # Replace the bank number with the bank code used in 4devs.
    bank = [2, 121, 85, 120,
            151][bank - 1]  # Use the index for get the bank code.

    content_length = 66
    referer = 'validador_conta_bancaria'
    payload = {
        'acao': 'validar_conta_bancaria',
        'banco': bank,
        'agencia': agency,
        'conta': account
    }

    r = _data_verification_and_normalize(
        fordev_request(content_length, referer, payload))

    return data_format(data_only=data_only, data_dict=r)
Example #15
0
def is_valid_certificate(certificate_code: str,
                         data_only: bool = True) -> bool:
    """Verifique se o código da Certidão (birth, wedding, religious wedding and death) é válido.
    
    Parameters
    ----------
    certificate_code
        O código da certidão para verificação.
    """

    content_length = 75
    referer = 'validador_certidoes'
    payload = {'acao': 'validar_certidao', 'txt_certidao': certificate_code}

    r = _data_verification_and_normalize(
        fordev_request(content_length, referer, payload))

    return data_format(data_only=data_only, data_dict=r)
Example #16
0
def city(uf_code: str = 'SP', data_only: bool = True) -> list:
    """Obtenha as cidades do UF especificado."""

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code)

    r = fordev_request(content_length=35,
                       referer='gerador_de_pessoas',
                       payload={
                           'acao': 'carregar_cidades',
                           'cep_estado': uf_code
                       })

    # Replace data in html format with city names only
    r['data'] = filter_city_name(r['data'])

    return data_format(data_only=data_only, data_dict=r)
Example #17
0
def cpf(uf_code: str = '',
        formatting: bool = True,
        data_only: bool = True) -> str:
    """Gere o código de um CPF(Cadastro de Pessoas Físicas) aleatório."""

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code, include_blank=True)

    r = fordev_request(content_length=38 if uf_code == '' else 40,
                       referer='gerador_de_cpf',
                       payload={
                           'acao': 'gerar_cpf',
                           'pontuacao': 'S' if formatting else 'N',
                           'cpf_estado': uf_code
                       })

    return data_format(data_only=data_only, data_dict=r)
Example #18
0
def state_registration(uf_code: str = 'SP',
                       formatting: bool = True,
                       data_only: bool = True) -> str:
    """Gere o código de registro de estado aleatório."""

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code)

    r = fordev_request(content_length=35,
                       referer='gerador_de_inscricao_estadual',
                       payload={
                           'acao': 'gerar_ie',
                           'pontuacao': 'S' if formatting else 'N',
                           'estado': uf_code
                       })

    return data_format(data_only=data_only, data_dict=r)
Example #19
0
def vehicle_plate(uf_code: str = '',
                  formatting: bool = True,
                  data_only: bool = True) -> str:
    """Gere o código da placa de veículo aleatório."""

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code, include_blank=True)

    r = fordev_request(content_length=36 if uf_code == '' else 38,
                       referer='gerador_de_placa_automoveis',
                       payload={
                           'acao': 'gerar_placa',
                           'pontuacao': 'S' if formatting else 'N',
                           'estado': uf_code
                       })

    return data_format(data_only=data_only, data_dict=r)
Example #20
0
def certificate(type_: str = 'I',
                formatting: bool = True,
                data_only: bool = True) -> str:
    """Gere o código de certidões (birth, wedding, religious wedding and death) aleatórias.
    
    Parameters
    ----------
    type_
        O tipo da certidão para geração do código.

        Consulte a doc para verificar as opções suportadas:
        https://fordev.rtfd.io/pt_BR/latest/fordev/generators.html
    """

    type_ = type_.upper()

    certificate_types = {
        'I': 'Indiferente',
        'B': 'nascimento',
        'W': 'casamento',
        'R': 'casamento_religioso',
        'D': 'obito'
    }

    # If type_ not exists in certificate_types, raise exception.
    if not certificate_types.get(type_, False):
        msg_error = f'The certificate type "{type_}" is invalid. Enter a valid type.'
        msg_error += f' Ex: "B" = Birth, "W" = Wedding, "R" = Religious Wedding, "D" = Death and "I" = Indifferent (Default).'

        raise ValueError(msg_error)

    r = fordev_request(
        content_length=
        67,  # Max of bytes for generate certificate in all possibilities.
        referer='gerador_numero_certidoes',
        payload={
            'acao': 'gerador_certidao',
            'pontuacao': 'S' if formatting else 'N',
            'tipo_certidao': certificate_types.get(type_)
        })

    return data_format(data_only=data_only, data_dict=r)
Example #21
0
def bank_account(bank: int = 0,
                 uf_code: str = '',
                 data_only: bool = True) -> dict:
    """Gere dados de conta bancária.
    
    Parameters
    ----------
    bank
        Recebe um valor númerico de 0 a 5 que representa a
        bandeira do banco da conta bancária a ser gerada.

        Consulte a doc para verificar as opções suportadas:
        https://fordev.rtfd.io/pt_BR/latest/fordev/generators.html
    """

    if not (0 <= bank <= 5):
        msg_error = f'The bank code value "{bank}" is invalid. Enter a valid bank code.'
        msg_error += f' The range is 0 to 5.'

        raise ValueError(msg_error)

    # Replace the bank number with the bank code used in 4devs.
    bank = ['', 2, 121, 85, 120,
            151][bank]  # Use the index for get the bank code.

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code, include_blank=True)

    r = fordev_request(content_length=45,
                       referer='gerador_conta_bancaria',
                       payload={
                           'acao': 'gerar_conta_bancaria',
                           'estado': uf_code,
                           'banco': bank
                       })

    # Replace data in html format with bank account info only.
    r['data'] = filter_bank_account_info(r['data'])

    return data_format(data_only=data_only, data_dict=r)
Example #22
0
def credit_card(bank: int = 0,
                formatting: bool = True,
                data_only: bool = True) -> dict:
    """Gere dados de cartão de crédito aleatório.
    
    Parameters
    ----------
    bank
        Recebe um valor númerico de 0 a 10 representando a
        bandeira do cartão de crédito a ser gerado.
        
        Consulte a doc para verificar as opções suportadas:
        https://fordev.rtfd.io/pt_BR/latest/fordev/generators.html
    """

    if not (0 <= bank <= 10):
        msg_error = f'The bank code value "{bank}" is invalid. Enter a valid bank code.'
        msg_error += f' The range is 0 to 10.'

        raise ValueError(msg_error)

    # Replace the bank code with the bank flag used in 4devs.
    if bank != 0:
        bank = ALL_BANK_FLAGS[bank]
    else:
        bank = random_choice(list(ALL_BANK_FLAGS.values()))

    r = fordev_request(content_length=43,
                       referer='gerador_de_numero_cartao_credito',
                       payload={
                           'acao': 'gerar_cc',
                           'pontuacao': 'S' if formatting else 'N',
                           'bandeira': bank
                       })

    # Replace data in html format with credit card info only.
    r['data'] = filter_credit_card_info(r['data'])

    return data_format(data_only=data_only, data_dict=r)
Example #23
0
def is_valid_credit_card(flag: int,
                         credit_card_code: str,
                         data_only: bool = True) -> bool:
    """Verifique se o código do cartão de crédito é válido.
    
    Parameters
    ----------
    flag
        A bandeira do cartão de crédito que deseja validar o código.
        
        Consulte a doc para verificar as opções suportadas:
        https://fordev.rtfd.io/pt_BR/latest/fordev/generators.html

    credit_card_code
        O código do cartão de crédito para verificação.
   """

    # Check if bank code is invalid. If true, raise exception.
    if not (1 <= flag <= 12):
        msg_error = f'The flag credit card code value "{flag}" is invalid. Enter a valid flag credit card code.'
        msg_error += f' The range is 1 to 12.'

        raise ValueError(msg_error)

    flag = ALL_BANK_FLAGS_2[flag]

    content_length = 68
    referer = 'validador_numero_cartao_credito'
    payload = {
        'acao': 'validar_cc',
        'txt_cc': credit_card_code,
        'bandeira': flag
    }

    r = _data_verification_and_normalize(
        fordev_request(content_length, referer, payload))

    return data_format(data_only=data_only, data_dict=r)
Example #24
0
def is_valid_voter_title(voter_title_code: str,
                         data_only: bool = True) -> bool:
    """Verifique se o código do título de eleitor é válido.
    
    Parameters
    ----------
    voter_title_code
        O código do título de eleitor para verificação.
    """

    content_length = 59
    referer = 'validador_titulo_de_eleitor'
    payload = {
        'acao': 'validar_titulo_eleitor',
        'txt_titulo_eleitor': voter_title_code
    }

    r = fordev_request(content_length, referer, payload)

    if r.get('data', False):
        is_valid = r['data'].split(' - ')[-2].lower() == 'verdadeiro'
        r['data'] = is_valid

    return data_format(data_only=data_only, data_dict=r)
Example #25
0
    def test_data_format_with_data_only_argument_as_false(self):
        success_case = data_format(data_only=False, data_dict=self.data_success_case)
        failed_case = data_format(data_only=False, data_dict=self.data_failed_case)

        self.assertDictEqual(success_case, self.data_success_case)
        self.assertDictEqual(failed_case, self.data_failed_case)