// Copyright (c) 2017 Ryan Leckey // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. #include "utils.h" PyObject* PyXmlSec_GetFilePathOrContent(PyObject* file, int* is_content) { PyObject* data; PyObject* utf8; PyObject* tmp = NULL; if (PyObject_HasAttrString(file, "read")) { data = PyObject_CallMethod(file, "read", NULL); if (data != NULL && PyUnicode_Check(data)) { utf8 = PyUnicode_AsUTF8String(data); Py_DECREF(data); data = utf8; } *is_content = 1; return data; } *is_content = 0; if (!PyString_FSConverter(file, &tmp)) { return NULL; } return tmp; } int PyXmlSec_SetStringAttr(PyObject* obj, const char* name, const char* value) { PyObject* tmp = PyString_FromString(value); int r; if (tmp == NULL) { return -1; } r = PyObject_SetAttrString(obj, name, tmp); Py_DECREF(tmp); return r; } int PyXmlSec_SetLongAttr(PyObject* obj, const char* name, long value) { PyObject* tmp = PyLong_FromLong(value); int r; if (tmp == NULL) { return -1; } r = PyObject_SetAttrString(obj, name, tmp); Py_DECREF(tmp); return r; }