Mercurial > hg > audiodb
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 }; |