agregamos redirect.ex y refactorizamos get_hash.ex en controller

This commit is contained in:
2025-04-17 12:55:17 -03:00
parent 4899d61433
commit 84922f7548
5054 changed files with 326731 additions and 19002 deletions

View File

@ -7,6 +7,7 @@ defmodule ApiWeb.GetHash do
# El token fue generado con generate_token(%{password: "1nf0rm3"})
@valid_token "XHhlNmU3Y2RmYjAyOGZhNWM5NjVhZGNkOTNhOTQ0NDRkYmYwMWFkM2U3YjQ1NjE1YzU1ZDg0ZjlmMDQzNDRmNTUw"
def index(conn, %{"study" => accessionnumber}) do
Envar.load(".env")
Envar.require_env_file(".env")
@ -16,7 +17,25 @@ defmodule ApiWeb.GetHash do
|> put_status(:unauthorized)
|> json(%{error: "Token inválido o ausente"})
else
Logger.info("Accession get hash -> #{accessionnumber}")
hash = get_hash(accessionnumber)
if hash == "nil" do
conn
|> put_status(:not_found)
|> json(%{error: "Estudio no encontrado"})
else
conn
|> put_status(:ok)
|> json(%{hash: hash})
end
end
end
def get_hash(accessionnumber) do
studyidentifier = Envar.get("IDENTIFIERFIELD") || "IDSTUDY"
@ -45,10 +64,7 @@ defmodule ApiWeb.GetHash do
case Repo.one(query) do
nil ->
conn
|> put_status(:not_found)
|> json(%{error: "Estudio no encontrado"})
"nil"
res ->
vencimiento = DateTime.add(DateTime.utc_now(), 2 * 24 * 60 * 60, :second)
@ -56,13 +72,11 @@ defmodule ApiWeb.GetHash do
token = generate_token(json_data)
conn
|> put_status(:ok)
|> json(%{hash: token})
end
end
end
def generate_token(json) do
json_string = Jason.encode!(json)
query = "select encrypt('#{json_string}'::bytea, '1nf0rm3', 'aes')::text"

View File

@ -0,0 +1,44 @@
defmodule ApiWeb.Redirect do
use ApiWeb, :controller
alias Api.Repo
import Ecto.Query
require Logger
def index(conn, %{"accession" => accession}) do
Envar.load(".env")
Envar.require_env_file(".env")
redirect = Envar.get("REDIRECT")
Logger.info("parametros: #{inspect(accession)}")
if redirect == "TRUE" do
hash = case get_hash_v2(accession) do
{:ok, hash} ->
url = "https://estudio.informemedico.com.ar/#/191/" <> hash
{:error, error_msg} ->
text(conn, "Error al obtener hash: #{error_msg}")
end
redirect(conn, external: hash)
else
text(conn, "Error 404")
end
end
defp get_hash_v2(accession) do
hash = ApiWeb.GetHash.get_hash(accession)
if hash == "nil" do
{:error, "Estudio no encontrado"}
else
{:ok, hash}
end
end
end

View File

@ -34,6 +34,7 @@ defmodule ApiWeb.Router do
post "/studies", StudiesController, :index
post "/sharestudy", ShareController, :index
get "/gethash/:study", GetHash, :index
get "/redirect/:accession", Redirect, :index
get "/study/:hash", StudyController, :index
get "/downloadpdf/:idstudyreport", DownloadpdfController, :index
get "/attachment/:idstudyattachment", AttachmentController, :index