Packages
exvcr
0.11.1
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/filter.ex
defmodule ExVCR.Filter do
@moduledoc """
Provide filters for request/responses.
"""
@doc """
Filter out senstive data from the response.
"""
def filter_sensitive_data(body) do
if String.valid?(body) do
replace(body, ExVCR.Setting.get(:filter_sensitive_data))
else
body
end
end
@doc """
Filter out senstive data from the request header.
"""
def filter_request_header(header, value) do
if Enum.member?(ExVCR.Setting.get(:filter_request_headers), header), do: "***", else: value
end
@doc """
Filter out senstive data from the request options.
"""
def filter_request_option(option, value) do
if Enum.member?(ExVCR.Setting.get(:filter_request_options), option), do: "***", else: value
end
defp replace(body, []), do: body
defp replace(body, [{pattern, placeholder}|tail]) do
replace(String.replace(body, ~r/#{pattern}/, placeholder), tail)
end
@doc """
Filter out query params from the url.
"""
def filter_url_params(url) do
if ExVCR.Setting.get(:filter_url_params) do
strip_query_params(url)
else
url
end |> filter_sensitive_data
end
@doc """
Remove query params from the specified url.
"""
def strip_query_params(url) do
url |> String.replace(~r/\?.+$/, "")
end
@doc """
Removes the headers listed in the response headers blacklist
from the headers
"""
def remove_blacklisted_headers([]), do: []
def remove_blacklisted_headers(headers) do
Enum.filter(headers, fn({key, _value}) ->
is_header_allowed?(key)
end)
end
defp is_header_allowed?(header_name) do
Enum.find(ExVCR.Setting.get(:response_headers_blacklist), fn(x) ->
String.downcase(to_string(header_name)) == x
end) == nil
end
end