Exemple #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)
Exemple #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)
Exemple #3
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)
Exemple #4
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)
Exemple #5
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)
Exemple #6
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)
Exemple #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)
Exemple #8
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)
Exemple #9
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)
Exemple #10
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)
Exemple #11
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)
Exemple #12
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)
Exemple #13
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)
Exemple #14
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)
Exemple #15
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)
Exemple #16
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)
Exemple #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)
Exemple #18
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)
Exemple #19
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)
Exemple #20
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)
Exemple #21
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)
Exemple #22
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)
Exemple #23
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)
Exemple #24
0
def people(n: int = 1,
           sex: str = 'R',
           age: int = 0,
           uf_code: str = '',
           formatting: bool = True,
           data_only: bool = True) -> str:
    """Gere dados de pessoa(s) aleatório(s)
    
    Parameters
    ----------
    n
        O número de pessoas a ter dados gerados. O mínimo é 1 e o máximo é 30.

    sex
        Uma string representando o sexo da pessoa para geração dos dados.
        
        Consulte a doc para verificar as opções suportadas:
        https://fordev.rtfd.io/pt_BR/latest/fordev/generators.html

    age
        A idade da pessoa para geração dos dados. A idade mínima é 18 e a máxima é 80.
    """

    sex = sex.upper()

    uf_code = uf_code.upper()

    if not (1 <= n <= 30):
        msg_error = f'The n value "{n}" is invalid. Enter a valid number of people.'
        msg_error += f' The range is 1 to 30 peoples.'

        raise ValueError(msg_error)

    if sex not in ['M', 'F', 'R']:
        msg_error = f'The sex "{sex}" is invalid. Enter a valid sex.'
        msg_error += f' Ex: "M" = Male, "F" = Feminine or "R" = Random.'

        raise ValueError(msg_error)

    if not (18 <= age <= 80) and age != 0:
        msg_error = f'The age "{age}" is invalid. Enter a valid age.'
        msg_error += f' The range is 18 to 80 age'

        raise ValueError(msg_error)

    raise_for_invalid_uf(uf=uf_code, include_blank=True)

    r = fordev_request(
        content_length=
        99,  # Max of bytes for generate people in all possibilities.
        referer='gerador_de_pessoas',
        payload={
            'acao': 'gerar_pessoa',
            'sexo': 'H' if sex == 'M' else 'M' if sex == 'F' else
            'I',  # H, M and I flags are used in 4devs for filter.
            'pontuacao': 'S' if formatting else 'N',
            'idade': age,
            'cep_estado': uf_code,
            'txt_qtde': n,

            # If the state is not selected, a default flag is used for the city ('Selecione o estado!') or
            # If the state is selected and city is not selected, a default flag is used for the city ('').
            'cep_cidade': 'Selecione o estado!' if uf_code == '' else ''
        })

    if data_only and r['msg'] == 'success':
        return json_loads(r['data'])

    if r['msg'] == 'success':

        # Convert data in str to dict.
        r['data'] = json_loads(r['data'])

        return r

    # In case of failure, return msg status and msg error.
    return r