[isidorus-cvs] r918 - branches/gdl-frontend/src/rest_interface

lgiessmann at common-lisp.net lgiessmann at common-lisp.net
Mon Sep 19 08:06:33 UTC 2011


Author: lgiessmann
Date: Mon Sep 19 01:06:33 2011
New Revision: 918

Log:
gdl-backend: added the tm-sparql interface to the gdl-interface

Modified:
   branches/gdl-frontend/src/rest_interface/rest-interface.lisp
   branches/gdl-frontend/src/rest_interface/set-up-gdl-interface.lisp

Modified: branches/gdl-frontend/src/rest_interface/rest-interface.lisp
==============================================================================
--- branches/gdl-frontend/src/rest_interface/rest-interface.lisp	Mon Sep 19 00:29:32 2011	(r917)
+++ branches/gdl-frontend/src/rest_interface/rest-interface.lisp	Mon Sep 19 01:06:33 2011	(r918)
@@ -59,7 +59,8 @@
 	   :*gdl-host-address*
 	   :*gdl-base-path*
 	   :*gdl-host-file*
-	   :*gdl-tm-id*))
+	   :*gdl-tm-id*
+	   :*gdl-sparql*))
 
 
 (in-package :rest-interface)

Modified: branches/gdl-frontend/src/rest_interface/set-up-gdl-interface.lisp
==============================================================================
--- branches/gdl-frontend/src/rest_interface/set-up-gdl-interface.lisp	Mon Sep 19 00:29:32 2011	(r917)
+++ branches/gdl-frontend/src/rest_interface/set-up-gdl-interface.lisp	Mon Sep 19 01:06:33 2011	(r918)
@@ -17,12 +17,14 @@
 (defparameter *gdl-base-path* "anaToMia/hosted_files/")
 (defparameter *gdl-host-file* (concat *gdl-base-path* "GDL_Widgets.html"))
 (defparameter *gdl-tm-id* "http://textgrid.org/serviceregistry/gdl-frontend/gdl-tm")
+(defparameter *gdl-sparql* "/gdl/tm-sparql/?$")
 
 
 (defun set-up-gdl-interface (&key (get-fragment *gdl-get-fragment*)
 			     (get-schema *gdl-get-schema*)
 			     (commit-fragment *gdl-commit-fragment*)
 			     (delete-fragment *gdl-delete-fragment*)
+			     (gdl-sparql *gdl-sparql*)
 			     (base-path *gdl-base-path*)
 			     (host-address *gdl-host-address*)
 			     (host-file *gdl-host-file*))
@@ -56,6 +58,10 @@
 
   (push
    (create-regex-dispatcher delete-fragment #'delete-handler)
+   hunchentoot:*dispatch-table*)
+
+  (push
+   (create-regex-dispatcher gdl-sparql #'gdl-tm-sparql)
    hunchentoot:*dispatch-table*))
 
 
@@ -212,4 +218,19 @@
 		  (setf (hunchentoot:return-code*) hunchentoot:+http-not-found+)
 		  (setf (hunchentoot:content-type*) "text")
 		  (format nil "Topic \"~a\" not found" psi)))))
-	(setf (hunchentoot:return-code*) hunchentoot:+http-bad-request+))))
\ No newline at end of file
+	(setf (hunchentoot:return-code*) hunchentoot:+http-bad-request+))))
+
+
+(defun gdl-tm-sparql (&optional param)
+  "Returns a JSON object representing a SPARQL response."
+  (declare (Ignorable param))
+  (if (eql (hunchentoot:request-method*) :POST)
+      (let ((external-format (flexi-streams:make-external-format
+			      :UTF-8 :eol-style :LF)))
+	(let ((sparql-request (hunchentoot:raw-post-data
+			       :external-format external-format
+			       :force-text t)))
+	  (export-construct-as-isidorus-json-string
+	   (make-instance 'SPARQL-Query :query sparql-request
+			  :revision 0))))
+      (setf (hunchentoot:return-code*) hunchentoot:+http-bad-request+)))
\ No newline at end of file




More information about the Isidorus-cvs mailing list