-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Adrian Salceanu
committed
Apr 5, 2024
1 parent
4b041ef
commit f83259c
Showing
2 changed files
with
31 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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 | ||
|
@@ -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 | ||
|
||
|