Frameworks/libpurple.framework/Versions/0.6.2/Headers/mime.h
author Zachary West <zacw@adium.im>
Fri Aug 21 13:25:11 2009 -0700 (2009-08-21)
changeset 2592 e8d15275025e
parent 1759 Frameworks/libpurple.framework/Versions/0.6.0/Headers/mime.h@1c4953467918
permissions -rw-r--r--
im.pidgin.adium.1-4 at 267c6165e02e34318a1823960bd04c0639952f73
Evan@653
     1
/*
Evan@653
     2
 * Purple
Evan@653
     3
 *
Evan@653
     4
 * Purple is the legal property of its developers, whose names are too
Evan@653
     5
 * numerous to list here. Please refer to the COPYRIGHT file distributed
Evan@653
     6
 * with this source distribution
Evan@653
     7
 *
Evan@653
     8
 * This program is free software; you can redistribute it and/or modify
Evan@653
     9
 * it under the terms of the GNU General Public License as published by
Evan@653
    10
 * the Free Software Foundation; either version 2 of the License, or (at
Evan@653
    11
 * your option) any later version.
Evan@653
    12
 *
Evan@653
    13
 * This program is distributed in the hope that it will be useful, but
Evan@653
    14
 * WITHOUT ANY WARRANTY; without even the implied warranty of
Evan@653
    15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Evan@653
    16
 * General Public License for more details.
Evan@653
    17
 *
Evan@653
    18
 * You should have received a copy of the GNU General Public License
Evan@653
    19
 * along with this program; if not, write to the Free Software
Evan@653
    20
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301,
Evan@653
    21
 * USA.
Evan@653
    22
 */
Evan@653
    23
Evan@653
    24
#ifndef _PURPLE_MIME_H
Evan@653
    25
#define _PURPLE_MIME_H
Evan@653
    26
Evan@653
    27
#include <glib.h>
Evan@653
    28
Evan@653
    29
#ifdef __cplusplus
Evan@653
    30
