linotp.lib.reply module

create responses

linotp.lib.reply.create_html(data, width=0, alt=None, list_id='challenge_data')[source]

_create_html - create the qr image data embeded in html tag

Parameters:
  • data (string) – input data that will be munched into the qrcode
  • width (int) – image width in pixel
Returns:

<img/> taged data

Return type:

string

linotp.lib.reply.create_img(data, width=0, alt=None, img_id='challenge_qrcode')[source]

_create_img - create the qr image data

Parameters:
  • data (string) – input data that will be munched into the qrcode
  • width (int) – image width in pixel
Returns:

<img/> taged data

Return type:

string

linotp.lib.reply.create_png(data, alt=None)[source]
linotp.lib.reply.json2xml(json_obj, line_padding='')[source]
linotp.lib.reply.sendCSVResult(response, obj, flat_lines=False, filename='linotp-tokendata.csv')[source]

returns a CSV document of the input data (like in /admin/show)

Parameters:
  • response – The pylons response object
  • obj (JSON object) – The data, that gets serialized as CSV
  • flat_lines – If True the object only contains a list of the dict { ‘cell’: ..., ‘id’: ... } as in all the flexigrid functions.

‘type flat_lines: boolean

linotp.lib.reply.sendError(response, exception, id=1, context=None)[source]

sendError - return a HTML or JSON error result document

Default LinOTP behaviour in case of error is to try to always send a ‘200 OK’ HTTP response that contains an error code and description in the body (JSON data). Some clients prefer a different HTTP status code, because it allows response filtering without parsing the body. If the client sends ‘httperror=<INT>’ in the request this will be honoured (in case of error) and that HTTP status will be set. If ‘httperror’ is set without a value (or an invalid value) status 500 will be used. If you would like this to happen only in some error conditions but not all you can set ‘linotp.errors’ in the LinOTP Config. Then the HTTP status defined by ‘httperror’ will ONLY be sent when the error that occurs in LinOTP matches one of the errors defined in ‘linotp.errors’. In other cases ‘200 OK’ with error code and description in the body will be returned. If ‘linotp.errors’ is unset all errors will cause responses with HTTP status ‘httperror’. For example:

Setup 1:
  • The client sends httperror=777 in the request
  • linotp.errors=233,567
Case 1.1: An exception is raised in LinOTP that has errId 233.
  • LinOTP will return a response with HTTP status 777.
Case 1.2: An exception is raised with errId 555
  • LinOTP will return a response with HTTP status 200.
Setup 2:
  • The client sends httperror (empty) in the request
  • linotp.errors=233,567
Case 2.1: An exception is raised in LinOTP that has errId 233.
  • LinOTP will return a response with HTTP status 500.
Case 2.2: An exception is raised with errId 555
  • LinOTP will return a response with HTTP status 200.
Setup 3:
  • The client sends httperror (empty) in the request
  • linotp.errors is not set
Case 3.1: An exception is raised in LinOTP that has errId 233.
  • LinOTP will return a response with HTTP status 500.
Case 3.2: An exception is raised with errId 555
  • LinOTP will return a response with HTTP status 500.
Setup 4:
  • NO httperror in request
  • linotp.errors=233,567 (or is unset, does not matter)
Case 4.1: An exception is raised in LinOTP that has errId 233.
  • LinOTP will return a response with HTTP status 200.
Case 4.2: An exception is raised with errId 555
  • LinOTP will return a response with HTTP status 200.
remark for ‘context’ parameter:
the ‘context’ is especially required to catch errors from the _before_ methods. The return of a _before_ must be of type response and must have the attribute response._exception set, to stop further processing, which otherwise will have ugly results!!
Parameters:
  • response (response object) – the pylon response object
  • exception (exception) – should be a linotp exception (s. linotp.lib.error.py)
  • id (int) – id value, for future versions
  • context (string) – default is None or ‘before’
Returns:

json rendered sting result

Return type:

string

linotp.lib.reply.sendQRImageResult(response, data, param=None, id=1, typ='html')[source]
method
sendQRImageResult
arguments
response - the pylon response object param - the paramters of the request id - html - print qrcode wrapped by html or not
linotp.lib.reply.sendResult(response, obj, id=1, opt=None, status=True)[source]

sendResult - return an json result document

Parameters:
  • response (response object) – the pylons response object
  • obj (dict or list or string/unicode) – simple result object like dict, sting or list
  • id (int) – id value, for future versions
  • opt (None or simple type like dict, list or string/unicode) – optional parameter, which allows to provide more detail
Returns:

json rendered sting result

Return type:

string

linotp.lib.reply.sendResultIterator(obj, id=1, opt=None, rp=None, page=None)[source]

sendResultIterator - return an json result document in a streamed mode

Parameters:
  • obj – iterator of generator object like dict, string or list
  • id – id value, for future versions
  • opt – optional parameter, which allows to provide more detail
  • rp – results per page
  • page – number of page
Returns:

generator of response data (yield)

linotp.lib.reply.sendXMLError(response, exception, id=1)[source]
linotp.lib.reply.sendXMLResult(response, obj, id=1, opt=None)[source]

send the result as an xml format