LUA > Curl > bindingek

Nézzük meg milyen curl bindingek vannak LUA-hoz.

http://curl.haxx.se/libcurl/lua/

1. luacurl adopts the easy interface
2. Lua-cURL is aiming for a full-fledged libcurl binding (easy/multi/share interface) to the functionality of Lua
3. freepops luacurl

Nézzük az elsőt és figyeljük meg, hogy az istennek nem lehet megoldani, hogy változóba írja a lehívott weboldalt, anélkül hogy ne nyissunk meg egy fájlt.

Forráskód: http://foofighter.pastebin.com/f1e6062bc

Nézzük meg a harmadikat, ami sokkal barátságosabbnak tűnik. És mennyivel egyszerűbb:

http://foofighter.pastebin.com/f448aa5df

Ha ezzel megvolnánk, akkor írjuk át úgy az előbbi kódot hogy "függvénygyárat" használunk a callback függvény előállításához.


function factory_wb(context)

       return function(buffer, len)
         table.insert(context, buffer)
         return len, nil
       end

end

És ezt a sort írjuk még át c:setopt(curl.OPT_WRITEFUNCTION,factory_wb(context))
end

Tehát az előzőnek a fájlbaírás áll jobban, míg az utóbbinak inkább a változóba kimentés.

Hogy nézne ki a tökéletes binding?

Mi lenne, ha a perform() függvény egy iterátorral térne vissza. És el lehetne dönteni, hogy a ciklusban egy fájlba írná ki vagy egy táblát töltene fel a kapott adatokkal.

Forrás: http://lua-users.org/lists/lua-l/2005-06/msg00263.html
Forrás: http://tassi.web.cs.unibo.it/lua/curl_lua_luadoc.html