ExHttpProxy v1.2.3 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}}}