cURLpp Project

Description

cURLpp is a C++ wrapper for libcURL. libcURL is described as:

a free and easy-to-use client-side URL transfer library, supporting FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and LDAP. libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, kerberos, HTTP form based upload, proxies, cookies, user+password authentication, file transfer resume, http proxy tunneling and more!

libcurl is highly portable, it builds and works identically on numerous platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX, IRIX, AIX, Tru64, Linux, Windows, Amiga, OS/2, BeOs, Mac OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS and more...

libcurl is free, thread-safe, IPv6 compatible, feature rich, well supported and fast.

First, I need to quote Daniel Stenberg, the maintener of libcURL:

You can use libcURL instantly from within your C++ programs. You don't _need_ cURLpp for that, cURLpp just adds an OO'ified layer that libcURL doesn't normally provide.

It means that you need to be sure that you need, or want, cURLpp features. If not, I suggest to use directly the libcURL library. So, what are thoses features that cURLpp offers?

Current News

cURLpp 0.7.0-pre2 is out!

(2006-06-29) I don't know what else to say: It's out! So, here it is. Changes includes (since 0.7.0-pre2):

cURLpp 0.7.0-pre1 is out!

(2006-06-25) The version 0.7.0 was supposed to be the share interface integration, but someone needed the multi interface. Because nobody expressed the need for the share interface, I assumed that it wouldn't be critical to put it further. So, here it is. Changes includes (since 0.6.1):

Subversion switching

(2006-01-13) From now on, cURLpp will rely on subversion for the source repository. After few month of using the GNU Arch system, I must admit I did a mistake. The problem is that too few people are able to use it, including me.

License

cURLpp is true Open Source/Free Software and meet all definitions as such. It means that you are free to modify and redistribute all contents of the cURLpp distributed archives. You may also freely use cURLpp in your commercial projects. cURLpp is licensed under a MIT license, see below.

Copyright (c) 2002-2006, Jean-Philippe Barrette-LaPierre

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Documentation

The programming guide for the 0.5.x and newer versions is here. There's a programming guide available for the 0.3.x and older versions here. Those guides are greatly inspired by the libcURL guide, that I strongly suggest to read. There's also some examples in the "examples/" source directory of cURLpp.

Branches

The devel branch (0.5.x and newer)

This version is a complete re-factorization of cURLpp against 0.3.x and older versions. This re-factorization was made for the following reasons: Those two points are in fact related. cURLpp was difficult to maintain because each libcURL's option change needed a change in cURLpp; the design didn't allow those changes to be automatically taken in charge. Because I don't monitor libcURL project carefully, those changes were only applied 2-3 months after the release. It wasn't flexible because it didn't allowed the user to change cURLpp's behavior without risking to break previously made applications.

But in fact, the real problem is that I'm a fat bastard who DOES read feature requests, but does not necessarily program them (You can send your complains to my university/job/girlfriend). So, this design is, in fact, "Ze" one that is compatible with my laziness.

Seriously, here's the advantages of this new design: For more details, see the guide. Note that, as you probably deduced, this version is NOT compatible against 0.3.x and older versions.

The stable branch

This version is designed over the project began by Eric Lavigne. It's no longer active.

Development Plans

So, what's next? I have some ideas for future releases. If you want to suggest some feature, don't be shy and send me an email (see at the bottom of the page).

Compilers

cURLpp is meant to be portable, but I can't maintain, all by myself, a project file for every platform that exists. Here's the environnements that I maintain, or will maintain personally: I know there's some people who wants a VC++ project file. I don't want to maintain those VC++ files. I don't want to because I don't have any licence of VC++ and I don't want to buy one. The only way I will make available some Win32 binaries(DLL), is with MinGW. However, if someone is willing to maintain thoses files, it will be my pleasure to make them available.

Downloads

This is the multi interface integration. The CHANGES file is here. All files are here.

Subversion

I no longer use CVS. After using GNU Arch for few months, I decided to use subversion. GNU Arch was too complex to use. In fact, it was so complex that I'm not event sure if there's a single person that was able to access cURLpp's GNU Arch repository.

The subversion repository isn't available, but it will when my sysadmin will be kind enough to set it up (Hey david! Come on!).

Mailing-List

If you have some questions or bugs to submit, you call send an email to the mailing-list. You need to register to the mailing-list before sending any email. However, keep in mind that cURLpp is a C++ wrapper over libcURL, so if you have a libcURL feature's related question, send it to libcURL's mailing-list.