defmodule QuackDB.Transport do @moduledoc """ Transport entry point for Quack binary HTTP requests. The default implementation uses a Mint-backed stateful connection owned by the DBConnection process. """ @shutdown_timeout 1_000 def start_link(uri, options \\ []) do QuackDB.Transport.Mint.start_link(uri, options) end def post(%URI{} = uri, body, options) do with {:ok, server} <- start_link(uri, options) do try do QuackDB.Transport.Mint.post(server, uri, body, options) after GenServer.stop( server, :normal, Keyword.get(options, :shutdown_timeout, @shutdown_timeout) ) end end end def post(server, uri, body, options) do QuackDB.Transport.Mint.post(server, uri, body, options) end end