style: format codebase

This commit is contained in:
Schuwi
2025-09-20 11:52:43 +02:00
parent aaf278f7f9
commit c6c218970c
20 changed files with 722 additions and 385 deletions

View File

@@ -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}