libcurl Wrapper in C++

  • Hallo,
    da ich regelmäßig Applikationen im HTTP-Bereich programmiere und ich C++ als Sprache favorisiere, suchte ich vor längerer Zeit eine Lösung. libcurl ist eine sehr starke Bibliothek die eigentlich alles liefert, was man möchte. Leider gibt es die Biblitohek nur für C. Der C++ Wrapper curlpp gefiel mir nicht, da er lange nicht mehr aktualisiert wurde, also beschloss ich, mir selbst einen zu schreiben. Ursprünglich war es nur eine easy Klasse, später wurde daraus immer mehr.

    Ein simples Beispiel

    Lizenz
    Der Wrapper benutzt die gleiche Lizenz, wie libcurl sie benutzt.

    Download
    Der Code liegt in einem öffentlichen Git-Repository bei Bitbucket.

    To-Do
    - Const correctness verbessern
    - Templatespezialisierungen für curl::form, curl::header und std::string bei den curl::X::set_opt<T>() Methoden
    - Dokumentation verfassen (momentan muss die libcurl Dokumentation herhalten)

    Ich hoffe auf konstruktive Kritik und Verbesserungsvorschläge.

    [CENTER][/CENTER]

  • Das ganze ist ja stark gewachsen seit dem ich es das letzte mal auf Github gesehen hab :O
    Schöne Arbeit!

    [CENTER][SIZE=3][FONT=arial]Try to find the [FONT=arial black][SIZE=4]source[/SIZE][/FONT] of your power and [FONT=arial black][SIZE=4]release[/SIZE][/FONT] it![/FONT][/SIZE][/CENTER]

  • Sehr nice.
    Das hättest du ruhig mal früher posten können, weil das curlpp von dem franzosen so scheisse war und ich keine Zeit für nen eigenen hatte bin ich auf c# umgestiegen.
    Wenn du fertig bist musst du es unbedingt an haxx.se schicken und bei NuGet hochladen

  • Zitat

    weil das curlpp von dem franzosen so scheisse war


    Was mich an curlpp gestört hat, war die Tatsache, dass das letzte Update 2009 gewesen ist. Zudem ist curlpp sehr abhängig von der Version, da es für die CURLOPTS etc. ein eigenes Enum hat, was ich persönlich als unnötigen Overhead empfinde.
    Es gibt übrigens seit kurzem einen neuen libcurl C++ Wrapper. Leider hat er auch viele Mängel. Zum Beispiel werden in dieser Headerdatei einige using Direktiven benutzt. Sofern man also diese Bibliothek benutzt, ist string das Gleiche wie std::string. Meines Erachtens nach garnicht schön, da ich meine std::string Variablen in kleineren Funktionen gern mal string nenne :)

    Zitat

    Wenn du fertig bist musst du es unbedingt an haxx.se schicken und bei NuGet hochladen


    Dafür muss aber noch einiges geschehen. Vorallem dokumentationstechnisch, sowas liegt mir garnicht. Aber ja, dazu zwinge ich mich auch noch irgendwie.
    Zudem muss ich erst einmal alle Interfaces verstehen und auch anwenden. Funktion wie curl_easy_recv() habe ich einfach so implementiert, heißt also, dass die Nutzung eher der C-Bibliothek entspricht und ich solche Funktionen bei meinen Projekten bisher nie benötigte.
    Dann muss ich mich noch mit Templatespezialisierungen beschäftigen, da der MSVC sich diesbezüglich.. quer stellt.
    Es fehlt einfach noch zuviel um das auf der offiziellen libcurl Seite zu stellen.
    Dazu müsste ich mich dann noch in CMake einlesen und meinen bei meinem Code nicht nur den sperrigen MSVC berücksichtigen, sondern auch clang und Xcode. GCC stellt kein Problem dar, da ich sowieso unter GCC programmiere.
    Zu guter Letzt empfinde ich meine jetzigen C++-Kenntnisse als nicht ausreichend für sowas.

    Zitat

    Das ganze ist ja stark gewachsen seit dem ich es das letzte mal auf Github gesehen hab :O


    Ja, da ich das eben bei diversen Projekten von mir benötige, kann ich nicht mehr ohne. Leider mag ich den C/C++ Mix garnicht und naja, so hat sich das eben entwickelt.

    Wenn ihr Kritik habt, immer her damit.

    [CENTER][/CENTER]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!