MBS Xojo Developer Conference and Training
Join us from 3rd to 6th May 2017 in Berlin, Germany.

Platforms to show: All Mac Windows Linux Cross-Platform

Previous items

CURLNMBS.Perform as Integer
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 9.8, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Perform a file transfer
Notes:
This function is called after all the options are set, and will perform the transfer as described in the options.

You can do any amount of calls to Perform. If you intend to transfer more than one file, you are even encouraged to do so. libCURL will then attempt to re-use the same connection for the following transfers, thus making the operations faster, less CPU intense and using less network resources. Just note that you will have to use the option properties between the invokes to set options for the following Perform.

Typical error codes are 6 for a wrong domain name in the URL, 67 for wrong name/password combination, 60 for missing SSL settings, 1 for an unsupported protocol.

Possible values for the retun value:
const kError_FunctionMissing = -1
const kError_OK = 0
const kError_UNSUPPORTED_PROTOCOL, = 1
const kError_FAILED_INIT, = 2
const kError_URL_MALFORMAT, = 3
const kError_URL_MALFORMAT_USER, = 4(NOT USED)
const kError_COULDNT_RESOLVE_PROXY, = 5
const kError_COULDNT_RESOLVE_HOST, = 6
const kError_COULDNT_CONNECT, = 7
const kError_FTP_WEIRD_SERVER_REPLY, = 8
const kError_FTP_ACCESS_DENIED, = 9a service was denied by the FTP server due to lack of access when login fails this is not returned.
const kError_FTP_USER_PASSWORD_INCORRECT, = 10
const kError_FTP_WEIRD_PASS_REPLY, = 11
const kError_FTP_WEIRD_USER_REPLY, = 12
const kError_FTP_WEIRD_PASV_REPLY, = 13
const kError_FTP_WEIRD_227_FORMAT, = 14
const kError_FTP_CANT_GET_HOST, = 15
const kError_FTP_CANT_RECONNECT, = 16
const kError_FTP_COULDNT_SET_BINARY, = 17
const kError_PARTIAL_FILE, = 18
const kError_FTP_COULDNT_RETR_FILE, = 19
const kError_FTP_WRITE_ERROR, = 20
const kError_FTP_QUOTE_ERROR, = 21
const kError_HTTP_RETURNED_ERROR, = 22
const kError_WRITE_ERROR, = 23
const kError_MALFORMAT_USER, = 24NOT USED
const kError_FTP_COULDNT_STOR_FILE, = 25failed FTP upload
const kError_READ_ERROR, = 26could open/read from file
const kError_OUT_OF_MEMORY, = 27
const kError_OPERATION_TIMEOUTED, = 28the timeout time was reached
const kError_FTP_COULDNT_SET_ASCII, = 29TYPE A failed
const kError_FTP_PORT_FAILED, = 30FTP PORT operation failed
const kError_FTP_COULDNT_USE_REST, = 31the REST command failed
const kError_FTP_COULDNT_GET_SIZE, = 32the SIZE command failed
const kError_HTTP_RANGE_ERROR, = 33RANGE "command" didn't work
const kError_HTTP_POST_ERROR, = 34
const kError_SSL_CONNECT_ERROR, = 35wrong when connecting with SSL
const kError_BAD_DOWNLOAD_RESUME, = 36couldn't resume download
const kError_FILE_COULDNT_READ_FILE, = 37
const kError_LDAP_CANNOT_BIND, = 38
const kError_LDAP_SEARCH_FAILED, = 39
const kError_LIBRARY_NOT_FOUND, = 40
const kError_FUNCTION_NOT_FOUND, = 41
const kError_ABORTED_BY_CALLBACK, = 42
const kError_BAD_FUNCTION_ARGUMENT, = 43
const kError_BAD_CALLING_ORDER, = 44NOT USED
const kError_INTERFACE_FAILED, = 45CURLOPT_INTERFACE failed
const kError_BAD_PASSWORD_ENTERED, = 46NOT USED
const kError_TOO_MANY_REDIRECTS , = 47catch endless re-direct loops
const kError_UNKNOWN_TELNET_OPTION, = 48User specified an unknown option
const kError_TELNET_OPTION_SYNTAX , = 49Malformed telnet option
const kError_OBSOLETE, = 50NOT USED
const kError_SSL_PEER_CERTIFICATE, = 51peer's certificate wasn't ok
const kError_GOT_NOTHING, = 52when this is a specific error
const kError_SSL_ENGINE_NOTFOUND, = 53SSL crypto engine not found
const kError_SSL_ENGINE_SETFAILED, = 54can not set SSL crypto engine as default
const kError_SEND_ERROR, = 55failed sending network data
const kError_RECV_ERROR, = 56failure in receiving network data
const kError_SHARE_IN_USE, = 57share is in use
const kError_SSL_CERTPROBLEM, = 58problem with the local certificate
const kError_SSL_CIPHER, = 59couldn't use specified cipher
const kError_SSL_CACERT, = 60problem with the CA cert (path?)
const kError_BAD_CONTENT_ENCODING, = 61Unrecognized transfer encoding
const kError_LDAP_INVALID_URL, = 62Invalid LDAP URL
const kError_FILESIZE_EXCEEDED, = 63Maximum file size exceeded
const kError_FTP_SSL_FAILED, = 64Requested FTP SSL level failed
const kError_SEND_FAIL_REWIND, = 65Sending the data requires a rewind that failed
const kError_SSL_ENGINE_INITFAILED, = 66failed to initialise ENGINE
const kError_LOGIN_DENIED, = 67user, password or similar was not accepted and we failed to login

