@@ -3,91 +3,61 @@ This script manages the requests and data coming from the data_generator_server.
33It sends two requests to the endpoints of the data generator, one receiving processed
44data from Prometheus and another receiving data from the user-controlled API.
55They are result_from_generate and result_from_get respectively.
6- In order to get these seperate requests, meta data is used to organize the results.
7- Some really bad code is used to query the http_request children of their data, but
8- if you can overlook that, it works fine.
96'''
107
118extends HTTPRequest
129
10+ @onready var http_generate := HTTPRequest .new ()
11+ @onready var http_get := HTTPRequest .new ()
12+
1313@onready var result_from_generate : Dictionary = {}
1414@onready var result_from_get : Dictionary = {}
1515
16- # This was part of a dynamic endpoint structure using an .env
17- # We ended up hard coding the endpoints instead.
18- # var GENERATE;
19- # var GET;
20- var env_vars = {};
21-
2216const GENERATE = "https://labmap.ocf.berkeley.edu/api/generate"
2317const GET = "https://labmap.ocf.berkeley.edu/api/get"
2418
2519signal result_ready (endpoint : String )
2620
27- var flipflop = 1 # don't ask
28-
2921func _ready ():
30- # load_env("res://.env")
31- # GENERATE = env_vars["GENERATE_URI"]
32- # GET = env_vars["GET_URI"]
33- _send_http_request (GENERATE )
34- _send_http_request (GET )
22+ add_child (http_generate )
23+ add_child (http_get )
24+
25+ http_generate .request_completed .connect (_on_generate_completed )
26+ http_get .request_completed .connect (_on_get_completed )
27+
28+ _send_http_request (http_generate , GENERATE )
29+ _send_http_request (http_get , GET )
3530
36- func _send_http_request (url : String ) -> void :
37- var http_request = HTTPRequest .new ()
38- add_child (http_request )
31+ func _send_http_request (http_request : HTTPRequest , url : String ) -> void :
3932 var headers = [
4033 "Accept: application/json" ,
4134 "Accept-Encoding: identity"
4235 ]
43- http_request .set_meta ("endpoint" , url ) # Store the endpoint as metadata
44- http_request .request_completed .connect (self ._http_request_completed )
45-
46- var error = http_request .request (url ,headers ) # Send the request
36+ var error = http_request .request (url , headers )
4737 if error != OK :
4838 Logger .log ("An error occurred in the HTTP request." , "Error" , "DATA_GENERATOR" )
4939
5040# Called when the HTTP request is completed.
51- func _http_request_completed (result , response_code , _headers , body ):
52- var endpoint : String
53- # this is some awful code, god forgive me
54- if flipflop == 1 :
55- endpoint = get_child (2 ).get_meta ("endpoint" )
56- elif flipflop == - 1 :
57- endpoint = get_child (1 ).get_meta ("endpoint" )
58- flipflop = flipflop * - 1
59-
60- if result != HTTPRequest .RESULT_SUCCESS :
61- Logger .log ("Error connecting to data generator server" , "Error" , "DATA_GENERATOR" )
62- return
63- if response_code != 200 :
64- Logger .log ("Error: Server returned an unexpected status code %d " % response_code , "Error" , "DATA_GENERATOR" )
41+ func _on_generate_completed (result , response_code , _headers , body ):
42+ if result != HTTPRequest .RESULT_SUCCESS or response_code != 200 :
43+ Logger .log ("Error in generate request" , "Error" , "DATA_GENERATOR" )
6544 return
6645
67- var parsedResult = JSON .parse_string (body .get_string_from_utf8 ())
68- if parsedResult is Dictionary :
69- if endpoint == GENERATE :
70- result_from_generate = parsedResult
71- elif endpoint == GET :
72- result_from_get = parsedResult
73- emit_signal ("result_ready" , endpoint )
46+ var parsed = JSON .parse_string (body .get_string_from_utf8 ())
47+ if parsed is Dictionary :
48+ result_from_generate = parsed
49+ emit_signal ("result_ready" , GENERATE )
7450 else :
75- # print("Error Reading File")
76- Logger .log ("Error reading data generator response" , "Error" , "DATA_GENERATOR" )
51+ Logger .log ("Error parsing generate response" , "Error" , "DATA_GENERATOR" )
7752
78- func _on_update_timer_timeout () -> void :
79- _ready ()
80-
81- func load_env (path : String ):
82- if not FileAccess .file_exists (path ):
83- push_warning (".env file not found at " + path )
53+ func _on_get_completed (result , response_code , _headers , body ):
54+ if result != HTTPRequest .RESULT_SUCCESS or response_code != 200 :
55+ Logger .log ("Error in get request" , "Error" , "DATA_GENERATOR" )
8456 return
85-
86- var file = FileAccess .open (path , FileAccess .READ )
87- while not file .eof_reached ():
88- var line = file .get_line ().strip_edges ()
89- if line == "" or line .begins_with ("#" ): # skip comments/empty
90- continue
91- var parts = line .split ("=" , true , 1 )
92- if parts .size () == 2 :
93- env_vars [parts [0 ].strip_edges ()] = parts [1 ].strip_edges ()
57+
58+ var parsed = JSON .parse_string (body .get_string_from_utf8 ())
59+ if parsed is Dictionary :
60+ result_from_get = parsed
61+ emit_signal ("result_ready" , GET )
62+ else :
63+ Logger .log ("Error parsing get response" , "Error" , "DATA_GENERATOR" )
0 commit comments