style: format codebase
This commit is contained in:
@@ -28,6 +28,7 @@ defmodule ComponentsElixir.DatasheetDownloader do
|
||||
case URI.parse(url) do
|
||||
%URI{scheme: scheme} when scheme in ["http", "https"] ->
|
||||
{:ok, URI.parse(url)}
|
||||
|
||||
_ ->
|
||||
{:error, "Invalid URL scheme. Only HTTP and HTTPS are supported."}
|
||||
end
|
||||
@@ -36,9 +37,12 @@ defmodule ComponentsElixir.DatasheetDownloader do
|
||||
defp generate_filename(url) do
|
||||
# Try to extract a meaningful filename from the URL
|
||||
uri = URI.parse(url)
|
||||
|
||||
original_filename =
|
||||
case Path.basename(uri.path || "") do
|
||||
"" -> "datasheet"
|
||||
"" ->
|
||||
"datasheet"
|
||||
|
||||
basename ->
|
||||
# Remove extension and sanitize
|
||||
basename
|
||||
@@ -54,10 +58,14 @@ defmodule ComponentsElixir.DatasheetDownloader do
|
||||
|
||||
defp sanitize_filename(filename) do
|
||||
filename
|
||||
|> String.replace(~r/[^\w\-_]/, "_") # Replace non-word chars with underscores
|
||||
|> String.replace(~r/_+/, "_") # Replace multiple underscores with single
|
||||
|> String.trim("_") # Remove leading/trailing underscores
|
||||
|> String.slice(0, 50) # Limit length
|
||||
# Replace non-word chars with underscores
|
||||
|> String.replace(~r/[^\w\-_]/, "_")
|
||||
# Replace multiple underscores with single
|
||||
|> String.replace(~r/_+/, "_")
|
||||
# Remove leading/trailing underscores
|
||||
|> String.trim("_")
|
||||
# Limit length
|
||||
|> String.slice(0, 50)
|
||||
|> case do
|
||||
"" -> "datasheet"
|
||||
name -> name
|
||||
@@ -66,17 +74,19 @@ defmodule ComponentsElixir.DatasheetDownloader do
|
||||
|
||||
defp fetch_pdf(url) do
|
||||
case Req.get(url,
|
||||
redirect: true,
|
||||
max_redirects: 5,
|
||||
receive_timeout: 30_000,
|
||||
headers: [
|
||||
{"User-Agent", "ComponentSystem/1.0 DatasheetDownloader"}
|
||||
]
|
||||
) do
|
||||
redirect: true,
|
||||
max_redirects: 5,
|
||||
receive_timeout: 30_000,
|
||||
headers: [
|
||||
{"User-Agent", "ComponentSystem/1.0 DatasheetDownloader"}
|
||||
]
|
||||
) do
|
||||
{:ok, %Req.Response{status: 200} = response} ->
|
||||
{:ok, response}
|
||||
|
||||
{:ok, %Req.Response{status: status}} ->
|
||||
{:error, "HTTP error: #{status}"}
|
||||
|
||||
{:error, reason} ->
|
||||
Logger.error("Failed to download PDF from #{url}: #{inspect(reason)}")
|
||||
{:error, "Download failed: #{inspect(reason)}"}
|
||||
@@ -88,6 +98,7 @@ defmodule ComponentsElixir.DatasheetDownloader do
|
||||
case body do
|
||||
<<"%PDF", _rest::binary>> ->
|
||||
:ok
|
||||
|
||||
_ ->
|
||||
{:error, "Downloaded content is not a valid PDF file"}
|
||||
end
|
||||
@@ -105,10 +116,12 @@ defmodule ComponentsElixir.DatasheetDownloader do
|
||||
:ok ->
|
||||
Logger.info("Successfully saved datasheet: #{filename}")
|
||||
:ok
|
||||
|
||||
{:error, reason} ->
|
||||
Logger.error("Failed to save datasheet file: #{inspect(reason)}")
|
||||
{:error, "Failed to save file: #{inspect(reason)}"}
|
||||
end
|
||||
|
||||
{:error, reason} ->
|
||||
Logger.error("Failed to create datasheets directory: #{inspect(reason)}")
|
||||
{:error, "Failed to create directory: #{inspect(reason)}"}
|
||||
@@ -129,6 +142,7 @@ defmodule ComponentsElixir.DatasheetDownloader do
|
||||
:ok ->
|
||||
Logger.info("Deleted datasheet file: #{filename}")
|
||||
:ok
|
||||
|
||||
{:error, reason} ->
|
||||
Logger.warning("Failed to delete datasheet file #{filename}: #{inspect(reason)}")
|
||||
{:error, reason}
|
||||
|
||||
Reference in New Issue
Block a user