gm_curly is a multi threaded, object orientated, callback based CURL implementation.
It supports in its current form, HTTP, HTTPS and FTP(Get Only)
Functions
-- Takes 0:
--
-- Returns 1:
-- Curly Object
-- Callback none
Curly( )
-- Takes 1:
-- function( CurlyOBJ, errorCode, data )
-- Returns 0:
--
-- Callback none
Curly:SetCallback( function )
-- Takes 1:
-- bool - false means the data parameter in the callback will always be a string.
-- - true means the data parameter in the callback will be a BinRead object.
-- Returns 0:
--
-- Callback none
Curly:SetBinaryMode( bool )
-- Takes 1:
-- Url String
-- Returns 1:
-- Error Code - 0 means OK
-- Callback none
Curly:SetUrl( url )
-- Takes 0:
--
-- Returns 1:
-- Error Code - 0 means OK
-- Callback is called when completed.
Curly:Perform( )
-- Takes 1:
-- Cookie String - "name1=content1; name2=content2;" etc.
-- Returns 1:
-- Error Code - 0 means OK
-- Callback none
Curly:SetCookies( cookies )
-- Takes 2:
-- CURLOPT_*
-- integer value
-- Returns 1:
-- Error Code - 0 means OK
-- Callback none
Curly:SetOptNumber( CURLOPT_*, value )
-- Takes 1:
-- Username String
-- Returns 1:
-- Error Code - 0 means OK
-- Callback none
Curly:SetUsername( username )
-- Takes 1:
-- Password String
-- Returns 1:
-- Error Code - 0 means OK
-- Callback none
Curly:SetPassword( password )
-- Takes 1:
-- Data String - Can contain NULL Characters
-- Returns 1:
-- Error Code - 0 means OK
-- Callback none
Curly:SetPostFields( data )
--------------------------------------------------------------------
-- Takes 0:
--
-- Returns 1:
-- Returns data size.
-- Callback none
BinRead:GetSize( )
-- Takes 0:
--
-- Returns 1:
-- Returns the position of the next item to be read.
-- Callback none
BinRead:GetReadPosition( )
-- Takes 0:
--
-- Returns 1:
-- Returns the Read Position to 0
-- Callback none
BinRead:Rewind( )
-- Takes 0:
--
-- Returns 1:
-- Reads 1byte, but does not change the Read Position
-- Callback none
BinRead:PeekByte( )
-- Takes 0:
--
-- Returns 1:
-- Reads 1bytes and returns it as a int.
-- Callback none
BinRead:ReadByte( )
-- Takes 0:
--
-- Returns 1:
-- Reads 8bytes and returns it as a double.
-- Callback none
BinRead:ReadDouble( )
-- Takes 0:
--
-- Returns 1:
-- Reads 4bytes and returns it as a int.
-- Callback none
BinRead:ReadInt( )
-- Takes 0:
--
-- Returns 1:
-- Reads 4bytes and returns it as a float.
-- Callback none
BinRead:ReadFloat( )
-- Takes 0:
--
-- Returns 1:
-- Reads a NULL terminated string. Read Position will be offset by string.len + 1 (the extra NULL char)
-- Callback none
BinRead:ReadString( )
Basic HTTP connection example.
require("curly")
local curl = Curly()
curl:SetUrl("http://www.google.com/")
curl:SetOptNumber(CURLOPT_FOLLOWLOCATION, 1)
curl:SetCallback(function(curlObj, errorCode, data)
print(curlObj, "\n", errorCode,"\n")
Msg(data)
end)
curl:Perform()
Basic HTTPS connection example.
require("curly")
local curl = Curly()
curl:SetUrl("https://www.gmail.com/")
curl:SetOptNumber(CURLOPT_FOLLOWLOCATION, 1)
curl:SetOptNumber(CURLOPT_SSL_VERIFYPEER, 0)
curl:SetOptNumber(CURLOPT_SSL_VERIFYHOST, 1)
curl:SetCallback(function(curlObj, errorCode, data)
print(curlObj, "\n", errorCode,"\n")
Msg(data)
end)
curl:Perform()
Some notes.
Only one operation can happen at once on an Curly object.
Once you call Curly:Perform(), you must wait for the the Callback before performing another Curl Query.
All the functions are non-blocking.