comparison sparql/mod_audiodb/mod_audiodb.c @ 584:e3790284fd4a

Merged through librdf storage hooks and apache2 module. Squashed commit of the following: commit a6cfca8f04036e12e7d7fcd55c47224e802582f0 Author: Michael Jewell <mjewell@harrison.(none)> Date: Fri Jul 31 15:23:32 2009 +0100 Removed leftover bits and bobs. commit f1f0dd074d0767de3e24ba636779fd8701d73d9e Author: Michael Jewell <mjewell@harrison.(none)> Date: Fri Jul 31 15:07:20 2009 +0100 Simple test of database creation via librdf. commit 90e6350538e004d8785137e5ff2ac878c22a5d42 Author: Michael Jewell <mjewell@harrison.(none)> Date: Fri Jul 31 15:05:10 2009 +0100 Added the apache2 module which will hook into the librdf storage module commit c75bf53763b7078c83ae97fcf247da2576baa79a Author: Michael Jewell <mjewell@harrison.(none)> Date: Fri Jul 31 15:04:53 2009 +0100 Added sparql librdf source - requires the librdf sources to compile. commit 0646f0190112a73ddb2533537e2cc9832c066b52 Author: Michael Jewell <mjewell@harrison.(none)> Date: Mon Jul 27 12:12:26 2009 +0100 Adding execution to mod_audiodb commit 8f83f27ba4d917278bca0c7cb665d930e28c86df Author: Michael Jewell <mjewell@harrison.(none)> Date: Wed Jul 22 12:15:57 2009 +0100 Some initial returns for the sparql handler. commit dc639aed11943a5b0c379eb47cf293f76908b1b7 Author: Michael Jewell <mjewell@harrison.(none)> Date: Wed Jul 22 12:06:20 2009 +0100 Added a little setup.sh script to do libtoolize/autoconf etc. commit 3a679da499db647fc82cf2797daeb5cc44ed7655 Author: Michael Jewell <mjewell@harrison.(none)> Date: Wed Jul 22 12:03:42 2009 +0100 Adding initial bits for apache mod
author mas01mj
date Fri, 31 Jul 2009 14:36:12 +0000
parents
children c6debbac3216
comparison
equal deleted inserted replaced
583:46673db7c6a4 584:e3790284fd4a
1
2 #include <httpd.h>
3 #include <ap_config.h>
4 #include <http_config.h>
5 #include <http_protocol.h>
6 #include <apr_strings.h>
7 #include <librdf.h>
8 #include <apreq_module.h>
9 #include <apreq_parser.h>
10 #include <apreq_param.h>
11 #include "apreq2/apreq_module_apache2.h"
12
13 static int ap_dump_table(void *baton, const char *key, const char *value)
14 {
15 if (key && value)
16 fprintf(stderr, "%s:%s\n", key, value);
17 fflush(stderr);
18 return 1;
19 }
20
21 static int log_out(void *user_data, librdf_log_message *message)
22 {
23 fprintf(stderr, "%s\n", librdf_log_message_message(message));
24 fflush(stderr);
25 return 1;
26 }
27
28 static int adb_handle_sparql_req(request_rec *r) {
29 if(strcmp(r->handler, "audiodb-sparql-handler") != 0) {
30 return DECLINED;
31 }
32
33 r->content_type = "text/plain";
34 r->status = OK;
35 r->status_line = "200 OK";
36
37 if(!r->args) {
38 r->args = "";
39 }
40
41 const apr_table_t *form_table;
42 apreq_handle_t *h = apreq_handle_apache2(r);
43 if(apreq_args(h, &form_table) != APR_SUCCESS)
44 return DECLINED;
45
46 const unsigned char *query_string = apr_table_get(form_table, "query");
47
48 int rc = 0;
49
50 librdf_world* world = librdf_new_world();
51 if(!world)
52 {
53 rc = 1;
54 goto error;
55 }
56
57
58 librdf_world_open(world);
59 librdf_world_set_logger(world, NULL, log_out);
60 librdf_storage* storage = librdf_new_storage(world, "audiodb", "/tmp/test.adb", "new='yes'");
61 if(!storage)
62 {
63 rc = 2;
64 goto error;
65 }
66
67 librdf_model *model;
68 if (!(model = librdf_new_model(world, storage, NULL)))
69 {
70 rc = 5;
71 goto error;
72 }
73
74 librdf_query *query;
75 if (!(query = librdf_new_query(world, "sparql", NULL, query_string, NULL)))
76 {
77 rc = 3;
78 goto error;
79 }
80
81 librdf_query_results *results;
82 if (!(results = librdf_query_execute(query, model)))
83 {
84 rc = 4;
85 goto error;
86 }
87
88 ap_rprintf(r, "Everything went awesomely!");
89
90 rc = 0;
91 return r->status;
92
93 error:
94 ap_rprintf(r, "Fail %d", rc);
95 return OK;
96 }
97
98 static void mod_audiodb_register_hooks (apr_pool_t *p) {
99 ap_hook_handler(adb_handle_sparql_req, NULL, NULL, APR_HOOK_FIRST);
100 }
101
102 module AP_MODULE_DECLARE_DATA audiodb_module = {
103 STANDARD20_MODULE_STUFF,
104 NULL,
105 NULL,
106 NULL,
107 NULL,
108 NULL,
109 mod_audiodb_register_hooks,
110 };