Thread overview
etc.c.curl...?
Jan 10, 2012
simendsjo
Jan 10, 2012
Jimmy Cao
Jan 10, 2012
Jonathan M Davis
January 10, 2012
Anyone using this module?
For a complete curl newbie, it's far from simple.. The names have changed, and are inconsistent. Is it CurlOpt.write_function or CurlOpt.writefunction? CurlOpt.connect_only or CurlOpt.connectonly?

I'm having a hard time finding any tutorials on libcurl. Or rather... I'm having a hard time finding example code on doing the most elementary task: Get a html page as a string! :|

The simplest c example shows how to do this in 4 lines, but not how to get the actual result! Where is the page I just downloaded?

    auto curl = curl_easy_init();
    assert(curl);
    scope(exit) curl_easy_cleanup(curl);

    curl_easy_setopt(curl, CurlOption.url, toStringz(url));
    assert(curl_easy_perform(curl) == 0);

And now..?
January 10, 2012
There's a wrapper for it that will be included in Phobos.  This wrapper is easier to work with for D.

It has  structs for HTTP, FTP and SMTP.

https://github.com/jcd/phobos/blob/curl-wrapper/etc/curl.d

2012/1/10 simendsjo <simendsjo@gmail.com>

> Anyone using this module?
> For a complete curl newbie, it's far from simple.. The names have changed,
> and are inconsistent. Is it CurlOpt.write_function or
> CurlOpt.writefunction? CurlOpt.connect_only or CurlOpt.connectonly?
>
> I'm having a hard time finding any tutorials on libcurl. Or rather... I'm having a hard time finding example code on doing the most elementary task: Get a html page as a string! :|
>
> The simplest c example shows how to do this in 4 lines, but not how to get the actual result! Where is the page I just downloaded?
>
>    auto curl = curl_easy_init();
>    assert(curl);
>    scope(exit) curl_easy_cleanup(curl);
>
>    curl_easy_setopt(curl, CurlOption.url, toStringz(url));
>    assert(curl_easy_perform(curl) == 0);
>
> And now..?
>


January 10, 2012
On Tuesday, January 10, 2012 16:01:01 Jimmy Cao wrote:
> There's a wrapper for it that will be included in Phobos. This wrapper is easier to work with for D.
> 
> It has structs for HTTP, FTP and SMTP.
> 
> https://github.com/jcd/phobos/blob/curl-wrapper/etc/curl.d

Yeah. That would be the better route. etc.c.curl is basically just bindings to the C library, so for the most part, any usability issues originate with libcurl, and it's libcurl documentation that you'll need in order to figure out to use it. But the idea is that you'd use a D wrapper with a much friendlier API. The one above has been voted into Phobos but hasn't been merged in yet (and may end up with some minor tweaks before it does, but what's in that repository should be essentially what's going to be merged in for either 2.058 or 2.059 - depending on how soon a pull request for it is generated and how long it takes for it to actually be merged in).

- Jonathan M Davis