-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
55 lines (39 loc) · 1.65 KB
/
main.py
File metadata and controls
55 lines (39 loc) · 1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import functions_framework
import logging
import os
from freshdesk import Freshdesk,GetAgents,TicketFields,Tickets,TimeEntries
from bigquery import Bigquery,InsertJson
def freshdesk_class(name):
classes= {
"Tickets":Tickets,
"GetAgents":GetAgents,
"TicketFields":TicketFields,
"TimeEntries":TimeEntries
}
return classes[name]
def bigquery_class(name):
classes= {
"InsertJson":InsertJson
}
return classes[name]
def run_function(request):
try:
request_json = request.get_json(silent=True)
freshdesk_request = request_json["freshdesk"]
bigquery_request = request_json["bigquery"]
api_key = os.environ.get('api_key')
company = os.environ.get('company')
headers = {"Access-Control-Allow-Origin": "*"}
freshdesk_function = freshdesk_class(freshdesk_request["function_name"])
freshdesk = Freshdesk(api_key,company,freshdesk_function())
freshdesk_function_parameters = freshdesk_request["function_parameters"]
freshdesk_data = freshdesk.run_request(freshdesk_function_parameters)
bigquery_request["function_parameters"]["data"] = freshdesk_data
bigquery_request["function_parameters"]["schema_name"] = freshdesk_request["function_name"]
bigquery_function = bigquery_class(bigquery_request["function_name"])
bigquery = Bigquery(bigquery_function())
bigquery.run_job(bigquery_request)
return "Sucesso", 200
except Exception as erro:
logging.error(erro)
return erro,400