curl

FreeBASIC

curl
 
Free and easy-to-use client-side URL transfer library supporting almost every protocol.

Website: http://curl.haxx.se/libcurl/
Platforms supported: Win32, Linux, DOS
Headers to include: curl.bi
Header version: 7.39.0
Examples: in examples/network/curl/

Example

'' Curl HTTP Get example

#include once "curl.bi"
#include once "crt/string.bi"

'' this callback will be called when any data is received
Private Function write_callback cdecl _
    ( _
        ByVal buffer As Byte Ptr, _
        ByVal size As Integer, _
        ByVal nitems As Integer, _
        ByVal outstream As Any Ptr _
    ) As Integer

    Static As ZString Ptr zstr = 0
    Static As Integer maxbytes = 0

    Dim As Integer bytes = size * nitems

    '' current zstring buffer too small?
    If( maxbytes < bytes ) Then
        zstr = Reallocate( zstr, bytes + 1 )
        maxbytes = bytes
    End If

    '' "buffer" is not null-terminated, so we must dup it and add the null-term
    memcpy( zstr, buffer, bytes )
    zstr[bytes] = 0

    '' just print it..
    Print *zstr

    Return bytes
End Function

    '' init
    Dim As CURL Ptr curl = curl_easy_init( )
    If( curl = 0 ) Then
        End 1
    End If

    '' set url and callback
    curl_easy_setopt( curl, CURLOPT_URL, "freebasic.net" )
    curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, @write_callback )

    '' execute..
    curl_easy_perform( curl )

    '' shutdown
    curl_easy_cleanup( curl )