The error value -1 is used from the plugin to report that something is missing like OpenSSL dlls on Windows.
CURLNMBS.PerformMT as Integer
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 11.2, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Perform a file transfer with preemptive multithreading.
Notes:
Same as Perform, but with additional multithreading.
Must be called inside a Xojo (Real Studio) thread so time yields to main thread and you can keep the GUI running.

As the actual transfer runs on a preemptive thread, the events Debug, Write, Header and Progress are called asynchrounously and run a few milliseconds later. You can return true in Progress event to stop transfer, but you will get more events before the transfer is stopped.

You can call CreateMTDebugOutputFile, CreateMTHeaderOutputFile and CreateMTOutputFile before PerformMT to have output data be written into files. Call OpenMTInputFile to let the plugin read input data (form post or upload) from an input file.

Do not call other CURL functions on this CURLNMBS instance while PerformMT is running!

Typical error codes are 6 for a wrong domain name in the URL, 67 for wrong name/password combination, 60 for missing SSL settings, 1 for an unsupported protocol.

To avoid trouble with app hanging on quit of application, be sure to set cancel property to true in window close event to cancel any pending transfer.
CURLNMBS.Reset
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 9.8, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Re-initializes all options previously set on a specified CURL handle to the default values.
Notes: It does not change the following information kept in the handle: live connections, the Session ID cache, the DNS cache, the cookies and shares.
CURLNMBS.SendData(data as Memoryblock) as Integer
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 15.2, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Sends data over the connected socket.
Notes: Use after successful calling Perform with OptionConnectOnly option.

See also:

CURLNMBS.SendData(data as string) as Integer
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 15.2, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Sends data over the connected socket.
Notes: Use after successful calling Perform with OptionConnectOnly option.

See also:

CURLNMBS.SetInputData(data as MemoryBlock)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 14.0, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Sets the input data.
Notes:
If you set input data, you do not need to use Read, RestartRead or Seek events.
The plugin will use the provided data for the upload.
Setting input data size, will also set the input file size (OptionInFileSizeLarge and OptionInFileSize).

See also:

CURLNMBS.SetInputData(data as string)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 14.0, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Sets the input data.
Notes:
If you set input data, you do not need to use Read, RestartRead or Seek events.
The plugin will use the provided data for the upload.
Setting input data size, will also set the input file size (OptionInFileSizeLarge and OptionInFileSize).

See also:

CURLNMBS.SetOptionEmptyPassword
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 15.3, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Sets an empty password.
Notes:
Normally you have no password unless you set it.
But if you set a password with empty string, the plugin sets CURL to use no password.
This method is to use an empty password.
CURLNMBS.SetOptionHTTP200Aliases(data() as string)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 9.8, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: A linked list of aliases to be treated as valid HTTP 200 responses.
Notes:
Some servers respond with a custom header response line. For example, IceCast servers respond with "ICY 200 OK". By including this string in your list of aliases, the response will be treated as a valid HTTP header line such as "HTTP/1.0 200 OK".

The alias itself is not parsed for any version strings. So if your alias is "MYHTTP/9.9", LibCURL will not treat the server as responding with HTTP version 9.9. Instead LibCURL will use the value set by option HTTPVersion.

The Lasterror property is set. 0 for success.
CURLNMBS.SetOptionHTTPHeader(data() as string)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 9.8, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: A linked list of HTTP headers to pass to the server in your HTTP request.
Notes:
If you add a header that is otherwise generated and used by libCURL internally, your added one will be used instead. If you add a header with no contents as in 'Accept:' (no data on the right side of the colon), the internally used header will get disabled. Thus, using this option you can add new headers, replace internal headers and remove internal headers. To add a header with no contents, make the contents be two quotes: "". The headers included in the linked list must not be CRLF-terminated, because CURL adds CRLF after each header item. Failure to comply with this will result in strange bugs because the server will most likely ignore part of the headers you specified.

The first line in a request (containing the method, usually a GET or POST) is not a header and cannot be replaced using this option. Only the lines following the request-line are headers. Adding this method line in this list of headers will only cause your request to send an invalid header.

Pass an empty array to this to reset back to no custom headers.

The Lasterror property is set. 0 for success.
CURLNMBS.SetOptionMailRecipients(data() as string)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 11.0, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Sets the array of email recipient addresses.
CURLNMBS.SetOptionPostQuote(data() as string)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 9.8, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Pass an array to a list of FTP commands to pass to the server after your ftp transfer request.
Example:
dim d as CURLNMBS // your CURL object

dim ws() As String
ws.Append "RNFR Temp.txt"
ws.append "RNTO MyFile.txt"
d.SetOptionPostQuote(ws)
Notes:
Disable this operation again by using an empty array for this option.

The Lasterror property is set. 0 for success.
If you want to do a ftp operation instead of download/upload/directory listing, please use SetOptionQuote.
CURLNMBS.SetOptionPreQuote(data() as string)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 9.8, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Pass an array to a list of FTP commands to pass to the server after the transfer type is set.
Notes:
Disable this operation again by using an empty array for this option. Before version 7.15.6, if you also set Nobody to true, this option didn't work.

The Lasterror property is set. 0 for success.
CURLNMBS.SetOptionQuote(data() as string)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 9.8, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Pass an array or a list of FTP commands to pass to the server prior to your ftp request.
Example:
dim curl as new CURLNMBS
curl.SetOptionQuote array("DELE filename.txt")
Notes:
This will be done before any other FTP commands are issued (even before the CWD command).

Disable this operation again by using an empty array for this option.

The Lasterror property is set. 0 for success.
CURLNMBS.SetOptionTelnetOptions(data() as string)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 9.8, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Provide an array of variables to pass to the telnet negotiations.
Notes:
The variables should be in the format <option=value>. libCURL supports the options 'TTYPE', 'XDISPLOC' and 'NEW_ENV'. See the TELNET standard for details.

The Lasterror property is set. 0 for success.
CURLNMBS.SetPathCAInfo(path as folderitem)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 10.0, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: A path holding one or more certificates to verify the peer with.
Example:
dim cacert as FolderItem // your cacert.pem file
dim CURL as new CURLMBS
CURL.OptionSSLVerifyHost = 2 // verify server
CURL.OptionSSLVerifyPeer = 1 // proofs certificate is authentic
CURL.OptionCAInfo = cacert.UnixpathMBS
Notes:
This makes sense only when used in combination with the OptionSSLVerifyPeer option. If OptionSSLVerifyPeer is false, OptionCAINFO need not even indicate an accessible file.

Note that option is by default set to the system path where libCURL's cacert bundle is assumed to be stored, as established at build time.

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
CURLNMBS.SetPathCAPath(path as folderitem)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 10.0, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: A path to the directory holding multiple CA certificates to verify the peer with.
Notes:
The certificate directory must be prepared using the openssl c_rehash utility. This makes sense only when used in combination with the CURLOPT_SSL_VERIFYPEER option. If OptionSSLVerifyPeer is zero, OptionCAPath need not even indicate an accessible path. The OptionCAPath function apparently does not work in Windows due to some limitation in openssl. This option is OpenSSL-specific and does nothing if libCURL is built to use GnuTLS.

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
CURLNMBS.SetPathCRLFile(path as folderitem)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 10.0, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Sets the path with the concatenation of CRL (in PEM format) to use in the certificate validation that occurs during the SSL exchange.
Notes:
When CURL is built to use NSS or GnuTLS, there is no way to influence the use of CRL passed to help in the verification process. When libCURL is built with OpenSSL support, X509_V_FLAG_CRL_CHECK and X509_V_FLAG_CRL_CHECK_ALL are both set, requiring CRL check against all the elements of the certificate chain if a CRL file is passed.

This option makes sense only when used in combination with the OptionSSLVerifyPeer option.

A specific error code (CURLE_SSL_CRL_BADFILE) is defined with the option. It is returned when the SSL exchange fails because the CRL file cannot be loaded. Note that a failure in certificate verification due to a revocation information found in the CRL does not trigger this specific error. (Added in 7.19.0)
CURLNMBS.SetPathIssuerCert(path as folderitem)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 10.0, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Sets the path to a CA certificate in PEM format.
Notes:
If the option is set, an additional check against the peer certificate is performed to verify the issuer is indeed the one associated with the certificate provided by the option. This additional check is useful in multi-level PKI where one needs to enforce that the peer certificate is from a specific branch of the tree.

This option makes sense only when used in combination with the OptionSSLVerifyPeer option. Otherwise, the result of the check is not considered as failure.

A specific error code (CURLE_SSL_ISSUER_ERROR) is defined with the option, which is returned if the setup of the SSL/TLS session has failed due to a mismatch with the issuer of peer certificate (OptionSSLVerifyPeer has to be set too for the check to fail). (Added in 7.19.0)
CURLNMBS.SetPathNetRCFile(path as folderitem)
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 10.0, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Sets the path to the file you want libCURL to use as .netrc file.
Notes:
If this option is omitted, and OptionNETRC is set, libCURL will attempt to find the a .netrc file in the current user's home directory. (Added in 7.10.9)

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
CURLNMBS.SetupEmail(email as Variant) as boolean
method, CURL, MBS CURL Plugin (CURLN), class CURLNMBS,
Plugin version: 14.3, Mac: Yes, Win: Yes, Linux: Yes, Console & Web: Yes, Feedback.

Function: Setups existing CURL session for an email transfer.
Example:
dim e as new CURLEmailMBS

e.SetFrom "test@test.test", "Christian Müller"
e.Subject = "Hello World ☺️"
e.SMTPPassword = "xxx"
e.SMTPUsername = "xxx"
e.SetServer "smtp.test.test", true
e.AddTo "test@test.test", "Test Müller"
e.PlainText = "Hello World," + EndOfLine + "Smilies: ☺️ 😘 😄"

dim c as new CURLNMBS

if c.SetupEmail(e) then

dim er as Integer = c.Perform
if er = 0 then
MsgBox "Email sent"
end if
end if
Notes:
You can set your own settings like proxy after this function call.
If you like you can reuse the email and CURL objects after you sent an email, change values and send another email.
Returns true on success or false on failure.

Previous items

The items on this page are in the following plugins: MBS CURL Plugin.




Links
Kerzendesign in Nickenich