import requests as r
import json
import urllib.parse as urlparse

host = "managersaas.tecnospeed.com.br"

# Obtem token da software house
url_token = "https://%s:1337/api/v1/software-house/token" % host
email = urlparse.quote("seu@email.com")
senha = urlparse.quote("Sua_Senha")
payload_token = "email=" + email + "&senha=" + senha + "&gerar=0"
api_token = ""
headers_token = {
    'Content-Type': "application/x-www-form-urlencoded",
    'Accept': "*/*",
    'Cache-Control': "no-cache",
    }
response_token = r.request("POST", url_token, data=payload_token, headers=headers_token)
body_cadastro_decoded = response_token.content.decode("utf-8")

if response_token.status_code == 200:
    response_token_json = json.loads(response_token.text)
    api_token = response_token_json['dados']['token']
    print(body_cadastro_decoded)
else:
    print("Erro %s - %s" % (response_token.status_code, body_cadastro_decoded))

if api_token != "":
    # Cadastra empresa
    certificado = open(r'C:\Users\diego.oliveira\Downloads\29323-19560707000180-123mudar.pfx', 'rb')
    
    body_cadastro = {
    'idgrupo': '15841',
    'idcidade': '5003207',
    'cnpj': '97537488000122',
    'razaosocial': 'Seriema',
    'identificacao': 'Seriema',
    'descricao': 'Seriema',
    'inscricaomunicipal': '12345',
    'certificadobinario' : certificado,
    'senhacertificado' : '123mudar'
    }
    
    url_cadastro = 'https://%s:1337/api/v1/empresa?token=%s' % (host, api_token)
    #Não enviar -> headers_cadastro = {'Content-Type': 'multipart/form-data', 'Accept': '*/*', 'Cache-Control': "no-cache",}
    response_cadastro = r.post(url_cadastro, data=body_cadastro)
    body_cadastro_decoded = response_cadastro.content.decode('utf-8')
    
    parsed = json.loads(body_cadastro_decoded)
    
    if response_cadastro.status_code != 200:
        print('Erro %s %s' % (response_cadastro.status_code, body_cadastro_decoded))
    else:
        print(json.dumps(parsed, indent=4, sort_keys=False))
else:
    print("Token não informado. Nada a fazer.")