%Module(name=qgis._server, keyword_arguments="All") ${DEFAULTDOCSTRINGSIGNATURE} %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtXml/QtXmlmod.sip %Import core/core.sip %Include qgsserverexception.sip %Feature HAVE_SERVER_PYTHON_PLUGINS %Include server_auto.sip %VirtualErrorHandler serverapi_badrequest_exception_handler PyObject *type, *exception, *traceback; PyErr_Fetch(&type, &exception, &traceback); // check whether the object is already a unicode string QString originalExceptionMessage; if ( PyUnicode_Check( exception) ) { originalExceptionMessage = QString::fromUtf8( PyUnicode_AsUTF8( exception ) ); } else { PyObject* str = PyObject_Str( exception ); originalExceptionMessage = QString::fromUtf8( PyUnicode_AsUTF8( str ) ); Py_XDECREF( str ); } SIP_RELEASE_GIL( sipGILState ); QString strException = "API bad request error"; if ( !originalExceptionMessage.isEmpty() ) { strException = originalExceptionMessage; } throw QgsServerApiBadRequestException( strException ); %End %VirtualErrorHandler server_exception_handler PyObject *type, *exception, *traceback; PyErr_Fetch(&type, &exception, &traceback); // check whether the object is already a unicode string QString originalExceptionMessage; if ( PyUnicode_Check( exception) ) { originalExceptionMessage = QString::fromUtf8( PyUnicode_AsUTF8( exception ) ); } else { PyObject* str = PyObject_Str( exception ); originalExceptionMessage = QString::fromUtf8( PyUnicode_AsUTF8( str ) ); Py_XDECREF( str ); } SIP_RELEASE_GIL( sipGILState ); QString strException = "Server internal error"; if ( !originalExceptionMessage.isEmpty() ) { strException = originalExceptionMessage; } throw QgsServerException( strException ); %End