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 CurlReq
to 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:short
or:long
, Default::short
flavor
orflavour
: With the:curl
flavor (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:req
the 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)