Packages
exvcr
0.14.4
0.17.1
0.17.0
0.16.0
0.15.2
0.15.1
0.15.0
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.2
0.11.1
0.11.0
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.8.12
0.8.11
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.7
0.1.6
0.1.5
HTTP request/response recording library for elixir, inspired by VCR.
Current section
Files
Jump to
Current section
Files
lib/exvcr/actor.ex
defmodule ExVCR.Actor do
@moduledoc """
Provides data store for values used by ExVCR.Recorder.
"""
defmodule Responses do
@moduledoc """
Stores request/response for the recorder.
"""
use ExActor.GenServer
defstart start(arg), do: initial_state(arg)
defcast append(x), state: state, do: new_state([x|state])
defcast set(x), do: new_state(x)
defcall get, state: state, do: reply(state)
defcall update(finder, updater), state: state do
state = Enum.map(state, fn(record) ->
if finder.(record) do
updater.(record)
else
record
end
end)
set_and_reply(state, state)
end
defcall pop(), state: state do
case state do
[] -> reply(state)
[head | tail] -> set_and_reply(tail, head)
end
end
end
defmodule Options do
@moduledoc """
Stores option parameters for the recorder.
"""
use ExActor.GenServer
defstart start(arg), do: initial_state(arg)
defcast set(x), do: new_state(x)
defcall get, state: state, do: reply(state)
end
defmodule CurrentRecorder do
@moduledoc """
Stores current recorder to be able to fetch it inside of the mocked version of the adapter.
"""
use ExActor.GenServer, export: __MODULE__
defstart(start_link(_), do: default_state() |> initial_state())
defcast(set(x), do: new_state(x))
defcall(get, state: state, do: reply(state))
def default_state(), do: nil
end
end