static PyObject * api_mime_get_message (PyObject *self, PyObject *args) { int status; PyMime *py_mime; PyMessage *py_msg = PyMessage_NEW (); if (!PyArg_ParseTuple (args, "O!", &PyMimeType, &py_mime)) return NULL; status = mu_mime_get_message (py_mime->mime, &py_msg->msg); Py_INCREF (py_msg); return status_object (status, (PyObject *)py_msg); }
static PyObject * api_stream_to_message (PyObject *self, PyObject *args) { int status; PyStream *py_stm; PyMessage *py_msg = PyMessage_NEW (); if (!PyArg_ParseTuple (args, "O!", &PyStreamType, &py_stm)) return NULL; Py_INCREF (py_msg); status = mu_stream_to_message (py_stm->stm, &py_msg->msg); return status_object (status, (PyObject *)py_msg); }
static PyObject * api_mime_get_part (PyObject *self, PyObject *args) { int status; Py_ssize_t npart; PyMime *py_mime; PyMessage *py_part = PyMessage_NEW (); if (!PyArg_ParseTuple (args, "O!n", &PyMimeType, &py_mime, &npart)) return NULL; ASSERT_INDEX_RANGE (npart, "mime part"); status = mu_mime_get_part (py_mime->mime, npart, &py_part->msg); Py_INCREF (py_part); return status_object (status, (PyObject *)py_part); }
static void _sieve_action_printer (void *data, mu_stream_t stream, size_t msgno, mu_message_t msg, const char *action, const char *fmt, va_list ap) { PyObject *py_args; PyObject *py_dict = PyDict_New (); PyStream *py_stm; if (!py_dict) return; py_stm = PyStream_NEW (); if (py_stm) { PyMessage *py_msg = PyMessage_NEW (); char *buf = NULL; size_t buflen = 0; if (py_msg) { PyStream *py_stm = PyStream_NEW (); if (py_stm) { py_stm->stm = stream; mu_stream_ref (stream); py_msg->msg = msg; Py_INCREF (py_msg); PyDict_SetItemString (py_dict, "msgno", PyInt_FromSize_t (msgno)); PyDict_SetItemString (py_dict, "msg", (PyObject *)py_msg); PyDict_SetItemString (py_dict, "action", PyString_FromString (action ? action : "")); if (mu_vasnprintf (&buf, &buflen, fmt, ap)) { mu_stream_unref (stream); return; } PyDict_SetItemString (py_dict, "text", PyString_FromString (buf ? buf : "")); free (buf); py_args = PyTuple_New (1); if (py_args) { struct _mu_py_sieve_logger *s = data; PyObject *py_fnc = s->py_action_printer; Py_INCREF (py_dict); PyTuple_SetItem (py_args, 0, py_dict); if (py_fnc && PyCallable_Check (py_fnc)) PyObject_CallObject (py_fnc, py_args); Py_DECREF (py_dict); Py_DECREF (py_args); } } } } }