diff --git a/.gitignore b/.gitignore index 1cad362..1c7fa49 100644 --- a/.gitignore +++ b/.gitignore @@ -36,5 +36,3 @@ _dev* _stag* _prod* nohup.out - -.env diff --git a/README.md b/README.md index feb5e88..753d71e 100644 --- a/README.md +++ b/README.md @@ -60,12 +60,8 @@ docker compose up ``` ```sh -# Create .env file -cp .env.template .env -``` - -Run app +# Run +export TELEGRAM_BOT_TOKEN= -```sh -sh start.sh +iex -S mix run --no-halt ``` diff --git a/lib/migration/typesense.ex b/lib/migration/typesense.ex index cf55841..347064c 100644 --- a/lib/migration/typesense.ex +++ b/lib/migration/typesense.ex @@ -1,6 +1,8 @@ defmodule Migration.Typesense do alias SmallSdk.Typesense + import Tj.UrlHelper, only: [validate_url!: 1] + def create_collection!(schema) do req = build_request("/collections") res = Req.post!(req, json: schema) @@ -16,7 +18,8 @@ defmodule Migration.Typesense do end defp get_env() do - url = Application.fetch_env!(:save_it, :typesense_url) + url = Application.fetch_env!(:save_it, :typesense_url) |> validate_url!() + api_key = Application.fetch_env!(:save_it, :typesense_api_key) {url, api_key} diff --git a/lib/save_it/photo_service.ex b/lib/save_it/photo_service.ex index 6c6efc9..42ea6c0 100644 --- a/lib/save_it/photo_service.ex +++ b/lib/save_it/photo_service.ex @@ -2,6 +2,8 @@ defmodule SaveIt.PhotoService do require Logger alias SmallSdk.Typesense + import Tj.UrlHelper, only: [validate_url!: 1] + def create_photo!( %{ belongs_to_id: belongs_to_id @@ -115,7 +117,7 @@ defmodule SaveIt.PhotoService do end defp get_env() do - url = Application.fetch_env!(:save_it, :typesense_url) + url = Application.fetch_env!(:save_it, :typesense_url) |> validate_url!() api_key = Application.fetch_env!(:save_it, :typesense_api_key) {url, api_key} diff --git a/lib/small_sdk/typesense.ex b/lib/small_sdk/typesense.ex index 3efb5ff..3517361 100644 --- a/lib/small_sdk/typesense.ex +++ b/lib/small_sdk/typesense.ex @@ -1,6 +1,8 @@ defmodule SmallSdk.Typesense do require Logger + import Tj.UrlHelper, only: [validate_url!: 1] + def create_document!(collection_name, document) do req = build_request("/collections/#{collection_name}/documents") res = Req.post(req, json: document) @@ -70,7 +72,7 @@ defmodule SmallSdk.Typesense do end defp get_env() do - url = Application.fetch_env!(:save_it, :typesense_url) + url = Application.fetch_env!(:save_it, :typesense_url) |> validate_url!() api_key = Application.fetch_env!(:save_it, :typesense_api_key) {url, api_key} diff --git a/lib/tj/url_helper.ex b/lib/tj/url_helper.ex new file mode 100644 index 0000000..3fab418 --- /dev/null +++ b/lib/tj/url_helper.ex @@ -0,0 +1,11 @@ +defmodule Tj.UrlHelper do + def validate_url!(url) do + uri = URI.parse(url) + + if uri.scheme in ["http", "https"] and uri.host do + url + else + raise ArgumentError, "Invalid URL: #{url}" + end + end +end