extern "C" {
Evan@653
    31
#endif
Evan@653
    32
Evan@653
    33
/**
Evan@653
    34
 * @file mime.h
Evan@653
    35
 * @ingroup core
Evan@653
    36
 *
Evan@653
    37
 * Rudimentary parsing of multi-part MIME messages into more
Evan@653
    38
 * accessible structures.
Evan@653
    39
 */
Evan@653
    40
Evan@653
    41
/**
Evan@653
    42
 * A MIME document.
Evan@653
    43
 */
Evan@653
    44
typedef struct _PurpleMimeDocument PurpleMimeDocument;
Evan@653
    45
Evan@653
    46
/**
Evan@653
    47
 * A part of a multipart MIME document.
Evan@653
    48
 */
Evan@653
    49
typedef struct _PurpleMimePart PurpleMimePart;
Evan@653
    50
Evan@653
    51
/**
Evan@653
    52
 * Allocate an empty MIME document.
Evan@653
    53
 */
Evan@653
    54
PurpleMimeDocument *purple_mime_document_new(void);
Evan@653
    55
Evan@653
    56
/**
Evan@653
    57
 * Frees memory used in a MIME document and all of its parts and fields
Evan@653
    58
 *
Evan@653
    59
 * @param doc The MIME document to free.
Evan@653
    60
 */
Evan@653
    61
void purple_mime_document_free(PurpleMimeDocument *doc);
Evan@653
    62
Evan@653
    63
/**
Evan@653
    64
 * Parse a MIME document from a NUL-terminated string.
Evan@653
    65
 *
Evan@653
    66
 * @param buf The NULL-terminated string containing the MIME-encoded data.
Evan@653
    67
 *
Evan@653
    68
 * @returns A MIME document.
Evan@653
    69
 */
Evan@653
    70
PurpleMimeDocument *purple_mime_document_parse(const char *buf);
Evan@653
    71
Evan@653
    72
/**
Evan@653
    73
 * Parse a MIME document from a string
Evan@653
    74
 *
Evan@653
    75
 * @param buf The string containing the MIME-encoded data.
Evan@653
    76
 * @param len Length of buf.
Evan@653
    77
 *
Evan@653
    78
 * @returns   A MIME document.
Evan@653
    79
 */
Evan@653
    80
PurpleMimeDocument *purple_mime_document_parsen(const char *buf, gsize len);
Evan@653
    81
Evan@653
    82
/**
Evan@653
    83
 * Write (append) a MIME document onto a GString.
Evan@653
    84
 */
Evan@653
    85
void purple_mime_document_write(PurpleMimeDocument *doc, GString *str);
Evan@653
    86
Evan@653
    87
/**
Evan@653
    88
 * The list of fields in the header of a document
Evan@653
    89
 *
Evan@653
    90
 * @param doc The MIME document.
Evan@653
    91
 *
Evan@653
    92
 * @constreturn A list of strings indicating the fields (but not the values
Evan@653
    93
 *              of the fields) in the header of doc.
Evan@653
    94
 */
Evan@653
    95
GList *purple_mime_document_get_fields(PurpleMimeDocument *doc);
Evan@653
    96
Evan@653
    97
/**
Evan@653
    98
 * Get the value of a specific field in the header of a document.
Evan@653
    99
 *
Evan@653
   100
 * @param doc   The MIME document.
Evan@653
   101
 * @param field Case-insensitive field name.
Evan@653
   102
 *
Evan@653
   103
 * @returns     Value associated with the indicated header field, or
Evan@653
   104
 *              NULL if the field doesn't exist.
Evan@653
   105
 */
Evan@653
   106
const char *purple_mime_document_get_field(PurpleMimeDocument *doc,
Evan@653
   107
					 const char *field);
Evan@653
   108
Evan@653
   109
/**
Evan@653
   110
 * Set or replace the value of a specific field in the header of a
Evan@653
   111
 * document.
Evan@653
   112
 *
Evan@653
   113
 * @param doc   The MIME document.
Evan@653
   114
 * @param field Case-insensitive field name.
Evan@653
   115
 * @param value Value to associate with the indicated header field,
Evan@653
   116
 *              of NULL to remove the field.
Evan@653
   117
 */
Evan@653
   118
void purple_mime_document_set_field(PurpleMimeDocument *doc,
Evan@653
   119
				  const char *field,
Evan@653
   120
				  const char *value);
Evan@653
   121
Evan@653
   122
/**
Evan@653
   123
 * The list of parts in a multipart document.
Evan@653
   124
 *
Evan@653
   125
 * @param doc The MIME document.
Evan@653
   126
 *
Evan@653
   127
 * @constreturn   List of PurpleMimePart contained within doc.
Evan@653
   128
 */
Evan@653
   129
GList *purple_mime_document_get_parts(PurpleMimeDocument *doc);
Evan@653
   130
Evan@653
   131
/**
Evan@653
   132
 * Create and insert a new part into a MIME document.
Evan@653
   133
 *
Evan@653
   134
 * @param doc The new part's parent MIME document.
Evan@653
   135
 */
Evan@653
   136
PurpleMimePart *purple_mime_part_new(PurpleMimeDocument *doc);
Evan@653
   137
Evan@653
   138
Evan@653
   139
/**
Evan@653
   140
 * The list of fields in the header of a document part.
Evan@653
   141
 *
Evan@653
   142
 * @param part The MIME document part.
Evan@653
   143
 *
Evan@653
   144
 * @constreturn List of strings indicating the fields (but not the values
Evan@653
   145
 *              of the fields) in the header of part.
Evan@653
   146
 */
Evan@653
   147
GList *purple_mime_part_get_fields(PurpleMimePart *part);
Evan@653
   148
Evan@653
   149
Evan@653
   150
/**
Evan@653
   151
 * Get the value of a specific field in the header of a document part.
Evan@653
   152
 *
Evan@653
   153
 * @param part  The MIME document part.
Evan@653
   154
 * @param field Case-insensitive name of the header field.
Evan@653
   155
 *
Evan@653
   156
 * @returns     Value of the specified header field, or NULL if the
Evan@653
   157
 *              field doesn't exist.
Evan@653
   158
 */
Evan@653
   159
const char *purple_mime_part_get_field(PurpleMimePart *part,
Evan@653
   160
				     const char *field);
Evan@653
   161
Evan@653
   162
/**
Evan@653
   163
 * Get the decoded value of a specific field in the header of a
Evan@653
   164
 * document part.
Evan@653
   165
 */
Evan@653
   166
char *purple_mime_part_get_field_decoded(PurpleMimePart *part,
Evan@653
   167
				       const char *field);
Evan@653
   168
Evan@653
   169
/**
Evan@653
   170
 * Set or replace the value of a specific field in the header of a
Evan@653
   171
 * document.
Evan@653
   172
 *
Evan@653
   173
 * @param part  The part of the MIME document.
Evan@653
   174
 * @param field Case-insensitive field name
Evan@653
   175
 * @param value Value to associate with the indicated header field,
Evan@653
   176
 *              of NULL to remove the field.
Evan@653
   177
 */
Evan@653
   178
void purple_mime_part_set_field(PurpleMimePart *part,
Evan@653
   179
			      const char *field,
Evan@653
   180
			      const char *value);
Evan@653
   181
Evan@653
   182
/**
Evan@653
   183
 * Get the (possibly encoded) data portion of a MIME document part.
Evan@653
   184
 *
Evan@653
   185
 * @param part The MIME document part.
Evan@653
   186
 *
Evan@653
   187
 * @returns    NULL-terminated data found in the document part
Evan@653
   188
 */
Evan@653
   189
const char *purple_mime_part_get_data(PurpleMimePart *part);
Evan@653
   190
Evan@653
   191
/**
Evan@653
   192
 * Get the data portion of a MIME document part, after attempting to
Evan@653
   193
 * decode it according to the content-transfer-encoding field. If the
Evan@653
   194
 * specified encoding method is not supported, this function will
Evan@653
   195
 * return NULL.
Evan@653
   196
 *
Evan@653
   197
 * @param part The MIME documemt part.
Evan@653
   198
 * @param data Buffer for the data.
Evan@653
   199
 * @param len  The length of the buffer.
Evan@653
   200
 */
Evan@653
   201
void purple_mime_part_get_data_decoded(PurpleMimePart *part,
Evan@653
   202
				     guchar **data, gsize *len);
Evan@653
   203
Evan@653
   204
/**
Evan@653
   205
 * Get the length of the data portion of a MIME document part.
Evan@653
   206
 *
Evan@653
   207
 * @param part The MIME document part.
Evan@653
   208
 * @returns    Length of the data in the document part.
Evan@653
   209
 */
Evan@653
   210
gsize purple_mime_part_get_length(PurpleMimePart *part);
Evan@653
   211
Evan@653
   212
void purple_mime_part_set_data(PurpleMimePart *part, const char *data);
Evan@653
   213
Evan@653
   214
#ifdef __cplusplus
Evan@653
   215
}
Evan@653
   216
#endif
Evan@653
   217
Evan@653
   218
#endif