00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _URLS_H_
00021 #define _URLS_H_
00022
00023 #include <osipparser2/osip_const.h>
00024 #include <osipparser2/osip_list.h>
00025
00041 #ifdef __cplusplus
00042 extern "C"
00043 {
00044 #endif
00045
00050 typedef struct osip_uri_param osip_uri_param_t;
00051
00056 struct osip_uri_param
00057 {
00058 char *gname;
00059 char *gvalue;
00060 };
00061
00066 typedef osip_uri_param_t osip_uri_header_t;
00067
00072 int osip_uri_param_init (osip_uri_param_t ** url_param);
00077 void osip_uri_param_free (osip_uri_param_t * url_param);
00084 int osip_uri_param_set (osip_uri_param_t * url_param, char *name,
00085 char *value);
00091 int osip_uri_param_clone (const osip_uri_param_t * url_param,
00092 osip_uri_param_t ** dest);
00093 #ifndef DOXYGEN
00094
00095
00096
00097
00098 void osip_uri_param_freelist (osip_list_t * url_params);
00099 #endif
00100
00106 int osip_uri_param_add (osip_list_t * url_params, char *name, char *value);
00113 int osip_uri_param_get_byname (osip_list_t * url_params, char *name,
00114 osip_uri_param_t ** dest);
00115
00120 #define osip_uri_header_init(url_header) osip_uri_param_init(url_header)
00121
00125 #define osip_uri_header_free(url_header) osip_uri_param_free(url_header)
00126
00132 #define osip_uri_header_set(url_header, name, value) osip_uri_param_set(url_header, name, value)
00133
00138 #define osip_uri_header_clone(url_header,dest) osip_uri_param_clone(url_header,dest)
00139 #ifndef DOXYGEN
00140
00141
00142
00143
00144 #define osip_uri_header_freelist(LIST) osip_uri_param_freelist(LIST)
00145 #endif
00146
00152 #define osip_uri_header_add(url_headers,name,value) osip_uri_param_add(url_headers,name,value)
00153
00159 #define osip_uri_header_get_byname(url_headers,name,dest) osip_uri_param_get_byname(url_headers,name,dest)
00160
00165 typedef struct osip_uri osip_uri_t;
00166
00171 struct osip_uri
00172 {
00173 char *scheme;
00174 char *username;
00175 char *password;
00176 char *host;
00177 char *port;
00178 osip_list_t *url_params;
00179 osip_list_t *url_headers;
00181 char *string;
00182 };
00183
00188 int osip_uri_init (osip_uri_t ** url);
00193 void osip_uri_free (osip_uri_t * url);
00199 int osip_uri_parse (osip_uri_t * url, const char *buf);
00200 #ifndef DOXYGEN
00201
00206 int osip_uri_parse_headers (osip_uri_t * url, const char *buf);
00212 int osip_uri_parse_params (osip_uri_t * url, const char *buf);
00213 #endif
00214
00219 int osip_uri_to_str (const osip_uri_t * url, char **dest);
00225 int osip_uri_clone (const osip_uri_t * url, osip_uri_t ** dest);
00232 int osip_uri_to_str_canonical (const osip_uri_t * url, char **dest);
00233
00239 void osip_uri_set_scheme (osip_uri_t * url, char *value);
00244 char *osip_uri_get_scheme (osip_uri_t * url);
00250 void osip_uri_set_host (osip_uri_t * url, char *value);
00255 char *osip_uri_get_host (osip_uri_t * url);
00261 void osip_uri_set_username (osip_uri_t * url, char *value);
00266 char *osip_uri_get_username (osip_uri_t * url);
00272 void osip_uri_set_password (osip_uri_t * url, char *value);
00277 char *osip_uri_get_password (osip_uri_t * url);
00283 void osip_uri_set_port (osip_uri_t * url, char *value);
00288 char *osip_uri_get_port (osip_uri_t * url);
00289
00290
00291
00296 #define osip_uri_set_transport_udp(url) osip_uri_param_add((url)->url_params, osip_strdup("transport"), osip_strdup("udp"))
00297
00301 #define osip_uri_set_transport_tcp(url) osip_uri_param_add((url)->url_params, osip_strdup("transport"), osip_strdup("tcp"))
00302
00306 #define osip_uri_set_transport_sctp(url) osip_uri_param_add((url)->url_params, osip_strdup("transport"), osip_strdup("sctp"))
00307
00311 #define osip_uri_set_transport_tls(url) osip_uri_param_add((url)->url_params, osip_strdup("transport"), osip_strdup("tls"))
00312
00317 #define osip_uri_set_transport(url,value) osip_uri_param_add((url)->url_params, osip_strdup("transport"), value)
00318
00323 #define osip_uri_set_user_phone(url) osip_uri_param_add((url)->url_params, osip_strdup("user"), osip_strdup("phone"))
00324
00328 #define osip_uri_set_user_ip(url) osip_uri_param_add((url)->url_params, osip_strdup("user"), osip_strdup("ip"))
00329
00333 #define osip_uri_set_method_invite(url) osip_uri_param_add((url)->url_params, osip_strdup("method"), osip_strdup("INVITE"))
00334
00338 #define osip_uri_set_method_ack(url) osip_uri_param_add((url)->url_params, osip_strdup("method"), osip_strdup("ACK"))
00339
00343 #define osip_uri_set_method_options(url) osip_uri_param_add((url)->url_params, osip_strdup("method"), osip_strdup("OPTIONS"))
00344
00348 #define osip_uri_set_method_bye(url) osip_uri_param_add((url)->url_params, osip_strdup("method"), osip_strdup("BYE"))
00349
00353 #define osip_uri_set_method_cancel(url) osip_uri_param_add((url)->url_params, osip_strdup("method"), osip_strdup("CANCEL"))
00354
00358 #define osip_uri_set_method_register(url) osip_uri_param_add((url)->url_params,osip_strdup("method"), osip_strdup("REGISTER"))
00359
00364 #define osip_uri_set_method(url, value) osip_uri_param_add((url)->url_params, osip_strdup("method"), value)
00365
00370 #define osip_uri_set_ttl(url, value) osip_uri_param_add((url)->url_params, osip_strdup("ttl"), value)
00371
00376 #define osip_uri_set_maddr(url, value) osip_uri_param_add((url)->url_params, osip_strdup("maddr"), value)
00377
00384 #define osip_uri_uparam_add(url,name,value) osip_uri_param_add((url)->url_params,name,value)
00385
00391 #define osip_uri_uparam_get_byname(url,name,dest) osip_uri_param_get_byname((url)->url_params,name,dest)
00392
00399 #define osip_uri_uheader_add(url,name,value) osip_uri_header_add(url->url_headers,name,value)
00400
00406 #define osip_uri_uheader_get_byname(url,name,dest) osip_uri_header_get_byname(url->url_headers,name,dest)
00407
00408 #ifndef DOXYGEN
00409
00410 char *next_separator (const char *ch, int separator_osip_to_find,
00411 int before_separator);
00412
00413 char *__osip_uri_escape_nonascii_and_nondef (const char *string,
00414 const char *def);
00415 char *__osip_uri_escape_userinfo (const char *string);
00416 char *__osip_uri_escape_password (const char *string);
00417 char *__osip_uri_escape_uri_param (char *string);
00418 char *__osip_uri_escape_header_param (char *string);
00419 void __osip_uri_unescape (char *string);
00420
00421 #endif
00422
00425 #ifdef __cplusplus
00426 }
00427 #endif
00428
00429 #endif