Skip to content

Commit

Permalink
Refactoring, less errors logged
Browse files Browse the repository at this point in the history
  • Loading branch information
Adrian Salceanu committed Apr 5, 2024
1 parent 4b041ef commit f83259c
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 17 deletions.
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "GenieLicensing"
uuid = "053420ac-561e-47bc-88a1-f3908d4a7fc1"
authors = ["Adrian Salceanu <[email protected]> and contributors"]
version = "1.0.2-DEV"
version = "1.0.3-DEV"

[deps]
HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3"
Expand Down
46 changes: 30 additions & 16 deletions src/GenieLicensing.jl
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ const USER_EMAIL = get!(ENV, "GENIE_USER_EMAIL", "[email protected]
const USER_FULL_NAME = get!(ENV, "GENIE_USER_FULL_NAME", "Unknown User")
const ORIGIN = get!(ENV, "GENIE_ORIGIN", "Unknown")
const METADATA = get!(ENV, "GENIE_METADATA", "")
const FAILED_SESSION_ID = "__failed_session_id__"

@inline function is_failed_session()
return ENV["GENIE_SESSION"] == FAILED_SESSION_ID
end

function start_session()
session_data = try
Expand All @@ -21,63 +26,72 @@ function start_session()
status_exception = true
)
catch ex
@error("Failed to start session: $ex")
@warn("Failed to start session. Retrying. $ex")
@delay_retry if true end
end
catch ex
@error("Failed to start session: $ex")
ENV["GENIE_SESSION"] = ""
@warn("Failed to start session. Giving up. $ex")
ENV["GENIE_SESSION"] = FAILED_SESSION_ID

return
end

if session_data.status != 200
@error("Failed to start session: $(session_data.body |> String)")
ENV["GENIE_SESSION"] = ""
else
ENV["GENIE_SESSION"] = (session_data.body |> String |> JSON.parse)["session"]["id"]
if session_data.status == 200
try
ENV["GENIE_SESSION"] = (session_data.body |> String |> JSON.parse)["session"]["id"]
catch ex
@warn("Failed to parse session data: $ex")
ENV["GENIE_SESSION"] = FAILED_SESSION_ID
end
end

ENV["GENIE_SESSION"]
end

function log(origin, type, payload::AbstractDict)
if ENV["GENIE_SESSION"] == ""
@info("No session found, skipping logging")
if is_failed_session()
@warn("No session found, skipping logging")
return
end

try
HTTP.post(LICENSE_API * "/actions";
body = Dict(
"session_hash" => get(ENV, "GENIE_SESSION", "Unknown"),
"session_hash" => get(ENV, "GENIE_SESSION", FAILED_SESSION_ID),
"origin" => origin,
"type" => type,
"metadata" => payload |> JSON.json
),
status_exception = false
)
catch ex
@error("Failed to log action: $ex")
@warn("Failed to log action: $ex")
end

nothing
end

function quotas()
if ENV["GENIE_SESSION"] == ""
if is_failed_session()
return Dict()
end

quotas_data = try
HTTP.get(LICENSE_API * "/sessions/" * ENV["GENIE_SESSION"] * "/quotas"; status_exception = false)
catch ex
@error("Failed to get quotas: $ex")
@warn("Failed to get quotas: $ex")
return Dict()
end

if quotas_data.status != 200
return Dict()
else
return (quotas_data.body |> String |> JSON.parse)["quotas"]
end

try
(quotas_data.body |> String |> JSON.parse)["quotas"]
catch ex
@warn("Failed to parse quotas data: $ex")
return Dict()
end
end

Expand Down

0 comments on commit f83259c

Please sign in to comment.