Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2018
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.23 KB | None | 0 0
  1. import requests
  2. import json
  3. import time
  4. import adal
  5.  
  6. #Power BI
  7. def PegaToken():
  8. context = adal.AuthenticationContext('https://login.microsoftonline.com/alfameta.com.br', validate_authority=None, cache=None, api_version=None, timeout=None, enable_pii=False)
  9. token_json = context.acquire_token_with_username_password(
  10. resource='https://analysis.windows.net/powerbi/api',
  11. username='gabriel@alfameta.com.br',
  12. password='alfa*184430',
  13. client_id='675f77ad-6c01-49a0-a87d-4fa88a5a5ae8'
  14. )
  15. return token_json
  16.  
  17.  
  18. def PegaNovoToken():
  19. #Abre o arquivo e verifica o token salvo
  20. with open('auth.txt', 'r') as file:
  21. token_salvo = file.read().split(';')
  22. hora_token = token_salvo[0].split('.')
  23. hora_token = hora_token[0]
  24. validade = time.mktime(time.localtime()) - time.mktime(time.strptime(hora_token, "%Y-%m-%d %H:%M:%S"))
  25. #Verifica se o token salvo ainda é válido, se não gera um novo
  26. if validade >= 0:
  27. token_json = PegaToken()
  28. with open('auth.txt', 'w') as file:
  29. file.write('%s;%s' % (token_json['expiresOn'], token_json['accessToken']))
  30.  
  31.  
  32. def AbreNovoToken():
  33. #Abre o novo token
  34. with open('auth.txt', 'r') as file:
  35. token = file.read().split(';')
  36. return token[1]
  37.  
  38.  
  39. #RunRun.It
  40. head = {"App-Key": "97517be61ebfba95bc7db28d0263ea20",
  41. "User-Token": "VgpNPfLR0ASFJ3Dpyh3",
  42. "Content-type": "application/json"}
  43.  
  44.  
  45. #Get dos dados API RunRun.it
  46. def PegaTarefasRunRunIt():
  47. url_run_tarefa = 'https://secure.runrun.it/api/v1.0/tasks?is_working_on=true'
  48. tarefas_run = requests.get(url_run_tarefa, headers=head)
  49. print("Conexão com tarefas RunRun.it: " + str(tarefas_run.status_code) + " - " + tarefas_run.reason)
  50. return tarefas_run
  51.  
  52.  
  53. def PegaUsuariosRunRunIt():
  54. url_run_usuario = 'https://secure.runrun.it/api/v1.0/users'
  55. usuarios_run = requests.get(url_run_usuario, headers=head)
  56. print("Conexão com usuarios RunRun.it: " + str(usuarios_run.status_code) + " - " + usuarios_run.reason)
  57. return usuarios_run
  58.  
  59. #Cria Json PowerBI
  60. json_bi = []
  61.  
  62. #Cria list com adicionados
  63. usuarios_adicionados = []
  64.  
  65.  
  66. def AdicionaUsuarioTarefa(responsible_name, imagem_usuario, id, title, is_working_on, client_name, project_name, type_name,
  67. user_name, current_worked_time):
  68. json_bi.append(
  69. {
  70. "id": id,
  71. "title": str(id) + ' - ' + title.upper(),
  72. "is_working_on": is_working_on,
  73. "client_name": client_name.upper(),
  74. "project_name": project_name.upper(),
  75. "type_name": type_name.upper(),
  76. "user_name": user_name.upper(),
  77. "responsible_name": responsible_name.upper(),
  78. "current_worked_time": current_worked_time,
  79. "imagem_usuario": imagem_usuario,
  80. "data_sinc": time.strftime("%Y-%m-%dT%H:%M:%S")
  81. })
  82.  
  83.  
  84. def AdicionaUsuario(responsible_name, imagem_usuario):
  85. json_bi.append(
  86. {
  87. "id": " ",
  88. "title": 'NENHUMA TAREFA EM EXECUÇÃO',
  89. "is_working_on": " ",
  90. "client_name": " ",
  91. "project_name": " ",
  92. "type_name": " ",
  93. "user_name": " ",
  94. "responsible_name": responsible_name.upper(),
  95. "imagem_usuario": imagem_usuario,
  96. "data_sinc": time.strftime("%Y-%m-%dT%H:%M:%S")
  97. })
  98.  
  99. def CriaJson():
  100. tarefas = PegaTarefasRunRunIt().json()
  101. usuarios = PegaUsuariosRunRunIt().json()
  102. for usuario in usuarios:
  103. for tarefa in tarefas:
  104. if tarefa['responsible_name'] == usuario['name']:
  105. AdicionaUsuarioTarefa(tarefa['responsible_name'].upper(), usuario['avatar_large_url'], tarefa['id'], tarefa['title'].upper(),
  106. tarefa['is_working_on'], tarefa['client_name'].upper(), tarefa['project_name'].upper(), tarefa['type_name'].upper(),
  107. tarefa['user_name'].upper(), tarefa['current_worked_time'])
  108. usuarios_adicionados.append(usuario['name'])
  109. break
  110. if usuario['name'] not in usuarios_adicionados:
  111. AdicionaUsuario(usuario['name'].upper(), usuario['avatar_large_url'])
  112.  
  113.  
  114. #Post dos dados Power BI
  115. def DeletaBaseBI():
  116. header_bi = {'Content-Type': 'application/json', 'Authorization': 'Bearer {}'.format(AbreNovoToken())}
  117. deleta_bi = requests.delete('https://api.powerbi.com/v1.0/myorg/datasets/b617f704-73b7-4100-8338-f419102a47a2/tables/RealTimeData/rows', headers=header_bi)
  118. print("Delete de dados Power BI: " + str(deleta_bi.status_code) + " - " + deleta_bi.reason)
  119.  
  120.  
  121. def PushBI():
  122. url_bi = 'https://api.powerbi.com/beta/08137320-2860-418f-9376-6d7a0aa07f96/datasets/b617f704-73b7-4100-8338-f419102a47a2/rows?key=HzdMV6tm9JdEv6HgLgRTCRwZY6VhiAPm%2FBCvoavQ9aRLsZ6waG4%2BEiWJwom8HBi3kuPpQc%2F9ZC%2BUcr7HDNeo7Q%3D%3D'
  123. tarefas_bi = requests.post(url_bi, data=json.dumps(json_bi), verify=False)
  124. print("Conexão com Power BI: " + str(tarefas_bi.status_code) + " - " + tarefas_bi.reason)
  125.  
  126.  
  127. flag = True
  128. while flag == True:
  129. PegaNovoToken()
  130. json_bi = []
  131. usuarios_adicionados = []
  132. CriaJson()
  133. DeletaBaseBI()
  134. PushBI()
  135. time.sleep(60)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement