docs/api.mdwn
author Myhailo Danylenko <isbear@ukrpost.net>
Wed, 16 Mar 2016 01:53:56 +0200
changeset 66 a40beb82130c
parent 62 d92358eafead
permissions -rw-r--r--
node: Use new loudmouth feature - public attribute list (v0.9.7)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     2
[[!meta title="Lua-loudmouth API reference"]]
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     3
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
[[!toc]]
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     6
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     7
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     8
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     9
<a name="Some.common.principles"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
## Some common principles
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
Most methods can be used in two way:
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    12
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    13
* to get value they are invoked without their last argument. Returned value is either a value or pair of nil and error message.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    14
* to set value they are invoked with last arg (value) specified. Returned value in most cases is an object, on which operation is performed (to allow chain-initialization).
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    15
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    16
Every object have pointer method to return pointer (lightuserdata) to underlying C loudmouth structure.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    17
Every module have a bless method to convert given pointer (lightuserdata) to corresponding lua object.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    18
Every unique C loudmouth object have only one corresponding lua object. Thus, result of "[lm.message.bless](#lm.message.bless) ( message1:pointer () )" will be exactly message1 object (not its copy).
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
Where message handler object is expected, message handler function can be specified. However, you can unregister handler only if you have message handler object.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    20
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
<a name="lm.connection"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
## lm.connection
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
Central module, representing connection to the server.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    28
You should create a new connection object, then open it (establish
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    29
connection), then authenticate to the server.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    30
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    31
<a name="connection.state"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    32
### connection state
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    33
Stirng, representing current [connection state](#connection.state).  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    34
**Values:**  closed, opening, open, authenticating, authenticated  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    35
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    36
<a name="handler.priority"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
### handler priority
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    38
String, according to which handler will be placed into one
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
of three handler groups.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    40
**Values:**  last, normal, first  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    42
<a name="disconnect.reason"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
### disconnect reason
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
String, indicating the reason of disconnection occured.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
**Values:**  ok, ping time out, hup, error, resource conflict, invalid xml, unknown, ping_time_out, resource_conflict, invalid_xml  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    46
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    47
<a name="lm.connection.new"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    48
### lm.connection.new
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
Creates a new connection (closed).  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
**Arguments:** string (server name), lightuserdata (C glib main context object, optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
**Return values:** [lm connection](#lm.connection) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    53
<a name="lm.connection.bless"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    54
### lm.connection.bless
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    55
Blesses given pointer to [lm connection](#lm.connection) object.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    56
Note: it adds a reference to connection.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    57
**Arguments:** lightuserdata (C [lm connection](#lm.connection) object)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    58
**Return values:** [lm connection](#lm.connection) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    60
<a name="connection.callback.function"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    61
### connection callback function
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
User function, that will be called on connection establishment operation end,
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    63
eg. successful/unsuccessful opening or authentication.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    64
**Arguments:** [lm connection](#lm.connection) object, boolean (success)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    65
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    66
<a name="connection:open"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    67
### connection:open
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    68
Opens connection to the server and then calls callback function.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    69
**Arguments:** [connection callback function](#connection.callback.function)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    70
**Return values:** [lm connection](#lm.connection) object or nil, string (error message)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    71
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    72
<a name="connection:authenticate"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    73
### connection:authenticate
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    74
Tries to authenticate against opened connection, then calls callback function.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    75
**Arguments:** string (username), string (password), string (resource), [connection callback function](#connection.callback.function)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    76
**Return values:** [lm connection](#lm.connection) object or nil, string (error message)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    77
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    78
<a name="connection:port"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    79
### connection:port
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    80
Gets or sets server port to connect.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    81
**Arguments:** integer (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    82
**Return values:** integer (when called with no args) or [lm connection](#lm.connection) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    83
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    84
<a name="connection:server"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    85
### connection:server
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    86
Gets or sets server to connect to.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    87
**Arguments:** string (optional, server name)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    88
**Return values:** string (when called with no args) or [lm connection](#lm.connection) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    89
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    90
<a name="connection:jid"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    91
### connection:jid
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    92
Gets or sets jid for connection.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    93
**Arguments:** string (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    94
**Return values:** string (when called with no args) or [lm connection](#lm.connection) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    95
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    96
<a name="connection:keep.alive.rate"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    97
### connection:keep_alive_rate
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    98
Gets or sets keep alive packets rate for connection.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    99
Note, that on some platforms there is no get function even in
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   100
loudmouth versions, that should have it according to documentation.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   101
integer (optional, seconds)
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   102
integer (when called with no args) or [lm connection](#lm.connection) object or nil, string (error message, when get function is not available in loudmouth)
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   103
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   104
<a name="connection:proxy"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   105
### connection:proxy
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   106
Gets or sets proxy server for connection.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   107
**Arguments:** [lm proxy](#lm.proxy) object (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   108
**Return values:** [lm proxy](#lm.proxy) object or nil (when called with no args) or [lm connection](#lm.connection) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   109
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   110
<a name="connection:ssl"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   111
### connection:ssl
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   112
Gets or sets ssl object for connection.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   113
**Arguments:** [lm ssl](#lm.ssl) object (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   114
**Return values:** [lm ssl](#lm.ssl) object or nil (when called with no args) or [lm connection](#lm.connection) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   115
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   116
<a name="connection:close"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   117
### connection:close
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   118
Close connection.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   119
**Return values:** [lm connection](#lm.connection) object or nil, string (error message)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   120
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   121
<a name="connection:status"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   122
### connection:status
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   123
Returns string, describing [connection state](#connection.state).  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   124
**Return values:** [connection state](#connection.state)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   125
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   126
<a name="connection:send"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   127
### connection:send
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   128
Sends message. If specified, handler function will be called upon receiving of response to this message.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   129
Handler function can be either a message handler object or just a message handler function.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   130
Message can be raw xml string. However, you cannot use it with handler function.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   131
In short:
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   132
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   133
* connection, errmsg = [connection:send](#connection:send) ( "raw xml" )
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   134
* connection, errmsg = [connection:send](#connection:send) ( message )
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   135
* connection, errmsg = [connection:send](#connection:send) ( message, function ( connection, message ) end )
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   136
* connection, errmsg = [connection:send](#connection:send) ( message, handler )
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   137
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   138
If connection is nil, errmsg contains error message.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   139
**Arguments:** [lm message](#lm.message) object/string, [message handler callback function](#message.handler.callback.function)/[lm message handler](#lm.message.handler) object (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   140
**Return values:** [lm connection](#lm.connection) object or nil, string (error message)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   141
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   142
<a name="connection:handler"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   143
### connection:handler
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   144
Registers or unregisters handler function for a given type of messages.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   145
To unregister handler, omit the priority argument.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   146
To unregister reply handler, omit [message type](#message.type) argument too.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   147
Handler function can be specified as plain function or message handler object.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   148
**Arguments:** [message handler callback function](#message.handler.callback.function) or [lm message handler](#lm.message.handler) object, [message type](#message.type) (optional), [handler priority](#handler.priority) (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   149
**Return values:** [lm connection](#lm.connection) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   150
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   151
<a name="disconnect.callback.function"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   152
### disconnect callback function
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   153
Function, that will be called when disconnection occurs.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   154
**Arguments:** [lm connection](#lm.connection) object, [disconnect reason](#disconnect.reason)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   155
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   156
<a name="connection:ondisconnect"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   157
### connection:ondisconnect
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   158
Sets callback, that will be called on connection disconnect.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   159
**Arguments:** [disconnect callback function](#disconnect.callback.function)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   160
**Return values:** [lm connection](#lm.connection) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   161
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   162
<a name="connection:open.wait"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   163
### connection:open_wait
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   164
Synchronous open call, that will block until connection will be opened.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   165
**Return values:** [lm connection](#lm.connection) object or nil, string (error message)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   166
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   167
<a name="connection:authenticate.wait"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   168
### connection:authenticate_wait
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   169
Synchronous authentication call, that will wait until the end of authentication.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   170
**Arguments:** string (username), string (password), string (resource)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   171
**Return values:** [lm connection](#lm.connection) object or nil, string (error message)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   172
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   173
<a name="connection:send.wait"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   174
### connection:send_wait
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   175
Synchronous call, that will send message and wait for reply to it.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   176
**Arguments:** [lm message](#lm.message) object    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   177
**Return values:** [lm message](#lm.message) object or nil, string (error message)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   178
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   179
<a name="connection:pointer"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   180
### connection:pointer
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   181
Returns pointer to underlying C loudmouth structure.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   182
**Return values:** lightuserdata  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   183
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   184
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   185
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   186
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   187
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   188
<a name="lm.message"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   189
## lm.message
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   190
Module, representing individual message.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   191
Message have a type and optionally a sub type.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   192
Message have a set common methods with message node,
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   193
these are name, next, prev, parent, value, child, children,
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   194
find_child, attribute, raw, xml and path. They just save
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   195
you typing :node() each time and save memory for
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   196
one node object.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   197
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   198
<a name="message.type"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   199
### message type
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   200
Message type (root tag type).  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   201
**Values:**  message, presence, iq, stream, stream error, stream features, auth, challenge, response, success, failure, proceed, starttls, unknown, stream:stream, stream:error, stream:features, stream_error, stream_features  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   202
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   203
<a name="message.sub.type"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   204
### message sub type
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   205
Message subtype, not all combinations of type and subtype are possible.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   206
**Values:**  not set, available, normal, chat, groupchat, headline, unavailable, probe, subscribe, unsubscribe, subscribed, unsubscribed, get, set, result, error, not_set  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   207
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   208
<a name="lm.message.new"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   209
### lm.message.new
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   210
Creates new message object.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   211
Note: you can specify nil as to argument to send message to server.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   212
**Arguments:** string (to), [message type](#message.type), [message sub type](#message.sub.type) (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   213
**Return values:** [lm message](#lm.message) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   214
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   215
<a name="message.table"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   216
### message table
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   217
Table describes xml structure of the message, the only exception is mtype key of root table.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   218
mtype is a string of form "<[message type](#message.type)>-<[message sub type](#message.sub.type)>", eg "iq-set".
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   219
Best way to learn how this table is organized, is just to look at next example:
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   220
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   221
	lm.message.create { mtype = 'iq-result', to = 'foo@bar.xyz',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   222
		command = { xmlns = 'http://jabber.org/protocol/commands', node = 'http://jabber.org/protocol/rc#set-status', status = 'executing', sessionid = 'set-status:aaa3',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   223
			x = { xmlns = 'jabber:x:data', type = 'form',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   224
				title = { "Change Status" },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   225
				instructions = { "Choose the status and status message" },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   226
				field = {{ type = 'hidden', var = 'FORM_TYPE',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   227
					value = { "http://jabber.org/protocol/rc" },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   228
				},{ type = 'list-single', label = 'Status', var = 'status',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   229
					required = { },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   230
					value = { "online" },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   231
					option = {{ label = 'Chat',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   232
						value = { "chat" },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   233
					},{ label = 'Online',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   234
						value = { "online" },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   235
					},{ label = 'Away',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   236
						value = { "away" },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   237
					},{ label = 'Extended Away',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   238
						value = { "xa" },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   239
					},{ label = 'Do Not Disturb',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   240
						value = { "dnd" },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   241
					},{ label = 'Invisible',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   242
						value = { "invisible" },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   243
					},{ label = 'Offline',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   244
						value = { "offline" },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   245
					}},
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   246
				},{ type = 'text-single', label = 'Priority', var = 'status-priority',
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   247
					value = { "5" },
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   248
				},{ type = 'text-multi', label = 'Message', var = 'status-message' }},
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   249
			},
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   250
		},
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   251
	}
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   252
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   253
 
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   254
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   255
<a name="lm.message.create"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   256
### lm.message.create
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   257
Creates new message object and fills it from [message table](#message.table).
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   258
Note, that table fields are not checked for their types, so, on wrong input results may be undefined.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   259
**Arguments:** [message table](#message.table)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   260
**Return values:** [lm message](#lm.message) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   261
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   262
<a name="lm.message.bless"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   263
### lm.message.bless
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   264
Blesses given pointer to [lm message](#lm.message) object.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   265
**Arguments:** lightuserdata (C [lm message](#lm.message) object)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   266
**Return values:** [lm message](#lm.message) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   267
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   268
<a name="message:node"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   269
### message:node
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   270
Returns root node object of message.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   271
**Return values:** [lm message node](#lm.message.node) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   272
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   273
<a name="message:type"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   274
### message:type
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   275
Returns two strings: [message type](#message.type) and [message sub type](#message.sub.type).  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   276
**Return values:** [message type](#message.type), [message sub type](#message.sub.type)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   277
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   278
<a name="message:pointer"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   279
### message:pointer
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   280
Returns pointer to underlying C loudmouth structure.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   281
**Return values:** lightuserdata  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   282
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   283
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   284
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   285
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   286
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   287
<a name="lm.message.handler"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   288
## lm.message_handler
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   289
Module, representing message handling functions.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   290
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   291
<a name="message.handler.callback.function"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   292
### message handler callback function
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   293
Callback function, used on incoming messages.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   294
Should return true if message has been fully handled and no more
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   295
handlers should be called.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   296
**Arguments:** [lm connection](#lm.connection) object, [lm message](#lm.message) object    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   297
**Return values:** boolean  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   298
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   299
<a name="lm.message.handler.new"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   300
### lm.message_handler.new
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   301
Creates new message handler object.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   302
**Arguments:** [message handler callback function](#message.handler.callback.function)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   303
**Return values:** [lm message handler](#lm.message.handler) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   304
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   305
<a name="lm.message.handler.bless"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   306
### lm.message_handler.bless
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   307
Blesses given pointer to [lm message handler](#lm.message.handler) object.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   308
**Arguments:** lightuserdata (C [lm message handler](#lm.message.handler) object)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   309
**Return values:** [lm message handler](#lm.message.handler) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   310
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   311
<a name="message.handler:invalidate"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   312
### message_handler:invalidate
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   313
Invalidates handler.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   314
**Return values:** [lm message handler](#lm.message.handler) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   315
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   316
<a name="message.handler:valid"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   317
### message_handler:valid
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   318
Returns true if message handler is still valid.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   319
**Return values:** boolean  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   320
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   321
<a name="message.handler:pointer"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   322
### message_handler:pointer
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   323
Returns pointer to underlying C loudmouth structure.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   324
**Return values:** lightuserdata  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   325
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   326
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   327
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   328
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   329
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   330
<a name="lm.message.node"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   331
## lm.message_node
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   332
Object, representing xml node of the message.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   333
Cannot be created directly, only as a part of message tree.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   334
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   335
<a name="lm.message.node.bless"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   336
### lm.message_node.bless
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   337
Blesses given pointer to [lm message node](#lm.message.node) object.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   338
**Arguments:** lightuserdata (C [lm message node](#lm.message.node) object)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   339
**Return values:** [lm message node](#lm.message.node) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   340
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   341
<a name="message.node:name"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   342
### message_node:name
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   343
Gets a name of message node.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   344
**Return values:** string  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   345
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   346
<a name="message.node:next"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   347
### message_node:next
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   348
Gets next message node.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   349
**Return values:** [lm message node](#lm.message.node) object or nil  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   350
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   351
<a name="message.node:prev"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   352
### message_node:prev
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   353
Gets previous message node.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   354
**Return values:** [lm message node](#lm.message.node) object or nil  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   355
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   356
<a name="message.node:parent"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   357
### message_node:parent
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   358
Gets parent message node.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   359
**Return values:** [lm message node](#lm.message.node) object or nil  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   360
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   361
<a name="message.node:value"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   362
### message_node:value
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   363
Gets or sets a value of message node.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   364
**Arguments:** string (optional value)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   365
**Return values:** string (if called without arguments) or [lm message node](#lm.message.node) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   366
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   367
<a name="message.node:child"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   368
### message_node:child
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   369
Gets or creates child node object with given name.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   370
If name is omitted, first child node is returned.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   371
**Arguments:** string (name, optional), string (optional value)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   372
**Return values:** [lm message node](#lm.message.node) object or nil  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   373
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   374
<a name="message.node:children"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   375
### message_node:children
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   376
Returns iterator over child nodes of given node. Optionally filters childs by name.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   377
**Arguments:** string (name, optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   378
**Return values:** iterator function, [lm message node](#lm.message.node) object, nil  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   379
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   380
<a name="message.node:find.child"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   381
### message_node:find_child
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   382
Searches for node with a given name over all node subtree.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   383
**Arguments:** string (name)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   384
**Return values:** [lm message node](#lm.message.node) object or nil  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   385
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   386
<a name="message.node:raw"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   387
### message_node:raw
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   388
Gets or sets raw mode flag for node.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   389
When set, value of node will not be escaped.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   390
**Arguments:** boolean (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   391
**Values:** boolean (if called with no apguments) or [lm message node](#lm.message.node) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   392
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   393
<a name="message.node:attribute"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   394
### message_node:attribute
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   395
Gets or sets value of node attribute with a given name.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   396
**Arguments:** string (name), string (optional value)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   397
**Return values:** string (when called with one aprgument) or [lm message node](#lm.message.node) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   398
66
a40beb82130c node: Use new loudmouth feature - public attribute list (v0.9.7)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 62
diff changeset
   399
<a name="message.node:attributes"></a>
a40beb82130c node: Use new loudmouth feature - public attribute list (v0.9.7)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 62
diff changeset
   400
### message_node:attributes
a40beb82130c node: Use new loudmouth feature - public attribute list (v0.9.7)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 62
diff changeset
   401
Returns a table with message node attributes.  
a40beb82130c node: Use new loudmouth feature - public attribute list (v0.9.7)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 62
diff changeset
   402
**Return values:** table  
a40beb82130c node: Use new loudmouth feature - public attribute list (v0.9.7)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 62
diff changeset
   403
48
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   404
<a name="message.node:xml"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   405
### message_node:xml
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   406
Returns node representation in xml.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   407
**Return values:** string  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   408
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   409
<a name="message.node:path"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   410
### message_node:path
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   411
Returns node with specified path to it.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   412
If any element in a path cannot be found, it returns nil.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   413
**Arguments:** string (node name), ...    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   414
**Return values:** [lm message node](#lm.message.node) object or nil  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   415
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   416
<a name="message.node:pointer"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   417
### message_node:pointer
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   418
Returns pointer to underlying C structure.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   419
**Return values:** lightuserdata  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   420
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   421
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   422
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   423
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   424
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   425
<a name="lm.proxy"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   426
## lm.proxy
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   427
Object, containing information about proxy-server for connection.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   428
Create object, set it's parameters, and then attach to connection
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   429
with 'proxy' method.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   430
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   431
<a name="proxy.type"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   432
### proxy type
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   433
Stirng, specifying proxy-server type. The only type supported for now is http.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   434
**Values:**  http, none  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   435
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   436
<a name="lm.proxy.new"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   437
### lm.proxy.new
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   438
Creates new proxy object.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   439
Note, you should specify either none of args or both.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   440
**Arguments:** [proxy type](#proxy.type), string (optional proxy server name), integer (optional server port)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   441
**Return values:** [lm proxy](#lm.proxy) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   442
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   443
<a name="lm.proxy.bless"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   444
### lm.proxy.bless
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   445
Blesses given pointer to [lm proxy](#lm.proxy) object.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   446
**Arguments:** lightuserdata (C [lm proxy](#lm.proxy) object)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   447
**Return values:** [lm proxy](#lm.proxy) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   448
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   449
<a name="proxy:type"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   450
### proxy:type
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   451
Gets or sets proxy server type.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   452
**Arguments:** [proxy type](#proxy.type) (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   453
**Return values:** [proxy type](#proxy.type) (when called with no args) or [lm proxy](#lm.proxy) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   454
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   455
<a name="proxy:server"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   456
### proxy:server
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   457
Gets or sets proxy server name.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   458
**Arguments:** string (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   459
**Return values:** string (when called with no args) or [lm proxy](#lm.proxy) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   460
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   461
<a name="proxy:port"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   462
### proxy:port
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   463
Gets or sets proxy server port.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   464
**Arguments:** integer (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   465
**Return values:** integer (when called with no args) or [lm proxy](#lm.proxy) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   466
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   467
<a name="proxy:username"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   468
### proxy:username
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   469
Gets or sets username to authenticate to proxy server with.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   470
**Arguments:** string (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   471
**Return values:** string (when called with no args) or [lm proxy](#lm.proxy) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   472
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   473
<a name="proxy:password"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   474
### proxy:password
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   475
Gets or sets password to authenticate to proxy server with.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   476
**Arguments:** string (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   477
**Return values:** string (when called with no args) or [lm proxy](#lm.proxy) object  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   478
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   479
<a name="proxy:pointer"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   480
### proxy:pointer
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   481
Returns pointer to underlying C structure.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   482
**Return values:** lightuserdata  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   483
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   484
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   485
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   486
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   487
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   488
<a name="lm.ssl"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   489
## lm.ssl
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   490
Object, containing information about ssl abilities for connection.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   491
Create, set parameters, and attach to connection with 'ssl' method.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   492
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   493
<a name="ssl.status"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   494
### ssl status
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   495
String, representing what problem have current ssl session.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   496
**Values:**  no cert found, untrusted cert, cert expired, cert not activated, cert hostname mismatch, cert fingerprint mismatch, generic error  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   497
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   498
<a name="ssl.callback.function"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   499
### ssl callback function
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   500
User function, called when ssl error happens.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   501
**Arguments:** userdata ([lm ssl](#lm.ssl) object), [argument enum field](#argument.enum.field) ([ssl status](#ssl.status))    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   502
**Return values:** boolean (false if connection process should be terminated)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   503
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   504
<a name="lm.ssl.new"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   505
### lm.ssl.new
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   506
Creates new ssl object for use with connection.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   507
You can specify server key fingerprint, callback function for error handling,
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   508
both, or neither. Though, fingerprint should go before callback function.
61
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   509
SSL fingerprint is a string like 'SHA256:ABCDEF123456...' (or
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   510
'01:23:45:67:89:AB:CD:EF:FE:DC:BA:98:76:54:32:10' for LM versions, older than 1.5.3).  
48
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   511
**Arguments:** string (optional ssl fingerprint), [ssl callback function](#ssl.callback.function) (optional)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   512
**Return values:** userdata ([lm ssl](#lm.ssl) object)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   513
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   514
<a name="lm.ssl.bless"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   515
### lm.ssl.bless
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   516
Blesses given pointer to [lm ssl](#lm.ssl) object.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   517
**Arguments:** lightuserdata (C [lm ssl](#lm.ssl) object)    
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   518
**Return values:** userdata ([lm ssl](#lm.ssl) object)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   519
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   520
<a name="lm.ssl.supported"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   521
### lm.ssl.supported
61
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   522
Indicates if SSL is supported by loudmouth library and what kind of
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   523
ssl fingerprint is used.  
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   524
**Return values:** nil or string ("MD5" or "SHA256")  
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   525
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   526
<a name="ssl:ca.path"></a>
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   527
### ssl:ca_path
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   528
Set path to trusted ssl certificates. Argument must be a name of a PEM file
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   529
or a name of directory with hashed certificates.  
62
d92358eafead ssl: Return object from cipher/ca methods for chain initialization
Myhailo Danylenko <isbear@ukrpost.net>
parents: 61
diff changeset
   530
**Arguments:** string (path)    
d92358eafead ssl: Return object from cipher/ca methods for chain initialization
Myhailo Danylenko <isbear@ukrpost.net>
parents: 61
diff changeset
   531
**Return values:** [lm ssl](#lm.ssl) object  
61
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   532
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   533
<a name="ssl:cipher.list"></a>
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   534
### ssl:cipher_list
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   535
Set list of allowed ciphers (colon-separated). Names may vary depending on ssl
745b73f91607 docs: Update api
Myhailo Danylenko <isbear@ukrpost.net>
parents: 50
diff changeset
   536
implementation in use.  
62
d92358eafead ssl: Return object from cipher/ca methods for chain initialization
Myhailo Danylenko <isbear@ukrpost.net>
parents: 61
diff changeset
   537
**Arguments:** string (cipher list)    
d92358eafead ssl: Return object from cipher/ca methods for chain initialization
Myhailo Danylenko <isbear@ukrpost.net>
parents: 61
diff changeset
   538
**Return values:** [lm ssl](#lm.ssl) object  
48
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   539
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   540
<a name="ssl:fingerprint"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   541
### ssl:fingerprint
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   542
Returns fingerprint of remote server.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   543
**Return values:** string or nil  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   544
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   545
<a name="ssl:tls"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   546
### ssl:tls
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   547
Sets or returns use of starttls by this ssl object.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   548
**Arguments:** boolean (use starttls), boolean (require starttls)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   549
or  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   550
**Return values:** boolean (use starttls), boolean (require starttls)  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   551
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   552
<a name="ssl:pointer"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   553
### ssl:pointer
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   554
Returns pointer to underlying C structure.  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   555
**Return values:** lightuserdata  
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   556
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   557
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   558
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   559
- - -
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   560
50
2278dd806ad3 Add header to utils
Myhailo Danylenko <isbear@ukrpost.net>
parents: 48
diff changeset
   561
<a name="Utility.Lua.Routines"></a>
2278dd806ad3 Add header to utils
Myhailo Danylenko <isbear@ukrpost.net>
parents: 48
diff changeset
   562
## Utility Lua Routines
2278dd806ad3 Add header to utils
Myhailo Danylenko <isbear@ukrpost.net>
parents: 48
diff changeset
   563
To handle conversion of enums and flag fields to/from human-readable strings.
2278dd806ad3 Add header to utils
Myhailo Danylenko <isbear@ukrpost.net>
parents: 48
diff changeset
   564
48
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   565
<a name="argument.enum.field"></a>
50
2278dd806ad3 Add header to utils
Myhailo Danylenko <isbear@ukrpost.net>
parents: 48
diff changeset
   566
### argument enum field
48
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   567
String that will be converted to number or just plain number, that will be passed as is.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   568
Note, that if enum name is not recognized no error will be raised and default vale will be used.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   569
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   570
<a name="return.enum.field"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   571
### return enum field
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   572
String. If no string found, plain number will be returned.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   573
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   574
<a name="argument.flags.field"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   575
### argument flags field
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   576
Can be just plain number, then it is passed as is.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   577
Can be a string, then it is recognized as a single enabled flag.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   578
Or can be a table of the following format:
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   579
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   580
* integer keys should have string values, that will be used as enabled flag names or numerical values, that will be just ORed;
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   581
* string keys should be flag names, that will be enabled, if corresponding value contains true value.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   582
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   583
<a name="returned.flags.field"></a>
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   584
### returned flags field
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   585
Is always a table with present flag names as keys with true values.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   586
Not present flags are not present in table either.
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   587
Not recognized values, if present, will be stored as a number in a first sequential table member (table[1]).
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   588
ef69edc792be Rearrange docs
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   589
- - -