mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
* SSMetrics * We were a bit too silly * Forgot to commit this * Logs CPU * Removes global data from all ss * And puts it on the metrics ss * Update metrics.dm * Logs profiler data * Adds profile configs * Update code/controllers/subsystem/metrics.dm Co-authored-by: adamsong <adamsong@users.noreply.github.com> * Log request errors * Final fixes * Rebuilds for 1.2.0-yogs1 * Apparnetly you can't split macro calls on multiple lines * Org is called yogstation13 not yogstation --------- Co-authored-by: alexkar598 <> Co-authored-by: adamsong <adamsong@users.noreply.github.com>
90 lines
1.8 KiB
Plaintext
90 lines
1.8 KiB
Plaintext
/datum/http_request
|
|
var/id
|
|
var/in_progress = FALSE
|
|
|
|
var/method
|
|
var/body
|
|
var/headers
|
|
var/url
|
|
/// If present response body will be saved to this file.
|
|
var/output_file
|
|
|
|
var/_raw_response
|
|
|
|
/datum/http_request/proc/prepare(method, url, body = "", list/headers, output_file)
|
|
if (!length(headers))
|
|
headers = ""
|
|
else
|
|
headers = json_encode(headers)
|
|
|
|
src.method = method
|
|
src.url = url
|
|
src.body = body
|
|
src.headers = headers
|
|
src.output_file = output_file
|
|
|
|
/datum/http_request/proc/execute_blocking()
|
|
_raw_response = rustg_http_request_blocking(method, url, body, headers, build_options())
|
|
|
|
/datum/http_request/proc/from_id(id)
|
|
if (in_progress)
|
|
CRASH("Attempted to re-use a request object.")
|
|
|
|
src.id = id
|
|
in_progress = TRUE
|
|
|
|
/datum/http_request/proc/begin_async()
|
|
if (in_progress)
|
|
CRASH("Attempted to re-use a request object.")
|
|
|
|
id = rustg_http_request_async(method, url, body, headers, build_options())
|
|
|
|
if (isnull(text2num(id)))
|
|
stack_trace("Proc error: [id]")
|
|
_raw_response = "Proc error: [id]"
|
|
else
|
|
in_progress = TRUE
|
|
|
|
/datum/http_request/proc/build_options()
|
|
if(output_file)
|
|
return json_encode(list("output_filename"=output_file,"body_filename"=null))
|
|
return null
|
|
|
|
/datum/http_request/proc/is_complete()
|
|
if (isnull(id))
|
|
return TRUE
|
|
|
|
if (!in_progress)
|
|
return TRUE
|
|
|
|
var/r = rustg_http_check_request(id)
|
|
|
|
if (r == RUSTG_JOB_NO_RESULTS_YET)
|
|
return FALSE
|
|
else
|
|
_raw_response = r
|
|
in_progress = FALSE
|
|
return TRUE
|
|
|
|
/datum/http_request/proc/into_response()
|
|
var/datum/http_response/R = new()
|
|
|
|
try
|
|
var/list/L = json_decode(_raw_response)
|
|
R.status_code = L["status_code"]
|
|
R.headers = L["headers"]
|
|
R.body = L["body"]
|
|
catch
|
|
R.errored = TRUE
|
|
R.error = _raw_response
|
|
|
|
return R
|
|
|
|
/datum/http_response
|
|
var/status_code
|
|
var/body
|
|
var/list/headers
|
|
|
|
var/errored = FALSE
|
|
var/error
|