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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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