View Source HttpProxy.Utils.File (ExHttpProxy v1.6.0)

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

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
@spec export(binary(), String.t(), String.t()) :: :ok | {:error, atom()}

Export json data into path/file.

@spec filename([String.t()]) :: String.t()

Generate json file name with :rand.uniform

example

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
@spec get_export_binary_path(integer() | binary()) :: String.t()

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

exmaple

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"
@spec get_export_path(integer() | binary()) :: String.t()
@spec get_mapping_path() :: String.t()
@spec get_response_path() :: String.t()
@spec json_files(String.t()) :: binary()
@spec json_files(String.t()) :: {:ok, binary()} | {:error, binary()}

Get paths in particular directory as list.

example

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"]
@spec read_json_file(String.t()) :: {:ok, binary()} | {:error, binary()}
@spec read_json_file!(String.t()) :: binary()

Get decoded map data by JSX.decode/2

example

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}}}