* Updated config path to specify metadata storage path * Removed metadata column from DB, replacing it with filepath columns * Updated app to store compressed metadata; automatically download thumbnails * Ensured metadata is deleted when other files are deleted * Updated docs * Added inets to application start so http calls work in prod
35 lines
1.1 KiB
Elixir
35 lines
1.1 KiB
Elixir
defmodule Pinchflat.HTTP.HTTPClient do
|
|
@moduledoc """
|
|
This module provides a simple interface for making HTTP requests.
|
|
|
|
Made to be easily swappable with other HTTP clients. If you need more complexity
|
|
or security, check out HTTPoison or Mint.
|
|
"""
|
|
|
|
alias Pinchflat.HTTP.HTTPBehaviour
|
|
|
|
@behaviour HTTPBehaviour
|
|
|
|
@doc """
|
|
Makes a GET request to the given URL and returns the response.
|
|
|
|
NOTE: I can't really test this with Mox and I can't think of a way to test this
|
|
that isn't ultimately redundant. I'm just going to leave it untested for now and
|
|
focus more on testing the consumers of this module.
|
|
|
|
Returns {:ok, String.t()} | {:error, String.t()}
|
|
"""
|
|
@impl HTTPBehaviour
|
|
def get(url, headers \\ [], opts \\ []) do
|
|
case :httpc.request(:get, {url, headers}, [], opts) do
|
|
{:ok, {{_version, 200, _reason_phrase}, _headers, body}} ->
|
|
{:ok, body}
|
|
|
|
{:ok, {{_version, status_code, reason_phrase}, _headers, _body}} ->
|
|
{:error, "HTTP request failed with status code #{status_code}: #{reason_phrase}"}
|
|
|
|
{:error, reason} ->
|
|
{:error, "HTTP request failed: #{reason}"}
|
|
end
|
|
end
|
|
end
|