On November 16 2023, I will do a multi-hour tutorial video on how to use libcurl. How to master it. As a follow-up to my previous video class called mastering the curl command line (at 13,000+ views right now).

This event will run as a live-stream webinar combination. You can opt to join via zoom or twitch. Zoom users can ask questions using voice, twitch viewers can do the same using the chat. For attending via Zoom you need to register, for twitch you can just show up.

It starts at 18:00 CET (09:00 PST, 17:00 UTC)

This session is part one of the planned two-part series. The amount of content is simply too much for me to deliver in a single sitting with intact quality. The second part will happen the following Monday, on November 20. Same time.

Both sessions will be recorded and will be made available for browsing after the fact.

At the time of me putting this blog post up the presentation and therefore agenda is not complete. I have also not yet figured out exactly how to do the split between the two episodes. Below you will find the planned topics that will be covered over the two episodes. Details will of course change in the final presentation.

The idea is that very little about developing with libcurl should be left out. This is the most thorough, most advanced, most in-depth libcurl video you ever saw. And it will be shock-full with source code examples. All examples that are shown in the video, are also provided stand-alone for easy browsing, copy and paste and later reading in a dedicated mastering libcurl GitHub repository.

The project

  • Reminders about the curl project

    getting it

    • installing
    • building
    • debugging
    • free support
    • paid support

    API and ABI

    • compatibility
    • versions
    • the API is for C
    • header files
    • compiling libcurl programs
    • documentation

    Architecture

    • C89
    • backends
    • everything is non-blocking

    API fundamentals

    • content ignorant / URLs / callbacks
    • basic by default
    • global init
    • easy handles
    • easy options
    • curl_easy_setopt
    • curl_easy_perform
    • curl_easy_cleanup
    • write callback
    • multi handle
    • multi perform
    • curl_multi_info_read
    • curl_multi_cleanup
    • a multi example
    • caches
    • curl_multi_socket_action
    • curl_easy_getinfo

    Puppeteering

    • verbose
      debug function
      tracing
    • curl_version / curl_version_info
    • persistent connections
    • multiplexing
    • Downloads
    • Storing downloads
    • Compression
    • Multiple downloads
    • Maximum file size
    • Resuming and ranges
    • Uploads
    • Multiple uploads
    • Transfer controls
    • Stop slow transfers
    • Rate limiting
    • Connections
    • Name resolve tricks
    • Connection timeout
    • Network interface
    • Local port number
    • Keep alive
    • Timeouts
    • Authentication
    • .netrc
    • return codes
    • –libcurl
    • post transfer meta-data
    • caches
    • some words on threads
    • error handling with libcurl

    Share API

    • sharing data between easy handles

    TLS

    • enable TLS
    • ciphers
    • verifying server certificates
      custom checks
    • client certificates
    • on TLS backends
    • SSLKEYLOGFILE

    Proxies

    • Proxy type
    • HTTP proxy
    • SOCKS proxy (tor)
    • Authentication
    • HTTPS proxy
    • Proxy environment variables
    • Proxy headers

    HTTP

    • Ranges
    • HTTP versions
    • Conditionals
    • HTTP POST
      data with callback
    • Multipart formpost
    • Redirects
    • Modify the HTTP request
    • HTTP PUT
    • Cookies
    • Alternative Services
    • HSTS
    • HTTP/2
    • HTTP/3

    HTTP header API

    • get specific header field after transfer
    • iterate over many headers

    URL API

    • Parse a URL
    • extract components
    • update components
    • URL encoding/decoding
    • IDN encoding/decoding
    • redirects

    WebSocket

    • just a quickie, I did a separate websocket video recently
      https://youtu.be/NLIhd0wYO24