[Haskell-beginners] File download using wreq.

Kostiantyn Rybnikov k-bx at k-bx.com
Mon Oct 5 08:18:43 UTC 2015


Hi Mike,

First, if you don't know how wreq acts when it gets invalid url – I suggest
just launching repl and checking that out. I'll show how to do that
using haskell
stack tool <https://github.com/commercialhaskell/stack>:

➜  ~  stack install wreq
...
➜  ~  stack ghci
Run from outside a project, using implicit global config
Using resolver: lts-3.5 from global config file:
/Users/kb/.stack/global/stack.yaml
Configuring GHCi with the following packages:
GHCi, version 7.10.2: http://www.haskell.org/ghc/  :? for help
λ import Network.Wreq
λ get "nonvalid"
*** Exception: InvalidUrlException "nonvalid" "Invalid URL"

You see, it throws InvalidUrlException upon request, which you can catch
and render an error.

Now, to get content, as per tutorial, just do:
λ import Control.Lens
λ res <- get "http://i.imgur.com/f0IKpky.png"
λ res ^. responseBody
... (long binary response goes into your output) ...

That's it. Last thing I should mention – errors which can be thrown are all
just HttpException type. Go and see possible ones
<http://hackage.haskell.org/package/http-client-0.4.24/docs/Network-HTTP-Client.html#t:HttpException>,
some of which you might want to handle specifically, while others just in a
generic "something bad happened" error.

Hope this helps.



On Sun, Oct 4, 2015 at 6:18 PM, Mike Houghton <mike_k_houghton at yahoo.co.uk>
wrote:

> Hi,
>
> Please can someone explain how,using the wreq package, I can download and
> save a binary file?
> Say the file is at the end of
> http://x.y.z/files/myfile.jpg
>
> and it is a jpeg and no authentication is needed.
>
> I just want to
>
> 1. Check that the URL is syntactically correct - flag and error if not
> 2. If the URL is syntactically ok then download the file using GET.
> 3. Check that the response code is 200 and if so save the file
> 3a. if the response code is not 200 then delegate to an  error handling
> function or some simple idiomatic way of error handling.
>
>
> Thanks once again.
>
> Mike
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20151005/242fdad7/attachment.html>


More information about the Beginners mailing list