mastering libcurl

By admin
On

November 16 2023
DATE

, I will do a

multi-hour
TIME

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
CARDINAL

+ 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
TIME

(

09:00 PST
TIME

,

17:00 UTC
TIME

)

This session is part one of the planned

two
CARDINAL

-part series. The amount of content is simply too much for me to deliver in a single sitting with intact quality. The

second
ORDINAL

part will happen the following

Monday
DATE

, on

November 20
DATE

. 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
CARDINAL

episodes. Below you will find the planned topics that will be covered over the

two
CARDINAL

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.


Mastering
PERSON

libcurl

The project

Reminders about the curl project

getting it

installing

building

debugging

free support

paid support

API and ABI

compatibility

versions

the

API
ORG

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
PRODUCT

a multi example

caches

curl_multi_socket_action

curl_easy_getinfo

Puppeteering

verbose

debug function

tracing

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
NORP

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

custom checks client certificates

on

TLS
ORG

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

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
PERSON

a URL

extract components

update components

URL encoding/decoding

IDN encoding/decoding

redirects

WebSocket