lib/actors/node/client.ex

defmodule Actors.Node.Client do
  use Tesla

  alias Actors.Config.Vapor, as: Config

  @actor_invoke_uri "/api/v1/actors/actions"

  adapter(Tesla.Adapter.Finch, name: SpawnHTTPClient)

  plug(
    Tesla.Middleware.BaseUrl,
    "http://#{Config.get(Actors, :user_function_host)}:#{Config.get(Actors, :user_function_port)}"
  )

  plug(Tesla.Middleware.Headers, [{"content-type", "application/octet-stream"}])
  plug(Tesla.Middleware.Logger)

  def invoke_host_actor(req) do
    post(@actor_invoke_uri, req)
  end
end