renatofilho@320: /** renatofilho@320: * GMyth Library renatofilho@320: * renatofilho@320: * @file gmyth/gmyth_uri.h renatofilho@320: * renatofilho@320: * @brief

GMythURI utils renatofilho@320: * - Extracts and parses a URI char string, in according with the RFC 2396 renatofilho@320: * [http://www.ietf.org/rfc/rfc2396.txt] renatofilho@320: * renatofilho@320: * Copyright (C) 2006 INdT - Instituto Nokia de Tecnologia. renatofilho@320: * @author Rosfran Borges renatofilho@320: * renatofilho@320: *//* renatofilho@320: * renatofilho@320: * This program is free software; you can redistribute it and/or modify renatofilho@320: * it under the terms of the GNU Lesser General Public License as published by renatofilho@320: * the Free Software Foundation; either version 2 of the License, or renatofilho@320: * (at your option) any later version. renatofilho@320: * renatofilho@320: * This program is distributed in the hope that it will be useful, renatofilho@320: * but WITHOUT ANY WARRANTY; without even the implied warranty of renatofilho@320: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the renatofilho@320: * GNU General Public License for more details. renatofilho@320: * renatofilho@320: * You should have received a copy of the GNU Lesser General Public License renatofilho@320: * along with this program; if not, write to the Free Software renatofilho@320: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA renatofilho@320: */ renatofilho@320: renatofilho@320: #ifndef _GMYTH_URI_H_ renatofilho@320: #define _GMYTH_URI_H_ renatofilho@320: renatofilho@320: #include renatofilho@320: #include renatofilho@320: renatofilho@320: #include renatofilho@320: #include renatofilho@320: #include renatofilho@320: renatofilho@320: G_BEGIN_DECLS renatofilho@320: renatofilho@320: #define GMYTH_URI_TYPE (gmyth_uri_get_type ()) renatofilho@320: #define GMYTH_URI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GMYTH_URI_TYPE, GMythURI)) renatofilho@320: #define GMYTH_URI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GMYTH_URI_TYPE, GMythURIClass)) renatofilho@320: #define IS_GMYTH_URI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GMYTH_URI_TYPE)) renatofilho@320: #define IS_GMYTH_URI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GMYTH_URI_TYPE)) renatofilho@320: #define GMYTH_URI_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GMYTH_URI_TYPE, GMythURIClass)) renatofilho@320: renatofilho@320: typedef struct _GMythURI GMythURI; renatofilho@320: typedef struct _GMythURIClass GMythURIClass; renatofilho@320: renatofilho@320: /**************************************** renatofilho@320: * Define renatofilho@320: ****************************************/ renatofilho@320: renatofilho@320: #define GMYTH_URI_KNKOWN_PORT (-1) renatofilho@320: #define GMYTH_URI_DEFAULT_HTTP_PORT 80 renatofilho@320: #define GMYTH_URI_DEFAULT_FTP_PORT 21 renatofilho@320: #define GMYTH_URI_DEFAULT_PATH "/" renatofilho@320: #define GMYTH_URI_MAXLEN 256 renatofilho@320: renatofilho@320: #define GMYTH_URI_PROTOCOL_DELIM "://" renatofilho@320: #define GMYTH_URI_USER_DELIM "@" renatofilho@320: #define GMYTH_URI_COLON_DELIM ":" renatofilho@320: #define GMYTH_URI_SLASH_DELIM "/" renatofilho@320: #define GMYTH_URI_SBLACET_DELIM "[" renatofilho@320: #define GMYTH_URI_EBLACET_DELIM "]" renatofilho@320: #define GMYTH_URI_SHARP_DELIM "#" renatofilho@320: #define GMYTH_URI_QUESTION_DELIM "?" renatofilho@320: #define GMYTH_URI_E_DELIM "&" renatofilho@320: #define GMYTH_URI_ESCAPING_CHAR "%" renatofilho@320: renatofilho@320: #define GMYTH_URI_PROTOCOL_MYTH "myth" renatofilho@320: #define GMYTH_URI_PROTOCOL_HTTP "http" renatofilho@320: #define GMYTH_URI_PROTOCOL_FTP "ftp" renatofilho@320: renatofilho@320: /**************************************** renatofilho@320: * Data Type renatofilho@320: ****************************************/ renatofilho@320: renatofilho@320: struct _GMythURIClass renatofilho@320: { renatofilho@320: GObjectClass parent_class; renatofilho@320: renatofilho@320: /* callbacks */ renatofilho@320: /* no one for now */ renatofilho@320: }; renatofilho@320: renatofilho@320: struct _GMythURI { renatofilho@320: renatofilho@320: GObject parent; renatofilho@320: renatofilho@320: GString *uri; renatofilho@320: GString *host; renatofilho@320: gint port; renatofilho@320: GString *protocol; renatofilho@320: GString *path; renatofilho@320: GString *fragment; renatofilho@320: GString *user; renatofilho@320: GString *password; renatofilho@320: GString *query; renatofilho@320: renatofilho@320: }; renatofilho@320: renatofilho@320: GType gmyth_uri_get_type (void); renatofilho@320: GMythURI* gmyth_uri_new (void); renatofilho@320: GMythURI* gmyth_uri_new_with_value (const gchar *value); renatofilho@320: gboolean gmyth_uri_is_equals ( GMythURI* uri1, GMythURI* uri2 ); renatofilho@320: gboolean gmyth_uri_is_livetv ( GMythURI* uri ); renatofilho@320: gint gmyth_uri_get_channel_num( GMythURI* uri ); renatofilho@320: gchar* gmyth_uri_get_channel_name( GMythURI* uri ); renatofilho@320: renatofilho@320: renatofilho@320: #define gmyth_uri_get_host(urip) ( urip->host != NULL ? urip->host->str : "" ) renatofilho@320: #define gmyth_uri_get_port(urip) ( urip->port ) renatofilho@320: #define gmyth_uri_get_protocol(urip) ( urip->protocol != NULL ? urip->protocol->str : "" ) renatofilho@320: #define gmyth_uri_get_path(urip) ( urip->path != NULL ? urip->path->str : "" ) renatofilho@320: #define gmyth_uri_get_user(urip) ( urip->user != NULL ? urip->user->str : "" ) renatofilho@320: #define gmyth_uri_get_password(urip) ( urip->password != NULL ? urip->password->str : "" ) renatofilho@320: #define gmyth_uri_get_fragment(urip) ( urip->fragment != NULL ? urip->fragment->str : "" ) renatofilho@320: #define gmyth_uri_get_query(urip) ( urip->query != NULL ? urip->query->str : "" ) renatofilho@320: renatofilho@320: G_END_DECLS renatofilho@320: renatofilho@320: #endif /* _GMYTH_URI_H_ */