summaryrefslogtreecommitdiff
path: root/python/SoupMessageBody.override
blob: 837ec12c134ccd5ac8525f955ff3d36517a52a65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/* -*- Mode: C; c-basic-offset: 4 -*-
 *
 * SoupMessageBody.override: overrides for SoupMessageBody
 */
%%
override soup_message_body_append kwargs
static PyObject *
_wrap_soup_message_body_append (PyObject *self,
				PyObject *args,
				PyObject *kwargs)
{
    static char *kwlist[] = { "data", "length", NULL };
    char *data;
    int length, caller_length = 0;

    if (!PyArg_ParseTupleAndKeywords (args, kwargs,
				      "s#|i:SoupMessageBody.append",
				      kwlist, &data, &length, &caller_length))
	return NULL;

    if (caller_length)
	length = caller_length;

    /* FIXME: Add a way to create a SoupBuffer that refs data's PyObject */
    soup_message_body_append (pyg_boxed_get(self, SoupMessageBody),
			      SOUP_MEMORY_COPY, data, length);

    Py_INCREF(Py_None);
    return Py_None;
}
%%
override soup_message_body_get_chunk kwargs
static PyObject *
_wrap_soup_message_body_get_chunk (PyObject *self,
				   PyObject *args,
				   PyObject *kwargs)
{
    static char *kwlist[] = { "offset", NULL };
    long long offset;
    SoupBuffer *chunk;

    if (!PyArg_ParseTupleAndKeywords (args, kwargs,
				      "L:SoupMessageBody.get_chunk",
				      kwlist, &offset))
	return NULL;

    chunk = soup_message_body_get_chunk (pyg_boxed_get(self, SoupMessageBody),
					 offset);
    return pyg_boxed_new(SOUP_TYPE_BUFFER, chunk, TRUE, TRUE);
}
%%
override-attr SoupMessageBody.length
static PyObject *
_wrap_soup_message_body__get_length(PyObject *self, void *closure)
{
    goffset length;

    length = pyg_boxed_get(self, SoupMessageBody)->length;
    return PyLong_FromLongLong(length);
}