ExHttpProxy v1.5.0 HttpProxy.Utils.File View Source

This module provides several paths associated with HttpProxy and file operation.

Link to this section Summary

Functions

Structure associated with file paths. Top path is set in config/config.exs. mapping_files and response_files are created in the top path.

Export json data into path/file.

Generate json file name with :rand.uniform

Get paths defined on config/"#{Mix.env}.exs"

Get paths in particular directory as list.

Get decoded map data by JSX.decode/2

Link to this section Functions

Link to this function

%HttpProxy.Utils.File{}

View Source (struct)

Structure associated with file paths. Top path is set in config/config.exs. mapping_files and response_files are created in the top path.

Example

iex> HttpProxy.Utils.File.__struct__
%HttpProxy.Utils.File{mapping_files: "mappings", response_files: "__files"}
Link to this function

export(json, path, file)

View Source
export(binary(), String.t(), String.t()) :: :ok | {:error, atom()}

Export json data into path/file.

Link to this function

filename(path_info)

View Source
filename([String.t()]) :: String.t()

Generate json file name with :rand.uniform

Example

iex> HttpProxy.Utils.File.filename(["path", "info", "path"]) |> String.match?(~r(\Apath-info-path.*\.json\z))
true

iex> HttpProxy.Utils.File.filename("path-info-path") |> String.match?(~r(\Apath-info-path.*\.json\z))
true
Link to this function

get_export_binary_path()

View Source
Link to this function

get_export_binary_path(port)

View Source
get_export_binary_path(integer() | binary()) :: String.t()

Get paths defined on config/"#{Mix.env}.exs"

Exmaple

iex> HttpProxy.Utils.File.get_export_path
"test/example/mappings"

iex> HttpProxy.Utils.File.get_export_path(8080)
"test/example/8080/mappings"

iex> HttpProxy.Utils.File.get_export_path("8080")
"test/example/8080/mappings"

iex> HttpProxy.Utils.File.get_export_binary_path
"test/example/__files"

iex> HttpProxy.Utils.File.get_export_binary_path(8080)
"test/example/8080/__files"

iex> HttpProxy.Utils.File.get_export_binary_path("8080")
"test/example/8080/__files"

iex> HttpProxy.Utils.File.get_response_path
"test/data/__files"

iex> HttpProxy.Utils.File.get_mapping_path
"test/data/mappings"
Link to this function

get_export_path(port)

View Source
get_export_path(integer() | binary()) :: String.t()
Link to this function

get_mapping_path()

View Source
get_mapping_path() :: String.t()
Link to this function

get_response_path()

View Source
get_response_path() :: String.t()
Link to this function

json_files(dir \\ ".")

View Source
json_files(String.t()) :: binary()
json_files(String.t()) :: {:ok, binary()} | {:error, binary()}

Get paths in particular directory as list.

Example

iex> HttpProxy.Utils.File.json_files!("test/data/mappings") |> Enum.sort
["test/data/mappings/sample.json", "test/data/mappings/sample2.json", "test/data/mappings/sample3.json"]

iex> {:ok, paths} = HttpProxy.Utils.File.json_files("test/data/mappings")
iex> paths |> Enum.sort
["test/data/mappings/sample.json", "test/data/mappings/sample2.json", "test/data/mappings/sample3.json"]
Link to this function

read_json_file(path)

View Source
read_json_file(String.t()) :: {:ok, binary()} | {:error, binary()}
Link to this function

read_json_file!(path)

View Source
read_json_file!(String.t()) :: binary()

Get decoded map data by JSX.decode/2

Example

iex> HttpProxy.Utils.File.read_json_file!("test/data/mappings/sample.json")
%{"request" => %{"method" => "GET", "path" => "/request/path", "port" => 8080},
       "response" => %{"body" => "<html>hello world</html>", "cookies" => %{},
         "headers" => %{"Content-Type" => "text/html; charset=UTF-8", "Server" => "GFE/2.0"}, "status_code" => 200}}

iex> HttpProxy.Utils.File.read_json_file("test/data/mappings/sample.json")
{:ok,
      %{"request" => %{"method" => "GET", "path" => "/request/path", "port" => 8080},
        "response" => %{"body" => "<html>hello world</html>", "cookies" => %{},
          "headers" => %{"Content-Type" => "text/html; charset=UTF-8", "Server" => "GFE/2.0"}, "status_code" => 200}}}