From: Thadeu Lima de Souza Cascardo Date: Wed, 23 Jan 2008 15:49:23 +0000 (-0200) Subject: Started a file backend and first prototype interface. X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fatompub.git;a=commitdiff_plain;h=d63bc1d70c53cf317e6eb5953234f6712e57bd8b Started a file backend and first prototype interface. --- d63bc1d70c53cf317e6eb5953234f6712e57bd8b diff --git a/backend/files/giochannel.c b/backend/files/giochannel.c new file mode 100644 index 0000000..a8c90fe --- /dev/null +++ b/backend/files/giochannel.c @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2007 Thadeu Lima de Souza Cascardo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + + +#include +#include + +gchar *giochannel_iri_to_filename (AtomCtx *ctx, IRI *iri) +{ + gchar *root = atom_config_get_str (ctx, "root"); + gchar *path = iri_get_path (iri); + return g_build_filename (root, path, NULL); +} + +Atom * giochannel_atom_retrieve_resource (AtomCtx *ctx, IRI *iri) +{ + gchar *filename; + GIOChannel *channel; + GError *error = NULL; + gchar *data; + gsize len; + Atom *atom; + filename = giochannel_iri_to_filename (ctx, iri); + channel = g_io_channel_new_file ((const gchar *) filename, "r", &error); + g_free (filename); + if (channel == NULL) + { + atom_error_set (ctx, error); + return NULL; + } + error = NULL; + if (g_io_channel_read_to_end (channel, &data, &len, &error) != + G_IO_STATUS_NORMAL) + { + atom_error_set (ctx, error); + return NULL; + } + atom = atom_new_data_len (data, len); + g_free (data); + return atom; +} diff --git a/include/atompub/atom.h b/include/atompub/atom.h new file mode 100644 index 0000000..55142c0 --- /dev/null +++ b/include/atompub/atom.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2007 Thadeu Lima de Souza Cascardo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + + +#ifndef ATOMPUB_ATOM_H +#define ATOMPUB_ATOM_H + +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/atompub/config.h b/include/atompub/config.h new file mode 100644 index 0000000..fcd4dc2 --- /dev/null +++ b/include/atompub/config.h @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2007 Thadeu Lima de Souza Cascardo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + + +#ifndef ATOMPUB_CONFIG_H +#define ATOMPUB_CONFIG_H + +#include + +char *atom_config_get_str (AtomCtx *, char *); + +#endif diff --git a/include/atompub/ctx.h b/include/atompub/ctx.h new file mode 100644 index 0000000..a57c19f --- /dev/null +++ b/include/atompub/ctx.h @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2007 Thadeu Lima de Souza Cascardo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + + +#ifndef ATOMPUB_CTX_H +#define ATOMPUB_CTX_H + +typedef struct _atom_ctx AtomCtx; + +#endif diff --git a/include/atompub/entry.h b/include/atompub/entry.h new file mode 100644 index 0000000..a0806d9 --- /dev/null +++ b/include/atompub/entry.h @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2007 Thadeu Lima de Souza Cascardo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + + +#ifndef ATOMPUB_ENTRY_H +#define ATOMPUB_ENTRY_H + +#include + +typedef struct _atom_entry Atom; + +Atom * atom_new_data_len (char *, size_t); + +#endif diff --git a/include/atompub/error.h b/include/atompub/error.h new file mode 100644 index 0000000..79614b7 --- /dev/null +++ b/include/atompub/error.h @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2007 Thadeu Lima de Souza Cascardo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + + +#ifndef ATOMPUB_ERROR_H +#define ATOMPUB_ERROR_H + +#include +#include + +void atom_error_set (AtomCtx *, GError *); + +#endif diff --git a/include/atompub/feed.h b/include/atompub/feed.h new file mode 100644 index 0000000..1a92f0f --- /dev/null +++ b/include/atompub/feed.h @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2007 Thadeu Lima de Souza Cascardo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + + +#ifndef ATOMPUB_FEED_H +#define ATOMPUB_FEED_H + +#include + +typedef struct _atom_feed AtomFeed; + +#endif diff --git a/include/atompub/iri.h b/include/atompub/iri.h new file mode 100644 index 0000000..ffc377e --- /dev/null +++ b/include/atompub/iri.h @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2007 Thadeu Lima de Souza Cascardo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + + +#ifndef ATOMPUB_IRI_H +#define ATOMPUB_IRI_H + +#include + +typedef struct _iri IRI; + +char * iri_get_path (IRI *); + +#endif