CurlReq (CurlReq v0.100.1)
View SourceSummary
Functions
Transforms a curl command into a Req request.
Inspect a Req struct in curl syntax.
Same as from_curl/1 but as a sigil. The benefit here is, that the Req.Request struct will be created at compile time and you don't need to escape the string.
Remember to
Transforms a Req request into a curl command.
Types
@type flags() :: :short | :long
@type flavor() :: :curl | :req
@type inspect_opt() :: {:label, String.t()}
Functions
@spec from_curl(String.t()) :: Req.Request.t()
Transforms a curl command into a Req request.
The following flags are supported:
--header/-H--request/-X--data/-d--data_raw--data_ascii--cookie/-b--head/-I--form/-F--location/-L--user/-u--compressed--proxy/-x--proxy_user/-U--netrc/-n--netrc_file--insecure/-k--user_agent/-A--fail/-f--silent/-s--show_error/-S--output/-o--remote_name/-O--verbose/-v--http1.0/-0--http1.1--http2--http2_prior_knowledge
The curl command prefix is optional
Info
Only string inputs are supported. That means for example -d @data.txt will not load the file or -d @- will not read from stdin
Examples
iex> req = CurlReq.from_curl("curl https://www.example.com")
iex> req.method
:get
iex> req.url
URI.parse("https://www.example.com")
iex> req = CurlReq.from_curl("curl -I https://example.com")
iex> req.method
:head
iex> req.url
URI.parse("https://example.com")
iex> req = CurlReq.from_curl("curl -b cookie_key=cookie_val https://example.com")
iex> req.method
:get
iex> Req.Request.get_header(req, "cookie")
["cookie_key=cookie_val"]
@spec inspect(Req.Request.t(), [inspect_opt()]) :: Req.Request.t()
Inspect a Req struct in curl syntax.
Returns the unchanged req, just like IO.inspect/2.
Examples
Req.new(url: "https://example.com")
|> CurlReq.inspect()
|> Req.request!()
#=> curl --compressed -X GET https://example.com
Same as from_curl/1 but as a sigil. The benefit here is, that the Req.Request struct will be created at compile time and you don't need to escape the string.
Remember to
require CurlReqto use the custom sigil.
Examples
iex> req = ~CURL(curl "https://www.example.com")
iex> req.method
:get
iex> req.url
URI.parse("https://www.example.com")
iex> req = ~CURL(curl -I "https://example.com")
iex> req.method
:head
iex> req.url
URI.parse("https://example.com")
iex> req = ~CURL(curl -b "cookie_key=cookie_val" "https://example.com")
iex> req.method
:get
iex> Req.Request.get_header(req, "cookie")
["cookie_key=cookie_val"]
@spec to_curl(Req.Request.t(), to_curl_opts()) :: String.t()
Transforms a Req request into a curl command.
The following flags are supported:
--header/-H--request/-X--data/-d--data_raw--data_ascii--cookie/-b--head/-I--form/-F--location/-L--user/-u--compressed--proxy/-x--proxy_user/-U--netrc/-n--netrc_file--insecure/-k--user_agent/-A--fail/-f--silent/-s--show_error/-S--output/-o--remote_name/-O--verbose/-v--http1.0/-0--http1.1--http2--http2_prior_knowledge
Options:
run_steps: Run the Req.Steps before generating the curl command to have fine-tuned control over the Req.Request. Default:true.true: Run all stepsfalse: Run no stepsonly: [atom()]: A list of step names as atoms and only they will be executedexcept: [atom()]: A list of step names as atoms and these steps will be excluded from the executed steps
flags: Specify the style the argument flags are constructed. Can either be:shortor:long, Default::shortflavororflavour: With the:curlflavor (the default) it will try to use native curl representations for compression, auth and will use the native user agent. If flavor is set to:reqthe headers will not be modified and the curl command is constructed to stay as true as possible to the originalReq.Request
Examples
iex> Req.new(url: URI.parse("https://www.example.com"))
...> |> CurlReq.to_curl()
~S(curl --compressed -X GET https://www.example.com)
iex> Req.new(url: URI.parse("https://www.example.com"))
...> |> CurlReq.to_curl(flags: :long, flavor: :req)
~S(curl --header "accept-encoding: gzip" --user-agent "req/0.5.8" --request GET https://www.example.com)
iex> Req.new(url: "https://www.example.com")
...> |> CurlReq.to_curl(run_steps: [except: [:compressed]])
~S(curl -X GET https://www.example.com)