Started a file backend and first prototype interface.
authorThadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
Wed, 23 Jan 2008 15:49:23 +0000 (13:49 -0200)
committerThadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
Wed, 23 Jan 2008 15:49:23 +0000 (13:49 -0200)
backend/files/giochannel.c [new file with mode: 0644]
include/atompub/atom.h [new file with mode: 0644]
include/atompub/config.h [new file with mode: 0644]
include/atompub/ctx.h [new file with mode: 0644]
include/atompub/entry.h [new file with mode: 0644]
include/atompub/error.h [new file with mode: 0644]
include/atompub/feed.h [new file with mode: 0644]
include/atompub/iri.h [new file with mode: 0644]

diff --git a/backend/files/giochannel.c b/backend/files/giochannel.c
new file mode 100644 (file)
index 0000000..a8c90fe
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ *  Copyright (C) 2007  Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+ *
+ *  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 <glib.h>
+#include <atompub/atom.h>
+
+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 (file)
index 0000000..55142c0
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ *  Copyright (C) 2007  Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+ *
+ *  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 <atompub/ctx.h>
+#include <atompub/config.h>
+#include <atompub/error.h>
+#include <atompub/iri.h>
+#include <atompub/entry.h>
+#include <atompub/feed.h>
+
+#endif
diff --git a/include/atompub/config.h b/include/atompub/config.h
new file mode 100644 (file)
index 0000000..fcd4dc2
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ *  Copyright (C) 2007  Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+ *
+ *  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 <atompub/ctx.h>
+
+char *atom_config_get_str (AtomCtx *, char *);
+
+#endif
diff --git a/include/atompub/ctx.h b/include/atompub/ctx.h
new file mode 100644 (file)
index 0000000..a57c19f
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ *  Copyright (C) 2007  Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+ *
+ *  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 (file)
index 0000000..a0806d9
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *  Copyright (C) 2007  Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+ *
+ *  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 <atompub/ctx.h>
+
+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 (file)
index 0000000..79614b7
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ *  Copyright (C) 2007  Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+ *
+ *  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 <atompub/ctx.h>
+#include <glib.h>
+
+void atom_error_set (AtomCtx *, GError *);
+
+#endif
diff --git a/include/atompub/feed.h b/include/atompub/feed.h
new file mode 100644 (file)
index 0000000..1a92f0f
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ *  Copyright (C) 2007  Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+ *
+ *  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 <atompub/ctx.h>
+
+typedef struct _atom_feed AtomFeed;
+
+#endif
diff --git a/include/atompub/iri.h b/include/atompub/iri.h
new file mode 100644 (file)
index 0000000..ffc377e
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *  Copyright (C) 2007  Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+ *
+ *  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 <atompub/ctx.h>
+
+typedef struct _iri IRI;
+
+char * iri_get_path (IRI *);
+
+#endif